aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorEric Sandeen <sandeen@redhat.com>2010-10-27 21:30:03 -0400
committerTheodore Ts'o <tytso@mit.edu>2010-10-27 21:30:03 -0400
commit659c6009ca2e3a01acc9881bafe5f55ef09c965b (patch)
treec7d6b0a8cfb8f5979f3f8d0e0e5122ffd9c688be /fs
parentfb1813f4a8a27bbd4735967e46931e61fc837a3e (diff)
downloadkernel_samsung_smdk4412-659c6009ca2e3a01acc9881bafe5f55ef09c965b.zip
kernel_samsung_smdk4412-659c6009ca2e3a01acc9881bafe5f55ef09c965b.tar.gz
kernel_samsung_smdk4412-659c6009ca2e3a01acc9881bafe5f55ef09c965b.tar.bz2
ext4: stop looping in ext4_num_dirty_pages when max_pages reached
Today we simply break out of the inner loop when we have accumulated max_pages; this keeps scanning forwad and doing pagevec_lookup_tag() in the while (!done) loop, this does potentially a lot of work with no net effect. When we have accumulated max_pages, just clean up and return. Signed-off-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'fs')
-rw-r--r--fs/ext4/inode.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 4b8debe..d88ba4a 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -1207,8 +1207,10 @@ static pgoff_t ext4_num_dirty_pages(struct inode *inode, pgoff_t idx,
break;
idx++;
num++;
- if (num >= max_pages)
+ if (num >= max_pages) {
+ done = 1;
break;
+ }
}
pagevec_release(&pvec);
}