From 1fea17d62dc43ce92604d7593a48d442a7462680 Mon Sep 17 00:00:00 2001 From: Christoph Hellwig Date: Tue, 8 Jun 2010 18:14:51 +0200 Subject: [PATCH] --- yaml --- r: 200617 b: refs/heads/master c: cf37e972478ec58a8a54a6b4f951815f0ae28f78 h: refs/heads/master i: 200615: 1f76b3816125877f90928be80f8b32296f7b252f v: v3 --- [refs] | 2 +- trunk/fs/fs-writeback.c | 6 ++++++ trunk/fs/ubifs/budget.c | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 00724c2fe9bd..77a1deeb943c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 3c4d716538f3eefb1c1f10961a047a6456a2b590 +refs/heads/master: cf37e972478ec58a8a54a6b4f951815f0ae28f78 diff --git a/trunk/fs/fs-writeback.c b/trunk/fs/fs-writeback.c index 759666966c6d..2627f0dfcd9c 100644 --- a/trunk/fs/fs-writeback.c +++ b/trunk/fs/fs-writeback.c @@ -1180,6 +1180,8 @@ void writeback_inodes_sb(struct super_block *sb) .sync_mode = WB_SYNC_NONE, }; + WARN_ON(!rwsem_is_locked(&sb->s_umount)); + args.nr_pages = nr_dirty + nr_unstable + (inodes_stat.nr_inodes - inodes_stat.nr_unused); @@ -1197,7 +1199,9 @@ EXPORT_SYMBOL(writeback_inodes_sb); int writeback_inodes_sb_if_idle(struct super_block *sb) { if (!writeback_in_progress(sb->s_bdi)) { + down_read(&sb->s_umount); writeback_inodes_sb(sb); + up_read(&sb->s_umount); return 1; } else return 0; @@ -1220,6 +1224,8 @@ void sync_inodes_sb(struct super_block *sb) .range_cyclic = 0, }; + WARN_ON(!rwsem_is_locked(&sb->s_umount)); + bdi_queue_work_onstack(&args); wait_sb_inodes(sb); } diff --git a/trunk/fs/ubifs/budget.c b/trunk/fs/ubifs/budget.c index 076ca50e9933..c8ff0d1ae5d3 100644 --- a/trunk/fs/ubifs/budget.c +++ b/trunk/fs/ubifs/budget.c @@ -62,7 +62,9 @@ */ static void shrink_liability(struct ubifs_info *c, int nr_to_write) { + down_read(&c->vfs_sb->s_umount); writeback_inodes_sb(c->vfs_sb); + up_read(&c->vfs_sb->s_umount); } /**