btrfs: Fix NO_SPACE bug caused by delayed-iput
[deliverable/linux.git] / fs / btrfs / inode.c
index 141df0ce6f9318be05e24864934e2421013d5de7..6ef97c184c7b3742ae5e35cd57ae0849c6930830 100644 (file)
@@ -3111,6 +3111,8 @@ void btrfs_run_delayed_iputs(struct btrfs_root *root)
        if (empty)
                return;
 
+       down_read(&fs_info->delayed_iput_sem);
+
        spin_lock(&fs_info->delayed_iput_lock);
        list_splice_init(&fs_info->delayed_iputs, &list);
        spin_unlock(&fs_info->delayed_iput_lock);
@@ -3121,6 +3123,8 @@ void btrfs_run_delayed_iputs(struct btrfs_root *root)
                iput(delayed->inode);
                kfree(delayed);
        }
+
+       up_read(&root->fs_info->delayed_iput_sem);
 }
 
 /*
This page took 0.028032 seconds and 5 git commands to generate.