From 421d9ac0f762903ae3fbdea5d1d27f4fc7a560d2 Mon Sep 17 00:00:00 2001 From: Jun'ichi Nomura Date: Fri, 29 Jan 2010 09:56:22 +0900 Subject: [PATCH] --- yaml --- r: 180326 b: refs/heads/master c: 4b06e5b9ad8abb20105b2b25e42c509ebe9b2d76 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/block_dev.c | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index ae7d2f5071e5..e03297a1a995 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8dd5ca532c2d2c2b85f16bc038ebfff05b8853e1 +refs/heads/master: 4b06e5b9ad8abb20105b2b25e42c509ebe9b2d76 diff --git a/trunk/fs/block_dev.c b/trunk/fs/block_dev.c index 73d6a735b8f3..d11d0289f3d2 100644 --- a/trunk/fs/block_dev.c +++ b/trunk/fs/block_dev.c @@ -246,7 +246,8 @@ struct super_block *freeze_bdev(struct block_device *bdev) if (!sb) goto out; if (sb->s_flags & MS_RDONLY) { - deactivate_locked_super(sb); + sb->s_frozen = SB_FREEZE_TRANS; + up_write(&sb->s_umount); mutex_unlock(&bdev->bd_fsfreeze_mutex); return sb; } @@ -307,7 +308,7 @@ int thaw_bdev(struct block_device *bdev, struct super_block *sb) BUG_ON(sb->s_bdev != bdev); down_write(&sb->s_umount); if (sb->s_flags & MS_RDONLY) - goto out_deactivate; + goto out_unfrozen; if (sb->s_op->unfreeze_fs) { error = sb->s_op->unfreeze_fs(sb); @@ -321,11 +322,11 @@ int thaw_bdev(struct block_device *bdev, struct super_block *sb) } } +out_unfrozen: sb->s_frozen = SB_UNFROZEN; smp_wmb(); wake_up(&sb->s_wait_unfrozen); -out_deactivate: if (sb) deactivate_locked_super(sb); out_unlock: