Re: [PATCH] btrfs: wait for delayed iputs on no space

2015-03-31 Thread Tsutomu Itoh
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

2015-03-27 Thread Zhaolei
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

2015-03-27 Thread Zhaolei
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