From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Sandeen Subject: [PATCH] return EINVAL when thawing unfrozen filesystems Date: Wed, 28 Jul 2010 14:10:34 -0500 Message-ID: <4C5080AA.6060206@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: Christoph Hellwig To: linux-fsdevel Return-path: Received: from mx1.redhat.com ([209.132.183.28]:8904 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751970Ab0G1TKn (ORCPT ); Wed, 28 Jul 2010 15:10:43 -0400 Sender: linux-fsdevel-owner@vger.kernel.org List-ID: The iterate_supers() loop in do_thaw_all() assumes that we can call thaw_bdev() until we hit an error; when I wrote this, we got -EINVAL when requesting a thaw of an unfrozen bdev. (it called until error because we may have nested freezes). However, commit 4504230a (freeze_bdev: grab active reference to frozen superblocks) changed this so that we get a return of 0 in this case, and do_thaw_all() spins forever when an emergency system-wide thaw is requested. It looks to me like the change was inadvertent, so this patch changes it back. Signed-off-by: Eric Sandeen --- diff --git a/fs/block_dev.c b/fs/block_dev.c index 99d6af8..51500f6 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c @@ -291,7 +291,7 @@ int thaw_bdev(struct block_device *bdev, struct super_block *sb) } out: mutex_unlock(&bdev->bd_fsfreeze_mutex); - return 0; + return error; } EXPORT_SYMBOL(thaw_bdev);