From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756013Ab2ATUfU (ORCPT ); Fri, 20 Jan 2012 15:35:20 -0500 Received: from cantor2.suse.de ([195.135.220.15]:44760 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755809Ab2ATUfD (ORCPT ); Fri, 20 Jan 2012 15:35:03 -0500 From: Jan Kara To: linux-fsdevel@vger.kernel.org Cc: Eric Sandeen , Dave Chinner , Surbhi Palande , Kamal Mostafa , Christoph Hellwig , LKML , xfs@oss.sgi.com, linux-ext4@vger.kernel.org, Valerie Aurora , Jan Kara Subject: [PATCH 8/8] vfs: Document s_frozen state through freeze_super Date: Fri, 20 Jan 2012 21:34:46 +0100 Message-Id: <1327091686-23177-9-git-send-email-jack@suse.cz> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1327091686-23177-1-git-send-email-jack@suse.cz> References: <1327091686-23177-1-git-send-email-jack@suse.cz> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Valerie Aurora [kamal@canonical.com: patch restructure] [jack@suse.cz: updated comments to reflect new situation] Signed-off-by: Valerie Aurora Tested-by: Peter M. Petrakis Signed-off-by: Kamal Mostafa Signed-off-by: Jan Kara --- fs/super.c | 18 ++++++++++++++++++ 1 files changed, 18 insertions(+), 0 deletions(-) diff --git a/fs/super.c b/fs/super.c index 4aaad7e..557a4ef 100644 --- a/fs/super.c +++ b/fs/super.c @@ -1312,6 +1312,24 @@ static void sb_freeze_to_level(struct super_block *sb, int level) * Syncs the super to make sure the filesystem is consistent and calls the fs's * freeze_fs. Subsequent calls to this without first thawing the fs will return * -EBUSY. + * + * During this function, sb->s_frozen goes through these values: + * + * SB_UNFROZEN: File system is normal, all writes progress as usual. + * + * SB_FREEZE_WRITE: The file system is in the process of being frozen. + * New writes should be blocked, we wait for in-progress writes (using + * s_writers[SB_FREEZE_WRITE-1]) and then sync the file system. + * + * SB_FREEZE_TRANS: The file system is frozen. We wait for all metadata writes + * to finish using s_writers[SB_FREEZE_TRANS-1] and after that call ->freeze_fs + * to finish filesystem freezing. After ->freeze_fs is done nothing should be + * dirty and all modifications are blocked until the file system is thawed. + * + * sb->s_frozen is protected by sb->s_umount. Additionally, + * SB_FREEZE_WRITE is only temporarily set during freeze/thaw while + * holding sb->s_umount for writing, so any other callers holding + * sb->s_umount will never see this state. */ int freeze_super(struct super_block *sb) { -- 1.7.1