aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorMiao Xie <miaox@cn.fujitsu.com>2013-01-22 05:50:35 -0500
committerJosef Bacik <jbacik@fusionio.com>2013-02-20 09:37:23 -0500
commit63607cc86ab808e077a895be2d7895dcbf6f4cf3 (patch)
tree595ef8461a5f91b3eceed4fa06b553f14ad52ca3 /fs
parenteebc60840636e7351371fc17bcd057384bf0c16a (diff)
Btrfs: traverse and flush the delalloc inodes once
btrfs_start_delalloc_inodes() needn't traverse and flush the delalloc inodes repeatedly. It is because we can regard the data that the users write after we start delalloc inodes flush as the one which is after the delalloc inodes flush is done, and we can flush it next time. Signed-off-by: Miao Xie <miaox@cn.fujitsu.com> Signed-off-by: Josef Bacik <jbacik@fusionio.com>
Diffstat (limited to 'fs')
-rw-r--r--fs/btrfs/inode.c9
1 files changed, 1 insertions, 8 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 280e4d487636..d1e3a2d15f91 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -7614,7 +7614,7 @@ int btrfs_start_delalloc_inodes(struct btrfs_root *root, int delay_iput)
7614 7614
7615 INIT_LIST_HEAD(&works); 7615 INIT_LIST_HEAD(&works);
7616 INIT_LIST_HEAD(&splice); 7616 INIT_LIST_HEAD(&splice);
7617again: 7617
7618 spin_lock(&root->fs_info->delalloc_lock); 7618 spin_lock(&root->fs_info->delalloc_lock);
7619 list_splice_init(&root->fs_info->delalloc_inodes, &splice); 7619 list_splice_init(&root->fs_info->delalloc_inodes, &splice);
7620 while (!list_empty(&splice)) { 7620 while (!list_empty(&splice)) {
@@ -7650,13 +7650,6 @@ again:
7650 btrfs_wait_and_free_delalloc_work(work); 7650 btrfs_wait_and_free_delalloc_work(work);
7651 } 7651 }
7652 7652
7653 spin_lock(&root->fs_info->delalloc_lock);
7654 if (!list_empty(&root->fs_info->delalloc_inodes)) {
7655 spin_unlock(&root->fs_info->delalloc_lock);
7656 goto again;
7657 }
7658 spin_unlock(&root->fs_info->delalloc_lock);
7659
7660 /* the filemap_flush will queue IO into the worker threads, but 7653 /* the filemap_flush will queue IO into the worker threads, but
7661 * we have to make sure the IO is actually started and that 7654 * we have to make sure the IO is actually started and that
7662 * ordered extents get created before we return 7655 * ordered extents get created before we return