On 2018年01月26日 11:22, Gu Jinxiang wrote: > Do a cleanup. Also make it consistent with kernel. > Use fs_info instead of root for BTRFS_MAX_XATTR_SIZE, since > maybe in some situation we do not know root, but just know fs_info. > > Signed-off-by: Gu Jinxiang <[email protected]> > --- > ctree.h | 2 +- > dir-item.c | 3 ++- > 2 files changed, 3 insertions(+), 2 deletions(-) > > diff --git a/ctree.h b/ctree.h > index ace93cc3..c82e7547 100644 > --- a/ctree.h > +++ b/ctree.h > @@ -364,7 +364,7 @@ struct btrfs_header { > #define BTRFS_MAX_INLINE_DATA_SIZE(fs_info) (BTRFS_LEAF_DATA_SIZE(fs_info) - > \ > sizeof(struct btrfs_item) - \ > sizeof(struct btrfs_file_extent_item)) > -#define BTRFS_MAX_XATTR_SIZE(r) (BTRFS_LEAF_DATA_SIZE(r->fs_info) - \ > +#define BTRFS_MAX_XATTR_SIZE(fs_info) (BTRFS_LEAF_DATA_SIZE(fs_info) > - \ > sizeof(struct btrfs_item) -\ > sizeof(struct btrfs_dir_item))
For sake of consistency, it's better to copy kernel definition here.
Thanks,
Qu
>
> diff --git a/dir-item.c b/dir-item.c
> index 462546c0..0b7250c9 100644
> --- a/dir-item.c
> +++ b/dir-item.c
> @@ -311,7 +311,8 @@ static int verify_dir_item(struct btrfs_root *root,
>
> /* BTRFS_MAX_XATTR_SIZE is the same for all dir items */
> if ((btrfs_dir_data_len(leaf, dir_item) +
> - btrfs_dir_name_len(leaf, dir_item)) > BTRFS_MAX_XATTR_SIZE(root)) {
> + btrfs_dir_name_len(leaf, dir_item)) >
> + BTRFS_MAX_XATTR_SIZE(root->fs_info)) {
> fprintf(stderr, "invalid dir item name + data len: %u + %u\n",
> (unsigned)btrfs_dir_name_len(leaf, dir_item),
> (unsigned)btrfs_dir_data_len(leaf, dir_item));
>
signature.asc
Description: OpenPGP digital signature
