From patchwork Thu Jan 12 01:20:52 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [3/4] ext4: Protect ext4_page_mkwrite with sb_start_write - sb_end_write Date: Wed, 11 Jan 2012 15:20:52 -0000 From: Jan Kara X-Patchwork-Id: 135540 Message-Id: <1326331253-6497-4-git-send-email-jack@suse.cz> To: linux-fsdevel@vger.kernel.org Cc: LKML , linux-ext4@vger.kernel.org, xfs@oss.sgi.com, Eric Sandeen , Dave Chinner , Surbhi Palande , Kamal Mostafa , Christoph Hellwig , Jan Kara , "Theodore Ts'o" Since ext4_page_mkwrite() calls into __block_page_mkwrite() it has to provide freezing protection on it's own. CC: "Theodore Ts'o" Signed-off-by: Jan Kara --- fs/ext4/inode.c | 7 ++----- 1 files changed, 2 insertions(+), 5 deletions(-) diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 848f436..fbe998b 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -4733,11 +4733,7 @@ int ext4_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf) get_block_t *get_block; int retries = 0; - /* - * This check is racy but catches the common case. We rely on - * __block_page_mkwrite() to do a reliable check. - */ - vfs_check_frozen(inode->i_sb, SB_FREEZE_WRITE); + sb_start_write(inode->i_sb); /* Delalloc case is easy... */ if (test_opt(inode->i_sb, DELALLOC) && !ext4_should_journal_data(inode) && @@ -4805,5 +4801,6 @@ retry_alloc: out_ret: ret = block_page_mkwrite_return(ret); out: + sb_end_write(inode->i_sb); return ret; }