On 2020/5/26 18:35, Gao Xiang wrote: > On Tue, May 26, 2020 at 06:29:00PM +0800, cgxu wrote: >> On 5/26/20 5:49 PM, Gao Xiang wrote: >>> Hi Chengguang, >>> >>> On Tue, May 26, 2020 at 05:03:43PM +0800, Chengguang Xu wrote: >>>> Define erofs_listxattr and erofs_xattr_handlers to NULL when >>>> CONFIG_EROFS_FS_XATTR is not enabled, then we can remove many >>>> ugly ifdef macros in the code. >>>> >>>> Signed-off-by: Chengguang Xu <[email protected]> >>>> --- >>>> Only compile tested. >>>> >>>> fs/erofs/inode.c | 6 ------ >>>> fs/erofs/namei.c | 2 -- >>>> fs/erofs/super.c | 4 +--- >>>> fs/erofs/xattr.h | 7 ++----- >>>> 4 files changed, 3 insertions(+), 16 deletions(-) >>>> >>>> diff --git a/fs/erofs/inode.c b/fs/erofs/inode.c >>>> index 3350ab65d892..7dd4bbe9674f 100644 >>>> --- a/fs/erofs/inode.c >>>> +++ b/fs/erofs/inode.c >>>> @@ -311,27 +311,21 @@ int erofs_getattr(const struct path *path, struct >>>> kstat *stat, >>>> const struct inode_operations erofs_generic_iops = { >>>> .getattr = erofs_getattr, >>>> -#ifdef CONFIG_EROFS_FS_XATTR >>>> .listxattr = erofs_listxattr, >>>> -#endif >>> >>> It seems equivalent. And it seems ext2 and f2fs behave in the same way... >> >> I posted similar patch for ext2 and Jack merged to >> his tree the other day, though that series also >> included a real bugfix. I also posted similar patch >> to f2fs, so if erofs and f2fs merge these patches >> then all three will behave in the same way, ;-) >> >> You may refer below link for the detail. >> >> https://lore.kernel.org/linux-ext4/[email protected]/ > > Thanks for your link... > >> >> >>> But I'm not sure whether we'd return 0 (if I didn't see fs/xattr.c by >>> mistake) >>> or -EOPNOTSUPP here... Some thoughts about this? > >>> Anyway, I'm fine with that if return 0 is okay here, but I'd like to know >>> your >>> and Chao's thoughts about this... I will play with it later as well.
I'm okay with this change, please feel free to add: Reviewed-by: Chao Yu <[email protected]> >> >> Originally, we set erofs_listxattr to ->listxattr only >> when the config macro CONFIG_EROFS_FS_XATTR is enabled, >> it means that erofs_listxattr() never returns -EOPNOTSUPP >> in any case, so actually there is no logic change here, >> right? > > Yeah, I agree there is no logic change, so I'm fine with the patch. > But I'm little worry about if return 0 is actually wrong here... > > see the return value at: > http://man7.org/linux/man-pages/man2/listxattr.2.html Yeah, I guess vfs should check that whether lower filesystem has set .listxattr callback function to decide to return that value, something like: static ssize_t ecryptfs_listxattr(struct dentry *dentry, char *list, size_t size) { ... if (!d_inode(lower_dentry)->i_op->listxattr) { rc = -EOPNOTSUPP; goto out; } ... rc = d_inode(lower_dentry)->i_op->listxattr(lower_dentry, list, size); ... } > > Thanks, > Gao Xiang > >> >> >> Thanks, >> cgxu >> > > . >
