From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0b-00082601.pphosted.com ([67.231.153.30]:57888 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751264AbcJGNSL (ORCPT ); Fri, 7 Oct 2016 09:18:11 -0400 Subject: Re: [PATCH 2/2] btrfs: try to write enough delalloc bytes when reclaiming metadata space To: Wang Xiaoguang , References: <1474441173-31049-1-git-send-email-wangxg.fnst@cn.fujitsu.com> <1474441173-31049-2-git-send-email-wangxg.fnst@cn.fujitsu.com> CC: From: Josef Bacik Message-ID: <25089fa2-5542-dbb1-7244-e37feaab3447@fb.com> Date: Fri, 7 Oct 2016 09:17:45 -0400 MIME-Version: 1.0 In-Reply-To: <1474441173-31049-2-git-send-email-wangxg.fnst@cn.fujitsu.com> Content-Type: text/plain; charset="windows-1252"; format=flowed Sender: linux-btrfs-owner@vger.kernel.org List-ID: On 09/21/2016 02:59 AM, Wang Xiaoguang wrote: > Indeed as long as we have delalloc bytes and if we fail to reclaim > requested metadata space, we should write these delalloc bytes and > have one more try, this can fix some false enospc errors in some > extreme cases. > > Signed-off-by: Wang Xiaoguang > --- > fs/btrfs/extent-tree.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c > index fdfc97f..46c2a37 100644 > --- a/fs/btrfs/extent-tree.c > +++ b/fs/btrfs/extent-tree.c > @@ -4794,6 +4794,15 @@ static int may_commit_transaction(struct btrfs_root *root, > { > struct btrfs_block_rsv *delayed_rsv = &root->fs_info->delayed_block_rsv; > struct btrfs_trans_handle *trans; > + struct btrfs_fs_info *fs_info = root->fs_info; > + > + /* > + * shrink_delalloc() may not write enough delalloc bytes, so here we > + * have a last try. Please don't remove these, because these can fix > + * some false enospc error in some extreme cases. > + */ > + btrfs_start_delalloc_roots(fs_info, 0, -1); > + btrfs_wait_ordered_roots(fs_info, -1, 0, (u64)-1); > > trans = (struct btrfs_trans_handle *)current->journal_info; > if (trans) > This will deadlock. Josef