Re: [PATCH] btrfs-progs: Use exclude_super_stripes instead of account_super_bytes

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

 



On Wed, May 2, 2018 at 7:55 PM Nikolay Borisov <nborisov@xxxxxxxx> wrote:

> Originally commit 2681e00f00fe ("btrfs-progs: check for matchingi
> free space in cache") added the account_super_bytes function to prevent
> false negative when running btrfs check. Turns out this function is
> really copied exclude_super_stripes, excluding the calls to
> exclude_super_stripes. Later commit e4797df6a9fa ("btrfs-progs: check
> the free space tree in btrfsck") introduced proper version of
> exclude_super_stripes. Instead of duplicating the function, just remove
> account_super_bytes and use exclude_super_stripes instead of the former.
> This also has the benefit of bringing the userspace code a bit closer
> to the kernel counterpart.

> Signed-off-by: Nikolay Borisov <nborisov@xxxxxxxx>

Reviewed-by: Su Yue <suy.fnst@xxxxxxxxxxxxxx>

> ---
>   extent-tree.c | 52 ++--------------------------------------------------
>   1 file changed, 2 insertions(+), 50 deletions(-)

> diff --git a/extent-tree.c b/extent-tree.c
> index ea205ccf4c30..391f0a784710 100644
> --- a/extent-tree.c
> +++ b/extent-tree.c
> @@ -3164,54 +3164,6 @@ static int find_first_block_group(struct
btrfs_root *root,
>          return ret;
>   }

> -static void account_super_bytes(struct btrfs_fs_info *fs_info,
> -                               struct btrfs_block_group_cache *cache)
> -{
> -       u64 bytenr;
> -       u64 *logical;
> -       int stripe_len;
> -       int i, nr, ret;
> -
> -       if (cache->key.objectid < BTRFS_SUPER_INFO_OFFSET) {
> -               stripe_len = BTRFS_SUPER_INFO_OFFSET -
cache->key.objectid;
> -               cache->bytes_super += stripe_len;
> -       }
> -
> -       for (i = 0; i < BTRFS_SUPER_MIRROR_MAX; i++) {
> -               bytenr = btrfs_sb_offset(i);
> -               ret = btrfs_rmap_block(fs_info,
> -                                      cache->key.objectid, bytenr,
> -                                      0, &logical, &nr, &stripe_len);
> -               if (ret)
> -                       return;
> -
> -               while (nr--) {
> -                       u64 start, len;
> -
> -                       if (logical[nr] > cache->key.objectid +
> -                           cache->key.offset)
> -                               continue;
> -
> -                       if (logical[nr] + stripe_len <=
cache->key.objectid)
> -                               continue;
> -
> -                       start = logical[nr];
> -                       if (start < cache->key.objectid) {
> -                               start = cache->key.objectid;
> -                               len = (logical[nr] + stripe_len) - start;
> -                       } else {
> -                               len = min_t(u64, stripe_len,
> -                                           cache->key.objectid +
> -                                           cache->key.offset - start);
> -                       }
> -
> -                       cache->bytes_super += len;
> -               }
> -
> -               kfree(logical);
> -       }
> -}
> -
>   int btrfs_read_block_groups(struct btrfs_root *root)
>   {
>          struct btrfs_path *path;
> @@ -3287,7 +3239,7 @@ int btrfs_read_block_groups(struct btrfs_root *root)
>                  if (btrfs_chunk_readonly(info, cache->key.objectid))
>                          cache->ro = 1;

> -               account_super_bytes(info, cache);
> +               exclude_super_stripes(root, cache);

>                  ret = update_space_info(info, cache->flags,
found_key.offset,

btrfs_block_group_used(&cache->item),
> @@ -3331,7 +3283,7 @@ btrfs_add_block_group(struct btrfs_fs_info
*fs_info, u64 bytes_used, u64 type,
>          cache->flags = type;
>          btrfs_set_block_group_flags(&cache->item, type);

> -       account_super_bytes(fs_info, cache);
> +       exclude_super_stripes(fs_info->extent_root, cache);
>          ret = update_space_info(fs_info, cache->flags, size, bytes_used,
>                                  &cache->space_info);
>          BUG_ON(ret);
> --
> 2.7.4

> --
> 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
--
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