From 15eb77a07c714ac80201abd0a9568888bcee6276 Mon Sep 17 00:00:00 2001 From: Wu Fengguang Date: Tue, 17 Jan 2012 11:18:56 -0600 Subject: writeback: fix NULL bdi->dev in trace writeback_single_inode bdi_prune_sb() resets sb->s_bdi to default_backing_dev_info when the tearing down the original bdi. Fix trace_writeback_single_inode to use sb->s_bdi=default_backing_dev_info rather than bdi->dev=NULL for a teared down bdi. Cc: Reported-by: Rabin Vincent Tested-by: Rabin Vincent Signed-off-by: Wu Fengguang --- fs/fs-writeback.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'fs/fs-writeback.c') diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c index f855916657ba..5b4a9362d5aa 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c @@ -52,14 +52,6 @@ struct wb_writeback_work { struct completion *done; /* set if the caller waits */ }; -/* - * Include the creation of the trace points after defining the - * wb_writeback_work structure so that the definition remains local to this - * file. - */ -#define CREATE_TRACE_POINTS -#include - /* * We don't actually have pdflush, but this one is exported though /proc... */ @@ -92,6 +84,14 @@ static inline struct inode *wb_inode(struct list_head *head) return list_entry(head, struct inode, i_wb_list); } +/* + * Include the creation of the trace points after defining the + * wb_writeback_work structure and inline functions so that the definition + * remains local to this file. + */ +#define CREATE_TRACE_POINTS +#include + /* Wakeup flusher thread or forker thread to fork it. Requires bdi->wb_lock. */ static void bdi_wakeup_flusher(struct backing_dev_info *bdi) { -- cgit v1.2.3 From 630d9c47274aa89bfa77fe6556d7818bdcb12992 Mon Sep 17 00:00:00 2001 From: Paul Gortmaker Date: Wed, 16 Nov 2011 23:57:37 -0500 Subject: fs: reduce the use of module.h wherever possible For files only using THIS_MODULE and/or EXPORT_SYMBOL, map them onto including export.h -- or if the file isn't even using those, then just delete the include. Fix up any implicit include dependencies that were being masked by module.h along the way. Signed-off-by: Paul Gortmaker --- fs/aio.c | 2 +- fs/attr.c | 2 +- fs/bad_inode.c | 2 +- fs/binfmt_flat.c | 2 +- fs/bio.c | 2 +- fs/buffer.c | 2 +- fs/compat.c | 1 - fs/compat_ioctl.c | 1 - fs/dcache.c | 2 +- fs/dcookies.c | 2 +- fs/eventfd.c | 2 +- fs/file.c | 2 +- fs/fs-writeback.c | 2 +- fs/fs_struct.c | 2 +- fs/inode.c | 2 +- fs/ioctl.c | 2 +- fs/libfs.c | 2 +- fs/mpage.c | 2 +- fs/namei.c | 2 +- fs/posix_acl.c | 2 +- fs/read_write.c | 2 +- fs/readdir.c | 2 +- fs/select.c | 2 +- fs/seq_file.c | 2 +- fs/splice.c | 2 +- fs/stack.c | 2 +- fs/stat.c | 2 +- fs/statfs.c | 2 +- fs/super.c | 2 +- fs/sync.c | 2 +- fs/xattr.c | 2 +- fs/xattr_acl.c | 2 +- 32 files changed, 30 insertions(+), 32 deletions(-) (limited to 'fs/fs-writeback.c') diff --git a/fs/aio.c b/fs/aio.c index 969beb0e2231..4b5e06390db0 100644 --- a/fs/aio.c +++ b/fs/aio.c @@ -13,7 +13,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/fs/attr.c b/fs/attr.c index 95053ad8abcc..73f69a6ce9ed 100644 --- a/fs/attr.c +++ b/fs/attr.c @@ -5,7 +5,7 @@ * changes by Thomas Schoebel-Theuer */ -#include +#include #include #include #include diff --git a/fs/bad_inode.c b/fs/bad_inode.c index 22e9a78872ff..37268c5bb98b 100644 --- a/fs/bad_inode.c +++ b/fs/bad_inode.c @@ -9,7 +9,7 @@ */ #include -#include +#include #include #include #include diff --git a/fs/binfmt_flat.c b/fs/binfmt_flat.c index 1bffbe0ed778..3e27232e3574 100644 --- a/fs/binfmt_flat.c +++ b/fs/binfmt_flat.c @@ -15,7 +15,7 @@ * JAN/99 -- coded full program relocation (gerg@snapgear.com) */ -#include +#include #include #include #include diff --git a/fs/bio.c b/fs/bio.c index b980ecde026a..e453924036e9 100644 --- a/fs/bio.c +++ b/fs/bio.c @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include #include #include /* for struct sg_iovec */ diff --git a/fs/buffer.c b/fs/buffer.c index 1a30db77af32..70e2017edd70 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -29,7 +29,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/fs/compat.c b/fs/compat.c index 07880bae28a9..14483a715bbb 100644 --- a/fs/compat.c +++ b/fs/compat.c @@ -33,7 +33,6 @@ #include #include #include -#include #include #include #include diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c index a26bea10e81b..4d3eec7418e3 100644 --- a/fs/compat_ioctl.c +++ b/fs/compat_ioctl.c @@ -49,7 +49,6 @@ #include #include #include -#include #include #include #include diff --git a/fs/dcache.c b/fs/dcache.c index fe19ac13f75f..303ebd98bc80 100644 --- a/fs/dcache.c +++ b/fs/dcache.c @@ -23,7 +23,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/fs/dcookies.c b/fs/dcookies.c index dda0dc702d1b..17c779967828 100644 --- a/fs/dcookies.c +++ b/fs/dcookies.c @@ -13,7 +13,7 @@ */ #include -#include +#include #include #include #include diff --git a/fs/eventfd.c b/fs/eventfd.c index d9a591773919..dba15fecf23e 100644 --- a/fs/eventfd.c +++ b/fs/eventfd.c @@ -16,7 +16,7 @@ #include #include #include -#include +#include #include #include diff --git a/fs/file.c b/fs/file.c index 4c6992d8f3ba..3c426de7203a 100644 --- a/fs/file.c +++ b/fs/file.c @@ -6,7 +6,7 @@ * Manage the dynamic fd arrays in the process files_struct. */ -#include +#include #include #include #include diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c index 5b4a9362d5aa..92fcb19e4102 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c @@ -14,7 +14,7 @@ */ #include -#include +#include #include #include #include diff --git a/fs/fs_struct.c b/fs/fs_struct.c index 78b519c13536..a2d1db2ea984 100644 --- a/fs/fs_struct.c +++ b/fs/fs_struct.c @@ -1,4 +1,4 @@ -#include +#include #include #include #include diff --git a/fs/inode.c b/fs/inode.c index d3ebdbe723d0..cd8cffcb75f3 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -8,7 +8,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/fs/ioctl.c b/fs/ioctl.c index 066836e81848..29167bebe874 100644 --- a/fs/ioctl.c +++ b/fs/ioctl.c @@ -10,7 +10,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/fs/libfs.c b/fs/libfs.c index 5b2dbb3ba4fc..001e25be4b65 100644 --- a/fs/libfs.c +++ b/fs/libfs.c @@ -3,7 +3,7 @@ * Library for filesystems writers. */ -#include +#include #include #include #include diff --git a/fs/mpage.c b/fs/mpage.c index 643e9f55ef29..0face1c4d4c6 100644 --- a/fs/mpage.c +++ b/fs/mpage.c @@ -13,7 +13,7 @@ */ #include -#include +#include #include #include #include diff --git a/fs/namei.c b/fs/namei.c index a780ea515c47..fa549f27f019 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -15,7 +15,7 @@ */ #include -#include +#include #include #include #include diff --git a/fs/posix_acl.c b/fs/posix_acl.c index cea4623f1ed6..5e325a42e33d 100644 --- a/fs/posix_acl.c +++ b/fs/posix_acl.c @@ -18,7 +18,7 @@ #include #include #include -#include +#include #include diff --git a/fs/read_write.c b/fs/read_write.c index 5ad4248b0cd8..ffc99d22e0a3 100644 --- a/fs/read_write.c +++ b/fs/read_write.c @@ -11,7 +11,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/fs/readdir.c b/fs/readdir.c index 356f71528ad6..cc0a8227cddf 100644 --- a/fs/readdir.c +++ b/fs/readdir.c @@ -6,7 +6,7 @@ #include #include -#include +#include #include #include #include diff --git a/fs/select.c b/fs/select.c index e782258d0de3..de668aa9a098 100644 --- a/fs/select.c +++ b/fs/select.c @@ -17,7 +17,7 @@ #include #include #include -#include +#include #include #include #include /* for STICKY_TIMEOUTS */ diff --git a/fs/seq_file.c b/fs/seq_file.c index 4023d6be939b..9f73c6b4436d 100644 --- a/fs/seq_file.c +++ b/fs/seq_file.c @@ -6,7 +6,7 @@ */ #include -#include +#include #include #include diff --git a/fs/splice.c b/fs/splice.c index 1ec0493266b3..66f4ee013bc2 100644 --- a/fs/splice.c +++ b/fs/splice.c @@ -25,7 +25,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/fs/stack.c b/fs/stack.c index 9c11519245a6..5b5388250e29 100644 --- a/fs/stack.c +++ b/fs/stack.c @@ -1,4 +1,4 @@ -#include +#include #include #include diff --git a/fs/stat.c b/fs/stat.c index 8806b8997d2e..c9dfa296b0c3 100644 --- a/fs/stat.c +++ b/fs/stat.c @@ -4,7 +4,7 @@ * Copyright (C) 1991, 1992 Linus Torvalds */ -#include +#include #include #include #include diff --git a/fs/statfs.c b/fs/statfs.c index 2aa6a22e0be2..43e6b6fe4e85 100644 --- a/fs/statfs.c +++ b/fs/statfs.c @@ -1,5 +1,5 @@ #include -#include +#include #include #include #include diff --git a/fs/super.c b/fs/super.c index 6277ec6cb60a..52bfd251b75c 100644 --- a/fs/super.c +++ b/fs/super.c @@ -20,7 +20,7 @@ * Heavily rewritten for 'one fs - one tree' dcache architecture. AV, Mar 2000 */ -#include +#include #include #include #include diff --git a/fs/sync.c b/fs/sync.c index f3501ef39235..0e8db939d96f 100644 --- a/fs/sync.c +++ b/fs/sync.c @@ -6,7 +6,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/fs/xattr.c b/fs/xattr.c index 82f43376c7cd..d6dfd247bb2f 100644 --- a/fs/xattr.c +++ b/fs/xattr.c @@ -16,7 +16,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/fs/xattr_acl.c b/fs/xattr_acl.c index 8d5a506c82eb..69d06b07b169 100644 --- a/fs/xattr_acl.c +++ b/fs/xattr_acl.c @@ -5,7 +5,7 @@ * Copyright (C) 2001 by Andreas Gruenbacher, */ -#include +#include #include #include #include -- cgit v1.2.3 From f469ec9c5b95dfed60d5d628e1a8cecfc1f92d7a Mon Sep 17 00:00:00 2001 From: Jan Kara Date: Fri, 9 Mar 2012 07:26:07 -0800 Subject: fs: Remove bogus wait in write_inode_now() inode_sync_wait() in write_inode_now() is just bogus. That function waits for I_SYNC bit to be cleared but writeback_single_inode() clears the bit on return so the wait is effectivelly a nop unless someone else submits the inode for writeback again. All the waiting write_inode_now() needs is achieved by using WB_SYNC_ALL writeback mode. Signed-off-by: Jan Kara Signed-off-by: Christoph Hellwig Signed-off-by: Fengguang Wu --- fs/fs-writeback.c | 2 -- 1 file changed, 2 deletions(-) (limited to 'fs/fs-writeback.c') diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c index 5b4a9362d5aa..f60297ba4912 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c @@ -1364,8 +1364,6 @@ int write_inode_now(struct inode *inode, int sync) ret = writeback_single_inode(inode, wb, &wbc); spin_unlock(&inode->i_lock); spin_unlock(&wb->list_lock); - if (sync) - inode_sync_wait(inode); return ret; } EXPORT_SYMBOL(write_inode_now); -- cgit v1.2.3 From 697e6fed9fc620eb6c79ebcfe6865b66773c0221 Mon Sep 17 00:00:00 2001 From: Jan Kara Date: Fri, 9 Mar 2012 07:26:22 -0800 Subject: writeback: Remove outdated comment The comment is hopelessly outdated and misplaced. We no longer have 'bdi' part of writeback work, the comment about blockdev super is outdated, comment about throttling as well. Information about list handling is in more detail at queue_io(). So just move the bit about older_than_this to close to move_expired_inodes() and remove the rest. Reviewed-by: Christoph Hellwig Signed-off-by: Jan Kara Signed-off-by: Fengguang Wu --- fs/fs-writeback.c | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) (limited to 'fs/fs-writeback.c') diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c index f60297ba4912..be84e28d62af 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c @@ -256,7 +256,8 @@ static bool inode_dirtied_after(struct inode *inode, unsigned long t) } /* - * Move expired dirty inodes from @delaying_queue to @dispatch_queue. + * Move expired (dirtied after work->older_than_this) dirty inodes from + * @delaying_queue to @dispatch_queue. */ static int move_expired_inodes(struct list_head *delaying_queue, struct list_head *dispatch_queue, @@ -1148,23 +1149,6 @@ out_unlock_inode: } EXPORT_SYMBOL(__mark_inode_dirty); -/* - * Write out a superblock's list of dirty inodes. A wait will be performed - * upon no inodes, all inodes or the final one, depending upon sync_mode. - * - * If older_than_this is non-NULL, then only write out inodes which - * had their first dirtying at a time earlier than *older_than_this. - * - * If `bdi' is non-zero then we're being asked to writeback a specific queue. - * This function assumes that the blockdev superblock's inodes are backed by - * a variety of queues, so all inodes are searched. For other superblocks, - * assume that all inodes are backed by the same queue. - * - * The inodes to be written are parked on bdi->b_io. They are moved back onto - * bdi->b_dirty as they are selected for writing. This way, none can be missed - * on the writer throttling path, and we get decent balancing between many - * throttled threads: we don't want them all piling up on inode_sync_wait. - */ static void wait_sb_inodes(struct super_block *sb) { struct inode *inode, *old_inode = NULL; -- cgit v1.2.3