On Mon, 2026-01-12 at 12:46 -0500, Chuck Lever wrote:
> From: Chuck Lever <[email protected]>
> 
> Report HFS case sensitivity behavior via the file_kattr boolean
> fields. HFS is always case-insensitive (using Mac OS Roman case
> folding) and always preserves case at rest.
> 
> Signed-off-by: Chuck Lever <[email protected]>
> ---
>  fs/hfs/dir.c    |  1 +
>  fs/hfs/hfs_fs.h |  2 ++
>  fs/hfs/inode.c  | 13 +++++++++++++
>  3 files changed, 16 insertions(+)
> 
> diff --git a/fs/hfs/dir.c b/fs/hfs/dir.c
> index 86a6b317b474..552156896105 100644
> --- a/fs/hfs/dir.c
> +++ b/fs/hfs/dir.c
> @@ -321,4 +321,5 @@ const struct inode_operations hfs_dir_inode_operations = {
>       .rmdir          = hfs_remove,
>       .rename         = hfs_rename,
>       .setattr        = hfs_inode_setattr,
> +     .fileattr_get   = hfs_fileattr_get,
>  };
> diff --git a/fs/hfs/hfs_fs.h b/fs/hfs/hfs_fs.h
> index e94dbc04a1e4..a25cdda8ab34 100644
> --- a/fs/hfs/hfs_fs.h
> +++ b/fs/hfs/hfs_fs.h
> @@ -177,6 +177,8 @@ extern int hfs_get_block(struct inode *inode, sector_t 
> block,
>  extern const struct address_space_operations hfs_aops;
>  extern const struct address_space_operations hfs_btree_aops;
>  
> +struct file_kattr;
> +int hfs_fileattr_get(struct dentry *dentry, struct file_kattr *fa);
>  int hfs_write_begin(const struct kiocb *iocb, struct address_space *mapping,
>                   loff_t pos, unsigned int len, struct folio **foliop,
>                   void **fsdata);
> diff --git a/fs/hfs/inode.c b/fs/hfs/inode.c
> index 524db1389737..06429decc1d8 100644
> --- a/fs/hfs/inode.c
> +++ b/fs/hfs/inode.c
> @@ -18,6 +18,7 @@
>  #include <linux/uio.h>
>  #include <linux/xattr.h>
>  #include <linux/blkdev.h>
> +#include <linux/fileattr.h>
>  
>  #include "hfs_fs.h"
>  #include "btree.h"
> @@ -698,6 +699,17 @@ static int hfs_file_fsync(struct file *filp, loff_t 
> start, loff_t end,
>       return ret;
>  }
>  
> +int hfs_fileattr_get(struct dentry *dentry, struct file_kattr *fa)
> +{
> +     /*
> +      * HFS is always case-insensitive (using Mac OS Roman case
> +      * folding) and always preserves case at rest.
> +      */
> +     fa->case_insensitive = true;
> +     fa->case_preserving = true;
> +     return 0;
> +}
> +
>  static const struct file_operations hfs_file_operations = {
>       .llseek         = generic_file_llseek,
>       .read_iter      = generic_file_read_iter,
> @@ -714,4 +726,5 @@ static const struct inode_operations 
> hfs_file_inode_operations = {
>       .lookup         = hfs_file_lookup,
>       .setattr        = hfs_inode_setattr,
>       .listxattr      = generic_listxattr,
> +     .fileattr_get   = hfs_fileattr_get,
>  };

Looks good.

Reviewed-by: Viacheslav Dubeyko <[email protected]>

Thanks,
Slava.

_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to