Jan Kara
81d73a32d7
mm: fix writeback_in_progress()
...
Commit 83ba7b071f ("writeback: simplify the write back thread queue")
broke writeback_in_progress() as in that commit we started to remove work
items from the list at the moment we start working on them and not at the
moment they are finished. Thus if the flusher thread was doing some work
but there was no other work queued, writeback_in_progress() returned
false. This could in particular cause unnecessary queueing of background
writeback from balance_dirty_pages() or writeout work from
writeback_sb_if_idle().
This patch fixes the problem by introducing a bit in the bdi state which
indicates that the flusher thread is processing some work and uses this
bit for writeback_in_progress() test.
NOTE: Both callsites of writeback_in_progress() (namely,
writeback_inodes_sb_if_idle() and balance_dirty_pages()) would actually
need a different information than what writeback_in_progress() provides.
They would need to know whether *the kind of writeback they are going to
submit* is already queued. But this information isn't that simple to
provide so let's fix writeback_in_progress() for the time being.
Signed-off-by: Jan Kara <jack@suse.cz>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Wu Fengguang <fengguang.wu@intel.com>
Acked-by: Jens Axboe <jaxboe@fusionio.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-08-12 08:43:30 -07:00
..
9p
v9fs: fixup for inode_setattr being removed
2010-08-11 00:08:00 -04:00
adfs
check ATTR_SIZE contraints in inode_change_ok
2010-08-09 16:47:39 -04:00
affs
AFFS: wait for sb synchronization when needed
2010-08-09 16:48:51 -04:00
afs
afs: destroy work queue on init failure
2010-08-11 08:59:22 -07:00
autofs
autofs/autofs4: Move compat_ioctl handling into fs
2010-08-09 00:13:34 +02:00
autofs4
autofs4: remove unneeded null check in try_to_fill_dentry()
2010-08-11 08:59:06 -07:00
befs
fix typos concerning "initiali[zs]e"
2010-06-16 18:05:05 +02:00
bfs
BFS: clean up the superblock usage
2010-08-09 16:48:53 -04:00
btrfs
Merge branch 'for-2.6.36' of git://git.kernel.dk/linux-2.6-block
2010-08-10 15:22:42 -07:00
cachefiles
vfs: add helpers to get root and pwd
2010-08-11 00:28:20 -04:00
ceph
ceph: generalize mon requests, add pool op support
2010-08-10 14:41:25 -07:00
cifs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
coda
Merge branch 'for-2.6.36' of git://git.kernel.dk/linux-2.6-block
2010-08-10 15:22:42 -07:00
configfs
fix setattr error handling in sysfs, configfs
2010-06-04 17:16:29 -04:00
cramfs
simplify get_cramfs_inode()
2010-08-09 16:47:51 -04:00
debugfs
Add x64 support to debugfs
2010-05-19 22:41:57 -04:00
devpts
Simplify devpts_get_sb() failure exits
2010-05-21 18:31:12 -04:00
dlm
fs/dlm: Drop unnecessary null test
2010-08-05 14:23:45 -05:00
ecryptfs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ecryptfs/ecryptfs-2.6
2010-08-10 12:14:39 -07:00
efs
exofs
Merge branch 'for-linus' of git://git.open-osd.org/linux-open-osd
2010-08-11 09:19:43 -07:00
exportfs
ext2
mbcache: Remove unused features
2010-08-09 16:48:45 -04:00
ext3
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
ext4
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
fat
covert fatfs to ->evict_inode()
2010-08-09 16:48:01 -04:00
freevxfs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
fscache
fscache: fix build on !CONFIG_SYSCTL
2010-07-24 11:10:09 +02:00
fuse
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
gfs2
Merge branch 'for-2.6.36' of git://git.kernel.dk/linux-2.6-block
2010-08-10 15:22:42 -07:00
hfs
convert remaining ->clear_inode() to ->evict_inode()
2010-08-09 16:48:37 -04:00
hfsplus
convert remaining ->clear_inode() to ->evict_inode()
2010-08-09 16:48:37 -04:00
hostfs
try to get rid of races in hostfs open()
2010-08-09 16:48:15 -04:00
hpfs
switch hpfs to ->evict_inode()
2010-08-09 16:48:17 -04:00
hppfs
switch hppfs to ->evict_inode()
2010-08-09 16:48:16 -04:00
hugetlbfs
new helper: end_writeback()
2010-08-09 16:47:49 -04:00
isofs
isofs: Fix lseek() to position beyond 4 GB
2010-08-11 00:29:47 -04:00
jbd
ext3: Fix set but unused variables
2010-07-21 16:01:47 +02:00
jbd2
Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4
2010-08-07 13:03:53 -07:00
jffs2
Merge git://git.infradead.org/mtd-2.6
2010-08-10 11:49:21 -07:00
jfs
jfs: don't allow os2 xattr namespace overlap with others
2010-08-10 15:33:09 -07:00
lockd
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
2010-03-30 22:02:32 +09:00
logfs
Make ->drop_inode() just return whether inode needs to be dropped
2010-08-09 16:48:35 -04:00
minix
switch minix to ->evict_inode(), fix write_inode/delete_inode race
2010-08-09 16:47:53 -04:00
ncpfs
Merge branch 'bkl/ioctl' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing
2010-08-10 13:58:28 -07:00
nfs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
nfs_common
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
2010-03-30 22:02:32 +09:00
nfsd
Merge branch 'for-linus' of git://git.infradead.org/users/eparis/notify
2010-08-10 11:39:13 -07:00
nilfs2
Merge branch 'for-2.6.36' of git://git.kernel.dk/linux-2.6-block
2010-08-10 15:22:42 -07:00
nls
notify
Merge branch 'for-linus' of git://git.infradead.org/users/eparis/notify
2010-08-10 11:39:13 -07:00
ntfs
convert remaining ->clear_inode() to ->evict_inode()
2010-08-09 16:48:37 -04:00
ocfs2
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
omfs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bcopeland/omfs
2010-08-10 11:47:36 -07:00
openpromfs
partitions
partitions: fix sometimes unreadable partition strings
2010-08-11 08:59:20 -07:00
proc
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-11 09:23:32 -07:00
qnx4
get rid of cont_write_begin_newtrunc
2010-08-09 16:47:31 -04:00
quota
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
ramfs
check ATTR_SIZE contraints in inode_change_ok
2010-08-09 16:47:39 -04:00
reiserfs
reiserfs: remove unused local `wait'
2010-08-11 08:59:12 -07:00
romfs
smbfs
switch smbfs to evict_inode()
2010-08-09 16:48:00 -04:00
squashfs
Squashfs: fix checkpatch.pl warnings
2010-08-08 22:29:33 +00:00
sysfs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
sysv
fs/sysv/super.c: add support for non-PDP11 v7 filesystems
2010-08-11 08:59:23 -07:00
ubifs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
udf
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
ufs
switch ufs to ->evict_inode()
2010-08-09 16:48:02 -04:00
xfs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
aio.c
aio: fix wrong subsystem comments
2010-08-05 13:21:23 -07:00
anon_inodes.c
Revert "anon_inode: set S_IFREG on the anon_inode"
2010-05-27 22:03:05 -04:00
attr.c
check ATTR_SIZE contraints in inode_change_ok
2010-08-09 16:47:39 -04:00
bad_inode.c
drop unused dentry argument to ->fsync
2010-05-27 22:05:02 -04:00
binfmt_aout.c
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
2010-03-30 22:02:32 +09:00
binfmt_elf.c
binfmt_elf_fdpic.c
binfmt_elf_fdpic: Fix clear_user() error handling
2010-06-01 08:11:06 -07:00
binfmt_em86.c
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
2010-03-30 22:02:32 +09:00
binfmt_flat.c
flat: tweak default stack alignment
2010-06-29 15:29:31 -07:00
binfmt_misc.c
convert remaining ->clear_inode() to ->evict_inode()
2010-08-09 16:48:37 -04:00
binfmt_script.c
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
2010-03-30 22:02:32 +09:00
binfmt_som.c
bio-integrity.c
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
2010-03-30 22:02:32 +09:00
bio.c
block: unify flags for struct bio and struct request
2010-08-07 18:20:39 +02:00
block_dev.c
blkdev: cgroup whitelist permission fix
2010-08-11 08:59:18 -07:00
buffer.c
get rid of block_write_begin_newtrunc
2010-08-09 16:47:33 -04:00
char_dev.c
Fix init ordering of /dev/console vs callers of modprobe
2010-08-06 09:17:02 -07:00
compat.c
Merge branch 'for-linus' of git://git.infradead.org/users/eparis/notify
2010-08-10 11:39:13 -07:00
compat_binfmt_elf.c
compat_ioctl.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6
2010-08-10 15:03:42 -07:00
dcache.c
vfs: show unreachable paths in getcwd and proc
2010-08-11 00:29:47 -04:00
dcookies.c
direct-io.c
sort out blockdev_direct_IO variants
2010-08-09 16:47:29 -04:00
drop_caches.c
simplify checks for I_CLEAR/I_FREEING
2010-08-09 16:47:44 -04:00
eventfd.c
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
2010-03-30 22:02:32 +09:00
eventpoll.c
sched, wait: Use wrapper functions
2010-05-11 17:43:58 +02:00
exec.c
Merge branch 'for-linus' of git://git.infradead.org/users/eparis/notify
2010-08-10 11:39:13 -07:00
fcntl.c
vfs: O_* bit numbers uniqueness check
2010-08-11 08:59:02 -07:00
fifo.c
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
2010-03-30 22:02:32 +09:00
file.c
vfs: use kmalloc() to allocate fdmem if possible
2010-08-11 08:59:02 -07:00
file_table.c
vfs: improve comment describing fget_light()
2010-08-11 08:59:02 -07:00
filesystems.c
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
2010-03-30 22:02:32 +09:00
fs-writeback.c
mm: fix writeback_in_progress()
2010-08-12 08:43:30 -07:00
fs_struct.c
vfs: add helpers to get root and pwd
2010-08-11 00:28:20 -04:00
generic_acl.c
fs: xattr_handler table should be const
2010-05-21 18:31:18 -04:00
inode.c
Merge branch 'for-linus' of git://git.infradead.org/users/eparis/notify
2010-08-10 11:39:13 -07:00
internal.h
Bury __put_super_and_need_restart()
2010-05-21 18:31:16 -04:00
ioctl.c
Introduce freeze_super and thaw_super for the fsfreeze ioctl
2010-05-21 18:31:18 -04:00
ioprio.c
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
2010-03-30 22:02:32 +09:00
Kconfig
fs/Kconfig: Fix typo Userpace -> Userspace
2010-07-20 17:30:22 +02:00
Kconfig.binfmt
libfs.c
check ATTR_SIZE contraints in inode_change_ok
2010-08-09 16:47:39 -04:00
locks.c
Makefile
Take statfs variants to fs/statfs.c
2010-05-21 18:31:17 -04:00
mbcache.c
mbcache: fix shrinker function return value
2010-08-09 16:48:47 -04:00
mpage.c
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
2010-03-30 22:02:32 +09:00
namei.c
vfs: add helpers to get root and pwd
2010-08-11 00:28:20 -04:00
namespace.c
vfs: remove unused MNT_STRICTATIME
2010-08-11 00:29:47 -04:00
nfsctl.c
no-block.c
open.c
vfs: clarify that nonseekable_open() will never fail
2010-08-11 08:59:02 -07:00
pipe.c
pipe: fix check in "set size" fcntl
2010-06-10 19:08:34 +02:00
pnode.c
pnode.h
posix_acl.c
read_write.c
fsnotify: pass a file instead of an inode to open, read, and write
2010-07-28 09:58:32 -04:00
read_write.h
readdir.c
vfs: fix warning: 'dirent' is used uninitialized in this function
2010-08-09 20:45:05 -07:00
select.c
seq_file.c
signalfd.c
signalfd: fill in ssi_int for posix timers and message queues
2010-08-11 08:59:20 -07:00
splice.c
splice: fix misuse of SPLICE_F_NONBLOCK
2010-08-07 18:52:56 +02:00
stack.c
stat.c
statfs.c
add f_flags to struct statfs(64)
2010-08-09 16:48:44 -04:00
super.c
no need for list_for_each_entry_safe()/resetting with superblock list
2010-08-09 16:49:02 -04:00
sync.c
get rid of file_fsync()
2010-08-09 16:47:43 -04:00
timerfd.c
fs/timerfd.c: make use of wait_event_interruptible_locked_irq()
2010-05-20 13:21:42 -07:00
utimes.c
xattr.c
fs: xattr_handler table should be const
2010-05-21 18:31:18 -04:00
xattr_acl.c
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
2010-03-30 22:02:32 +09:00