Re: [PATCH] btrfs: wait for delayed iputs on no space
On 2015/03/27 19:21, Zhaolei wrote: From: Zhao Lei zhao...@cn.fujitsu.com This is another fix of no_space case. All patchs for fix no_space bug are available at fix_no_space branch on: git://github.com/zhaoleidd/btrfs I tested in the environment that applied the following patch to 'fix_no_space' branch. - Btrfs: fix find_free_dev_extent() malfunction in case device tree has hole It works fine to me. Thanks. Tested-by: Tsutomu Itoh t-i...@jp.fujitsu.com Any suggestions are welcome. Zhao Lei (1): btrfs: wait for delayed iputs on no space fs/btrfs/extent-tree.c | 3 +++ 1 file changed, 3 insertions(+) -- To unsubscribe from this list: send the line unsubscribe linux-btrfs in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH] btrfs: wait for delayed iputs on no space
From: Zhao Lei zhao...@cn.fujitsu.com btrfs will report no_space when we run following write and delete file loop: # FILE_SIZE_M=[ 75% of fs space ] # DEV=[ some dev ] # MNT=[ some dir ] # # mkfs.btrfs -f $DEV # mount -o nodatacow $DEV $MNT # for ((i = 0; i 100; i++)); do dd if=/dev/zero of=$MNT/file0 bs=1M count=$FILE_SIZE_M; rm -f $MNT/file0; done # Reason: iput() and evict() is run after write pages to block device, if write pages work is not finished before next write, the rmed space is not freed, and caused above bug. Fix: We can add -o flushoncommit mount option to avoid above bug, but it have performance problem. Actually, we can to wait for on-the-fly writes only when no-space happened, it is which this patch do. Signed-off-by: Zhao Lei zhao...@cn.fujitsu.com --- fs/btrfs/extent-tree.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index 6c1e211..94fb15f 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c @@ -3683,6 +3683,9 @@ commit_trans: !atomic_read(root-fs_info-open_ioctl_trans)) { need_commit--; + if (need_commit 0) + btrfs_wait_ordered_roots(fs_info, -1); + trans = btrfs_join_transaction(root); if (IS_ERR(trans)) return PTR_ERR(trans); -- 1.8.5.1 -- To unsubscribe from this list: send the line unsubscribe linux-btrfs in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH] btrfs: wait for delayed iputs on no space
From: Zhao Lei zhao...@cn.fujitsu.com This is another fix of no_space case. All patchs for fix no_space bug are available at fix_no_space branch on: git://github.com/zhaoleidd/btrfs Any suggestions are welcome. Zhao Lei (1): btrfs: wait for delayed iputs on no space fs/btrfs/extent-tree.c | 3 +++ 1 file changed, 3 insertions(+) -- 1.8.5.1 -- To unsubscribe from this list: send the line unsubscribe linux-btrfs in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html