bug-hurd
[Top][All Lists]
Advanced

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

Re: [PATCH 1/1 hurd] ext2fs: New default: use xattrs to store translator


From: Samuel Thibault
Subject: Re: [PATCH 1/1 hurd] ext2fs: New default: use xattrs to store translator records
Date: Tue, 5 Mar 2024 01:30:23 +0100
User-agent: NeoMutt/20170609 (1.8.3)

Applied, thanks!

Damien Zammit, le dim. 03 mars 2024 01:00:53 +0000, a ecrit:
> Replaces experimental option --x-xattr-translator-records
> with --no-xattr-translator-records to allow rolling back to
> previous behaviour.
> 
> NB:
>   - Legacy records still work with either setting.
>   - Adding a new record removes a legacy one.
> ---
>  ext2fs/ext2fs.c | 18 +++++++++---------
>  ext2fs/inode.c  | 25 +++++++++++++++----------
>  2 files changed, 24 insertions(+), 19 deletions(-)
> 
> diff --git a/ext2fs/ext2fs.c b/ext2fs/ext2fs.c
> index 3c76d8c8..3836bdf6 100644
> --- a/ext2fs/ext2fs.c
> +++ b/ext2fs/ext2fs.c
> @@ -89,15 +89,14 @@ struct ext2_group_desc *group_desc_image;
>  
>  struct pokel global_pokel;
>  
> -int use_xattr_translator_records;
>  
>  #ifdef EXT2FS_DEBUG
>  int ext2_debug_flag;
>  #endif
>  
>  /* Use extended attribute-based translator records.  */
> -int use_xattr_translator_records;
> -#define X_XATTR_TRANSLATOR_RECORDS   -1
> +int use_xattr_translator_records = 1;
> +#define NO_XATTR_TRANSLATOR_RECORDS  -1
>  
>  /* Ext2fs-specific options.  */
>  static const struct argp_option
> @@ -108,8 +107,8 @@ options[] =
>     " (not compiled in)"
>  #endif
>    },
> -  {"x-xattr-translator-records", X_XATTR_TRANSLATOR_RECORDS, 0, 0,
> -   "Store translator records in extended attributes (experimental)"},
> +  {"no-xattr-translator-records", NO_XATTR_TRANSLATOR_RECORDS, 0, 0,
> +   "Do not store translator records in extended attributes (legacy)"},
>  #ifdef ALTERNATE_SBLOCK
>    /* XXX This is not implemented.  */
>    {"sblock", 'S', "BLOCKNO", 0,
> @@ -138,8 +137,8 @@ parse_opt (int key, char *arg, struct argp_state *state)
>      case 'D':
>        values->debug_flag = 1;
>        break;
> -    case X_XATTR_TRANSLATOR_RECORDS:
> -      values->use_xattr_translator_records = 1;
> +    case NO_XATTR_TRANSLATOR_RECORDS:
> +      values->use_xattr_translator_records = 0;
>        break;
>  #ifdef ALTERNATE_SBLOCK
>      case 'S':
> @@ -159,6 +158,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
>       return ENOMEM;
>        state->hook = values;
>        memset (values, 0, sizeof *values);
> +      values->use_xattr_translator_records = use_xattr_translator_records;
>  #ifdef ALTERNATE_SBLOCK
>        values->sb_block = SBLOCK_BLOCK;
>  #endif
> @@ -194,8 +194,8 @@ diskfs_append_args (char **argz, size_t *argz_len)
>    /* Get the standard things.  */
>    err = diskfs_append_std_options (argz, argz_len);
>  
> -  if (!err && use_xattr_translator_records)
> -    err = argz_add (argz, argz_len, "--x-xattr-translator-records");
> +  if (!err && !use_xattr_translator_records)
> +    err = argz_add (argz, argz_len, "--no-xattr-translator-records");
>  
>  #ifdef EXT2FS_DEBUG
>    if (!err && ext2_debug_flag)
> diff --git a/ext2fs/inode.c b/ext2fs/inode.c
> index 5b99069e..ead82678 100644
> --- a/ext2fs/inode.c
> +++ b/ext2fs/inode.c
> @@ -764,19 +764,24 @@ diskfs_get_translator (struct node *np, char **namep, 
> mach_msg_type_number_t *na
>        return err;
>      }
>  
> -  err = ext2_get_xattr (np, "gnu.translator", NULL, &datalen);
> -  if (err)
> -    return err;
> +  /* If xattr is supported by this filesystem, check for new translator 
> record
> +   * regardless of flag to use it or not */
> +  if (EXT2_HAS_COMPAT_FEATURE (sblock, EXT2_FEATURE_COMPAT_EXT_ATTR))
> +    {
> +      err = ext2_get_xattr (np, "gnu.translator", NULL, &datalen);
> +      if (err)
> +        return err;
>  
> -  *namep = malloc (datalen);
> -  if (!*namep)
> -    err = ENOMEM;
> -  else
> -    err = ext2_get_xattr (np, "gnu.translator", *namep, &datalen);
> +      *namep = malloc (datalen);
> +      if (!*namep)
> +        err = ENOMEM;
> +      else
> +        err = ext2_get_xattr (np, "gnu.translator", *namep, &datalen);
>  
> -  diskfs_end_catch_exception ();
> +      diskfs_end_catch_exception ();
>  
> -  *namelen = datalen;
> +      *namelen = datalen;
> +    }
>    return err;
>  }
>  
> -- 
> 2.43.0
> 
> 
> 

-- 
Samuel
---
Pour une évaluation indépendante, transparente et rigoureuse !
Je soutiens la Commission d'Évaluation de l'Inria.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]