Change freeze_bdev() and thaw_bdev() to have a common exit Signed-off-by: Frank Sorenson <sorenson@xxxxxxxxxx> --- fs/block_dev.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/fs/block_dev.c b/fs/block_dev.c index 826b164..1207f40 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c @@ -237,8 +237,7 @@ struct super_block *freeze_bdev(struct block_device *bdev) */ sb = get_super(bdev); drop_super(sb); - mutex_unlock(&bdev->bd_fsfreeze_mutex); - return sb; + goto out_unlock; } sb = get_active_super(bdev); @@ -251,12 +250,13 @@ struct super_block *freeze_bdev(struct block_device *bdev) if (error) { deactivate_super(sb); bdev->bd_fsfreeze_count--; - mutex_unlock(&bdev->bd_fsfreeze_mutex); - return ERR_PTR(error); + sb = ERR_PTR(error); + goto out_unlock; } deactivate_super(sb); - out: +out: sync_blockdev(bdev); +out_unlock: mutex_unlock(&bdev->bd_fsfreeze_mutex); return sb; /* thaw_bdev releases s->s_umount */ } @@ -288,14 +288,11 @@ int thaw_bdev(struct block_device *bdev, struct super_block *sb) error = sb->s_op->thaw_super(sb); else error = thaw_super(sb); - if (error) { + if (error) bdev->bd_fsfreeze_count++; - mutex_unlock(&bdev->bd_fsfreeze_mutex); - return error; - } out: mutex_unlock(&bdev->bd_fsfreeze_mutex); - return 0; + return error; } EXPORT_SYMBOL(thaw_bdev); -- 1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html