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
