Re: [PATCH v2] Btrfs: fix enospc in hole punching

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Oct 28, 2016 at 3:32 AM, robbieko <robbieko@xxxxxxxxxxxx> wrote:
> From: Robbie Ko <robbieko@xxxxxxxxxxxx>
>
> The hole punching can result in adding new leafs (and as a consequence
> new nodes) to the tree because when we find file extent items that span
> beyond the hole range we may end up not deleting them (just adjusting them)
> and add new file extent items representing holes.
>
> That after splitting a leaf (therefore creating a new one), a new node
> might be added to each level of the tree (since there's a new key and
> every parent node was full).
>
> Fix this by use btrfs_calc_trans_metadata_size instead of
> btrfs_calc_trunc_metadata_size.
>
> v2:
> * Improve the change log

Version information does not belong in the changelog but after the ---
below (it wouldn't make sense to have it in the git changelogs...).
See https://btrfs.wiki.kernel.org/index.php/Developer's_FAQ#Repeated_submissions
and examples from others that submit patches to this list.

>
> Signed-off-by: Robbie Ko <robbieko@xxxxxxxxxxxx>

I've reworded the changelog for clarity and added it to my branch at:
https://git.kernel.org/cgit/linux/kernel/git/fdmanana/linux.git/log/?h=for-chris-4.10

Thanks.

> ---
>  fs/btrfs/file.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
> index fea31a4..809ca85 100644
> --- a/fs/btrfs/file.c
> +++ b/fs/btrfs/file.c
> @@ -2322,7 +2322,7 @@ static int btrfs_punch_hole(struct inode *inode, loff_t offset, loff_t len)
>         u64 tail_len;
>         u64 orig_start = offset;
>         u64 cur_offset;
> -       u64 min_size = btrfs_calc_trunc_metadata_size(root, 1);
> +       u64 min_size = btrfs_calc_trans_metadata_size(root, 1);
>         u64 drop_end;
>         int ret = 0;
>         int err = 0;
> @@ -2469,7 +2469,7 @@ static int btrfs_punch_hole(struct inode *inode, loff_t offset, loff_t len)
>                 ret = -ENOMEM;
>                 goto out_free;
>         }
> -       rsv->size = btrfs_calc_trunc_metadata_size(root, 1);
> +       rsv->size = btrfs_calc_trans_metadata_size(root, 1);
>         rsv->failfast = 1;
>
>         /*
> --
> 1.9.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html



-- 
Filipe David Manana,

"People will forget what you said,
 people will forget what you did,
 but people will never forget how you made them feel."
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux