btrfs: Fix NO_SPACE bug caused by delayed-iput
[linux-2.6-block.git] / fs / btrfs / extent-tree.c
index be4a79a69ed12ce7ec6a1136ac21ce583d979772..46cb1d4149124a138391617a0e7ca28e099c1a88 100644 (file)
@@ -3950,6 +3950,12 @@ commit_trans:
                                ret = btrfs_commit_transaction(trans, root);
                                if (ret)
                                        return ret;
+                               /*
+                                * make sure that all running delayed iput are
+                                * done
+                                */
+                               down_write(&root->fs_info->delayed_iput_sem);
+                               up_write(&root->fs_info->delayed_iput_sem);
                                goto again;
                        } else {
                                btrfs_end_transaction(trans, root);