From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.sourceforge.net (lists.sourceforge.net [216.105.38.7]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2F00CD262AB for ; Tue, 20 Jan 2026 22:58:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.sourceforge.net; s=beta; h=Content-Transfer-Encoding:Content-Type:Cc: Reply-To:From:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:Subject:In-Reply-To:MIME-Version:References: Message-ID:To:Date:Sender:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=Oo/vUlGZ5pv92zSxu4gTIWmCIDa1+Aj9sh3m+I2Rpf0=; b=Hg7gf8DpVVhFjMCbyTTmMfpys+ /rPUoDaRAu4z0ZZ7gDM4ZAM4LbA8jlQzXMM0Ja0TPGOnxru6lbFNJLoR8rD/ATsYw4tU/Xe64i4/k RBiQd8pn7STvOrbp3gEEsUP3XgQ5EmtZoye/NXwRP0tRvQ8D9n7h8aqn6zJn9czEjuZc=; Received: from [127.0.0.1] (helo=sfs-ml-3.v29.lw.sourceforge.com) by sfs-ml-3.v29.lw.sourceforge.com with esmtp (Exim 4.95) (envelope-from ) id 1viKgC-0002fY-QF; Tue, 20 Jan 2026 22:58:32 +0000 Received: from [172.30.29.66] (helo=mx.sourceforge.net) by sfs-ml-3.v29.lw.sourceforge.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1viKgB-0002fR-El for linux-f2fs-devel@lists.sourceforge.net; Tue, 20 Jan 2026 22:58:31 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sourceforge.net; s=x; h=In-Reply-To:Content-Type:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=zFPAfaMPs/ToZVnsiUmFKzaCbGk033x48XAOdVFNKbM=; b=JvKP9oTD3r/OACuwEcaBQ6qRS5 tEDjUFnjDyh8V6FUKEhL2YK2JEyfnqDPEJ8bqSTr+c4xSOmTURi0rsvPGJaBTuQS+9nSkL0GZyeJy U7kq79mYeqpsFty9S2Br8xsrDpjbTwz7HNVNgc6B+NJgcHcp485ey3pgjtWWAdYNd0+8=; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sf.net; s=x ; h=In-Reply-To:Content-Type:MIME-Version:References:Message-ID:Subject:Cc:To :From:Date:Sender:Reply-To:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=zFPAfaMPs/ToZVnsiUmFKzaCbGk033x48XAOdVFNKbM=; b=SEEAIt4RaPquF9KWncS983qA9q BwzbkhezdD6wRA7ZLIbTWStbg+YxyMDrAAMhjwCce4w6UxaHRTj+bX32yqfNuefNCjQ6gOdw2aBof PKedpSCWei93f821HfV9BaFI5iPIEGrli/QEuvg7NS016gjbSL/ZiTFp06I6MeA/ReB8=; Received: from tor.source.kernel.org ([172.105.4.254]) by sfi-mx-2.v28.lw.sourceforge.com with esmtps (TLS1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.95) id 1viKgA-0001rU-OI for linux-f2fs-devel@lists.sourceforge.net; Tue, 20 Jan 2026 22:58:31 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by tor.source.kernel.org (Postfix) with ESMTP id 1152160010; Tue, 20 Jan 2026 22:58:20 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B300EC16AAE; Tue, 20 Jan 2026 22:58:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1768949899; bh=kKWYYJQH5itMruE7hjik+GQTPIeWrZ5RzReTzPA+rZs=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=hUvSfOG5tvf6jLGLVv6hM4pti40FUvuR4Irx5dceHrYWFAbxIS5aJWI5JFliaC2Hd uYEmdNU8C13cAFHZcCQC29QS5iu6V6I468yw5osqZ1+lvxwbSyUk3xtU8XUT8h+KaK wwC15/XdVbK6APJcvCo6kjyoGmo+BhBf6hkPSjukdvH1QJFzwuQ7vsE2BPlyfYbMLC SlpjrZSzZWzmQY8/DWsW8LaNtInuPnA4tuiK8gGM00jtfkOU6yw9d40Y+fhN+7jgi7 HCwKnJtK4+NspA9Cb4+kuqIqogkWY4YghHeTTxsVZV2fcgonQOq02KMhdsp2SCOrNc yDOM6LiXEmPGA== Date: Tue, 20 Jan 2026 14:58:19 -0800 To: Chuck Lever Message-ID: <20260120225819.GA15551@frogsfrogsfrogs> References: <20260120142439.1821554-1-cel@kernel.org> <20260120142439.1821554-2-cel@kernel.org> <20260120172608.GQ15551@frogsfrogsfrogs> <38bf1452-8cf8-477b-bcc3-9fe442033bc5@app.fastmail.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <38bf1452-8cf8-477b-bcc3-9fe442033bc5@app.fastmail.com> X-Headers-End: 1viKgA-0001rU-OI Subject: Re: [f2fs-dev] [PATCH v6 01/16] fs: Add case sensitivity flags to file_kattr X-BeenThere: linux-f2fs-devel@lists.sourceforge.net X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: "Darrick J. Wong via Linux-f2fs-devel" Reply-To: "Darrick J. Wong" Cc: Jan Kara , Paulo Alcantara , Yuezhang Mo , Carlos Maiolino , almaz.alexandrovich@paragon-software.com, adilger.kernel@dilger.ca, linux-cifs@vger.kernel.org, Steve French , Viacheslav Dubeyko , linux-ext4@vger.kernel.org, Namjae Jeon , Shyam Prasad N , frank.li@vivo.com, linux-nfs@vger.kernel.org, Alexander Viro , Ronnie Sahlberg , glaubitz@physik.fu-berlin.de, Jaegeuk Kim , OGAWA Hirofumi , Christian Brauner , Theodore Tso , linux-api@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, linux-xfs@vger.kernel.org, senozhatsky@chromium.org, Chuck Lever , Hans de Goede , Anna Schumaker , linux-fsdevel@vger.kernel.org, Sungjong Seo , Trond Myklebust Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net [uapi change, so add linux-api] On Tue, Jan 20, 2026 at 04:48:31PM -0500, Chuck Lever wrote: > > > On Tue, Jan 20, 2026, at 12:26 PM, Darrick J. Wong wrote: > > On Tue, Jan 20, 2026 at 09:24:24AM -0500, Chuck Lever wrote: > >> From: Chuck Lever > >> > >> Enable upper layers such as NFSD to retrieve case sensitivity > >> information from file systems by adding FS_XFLAG_CASEFOLD and > >> FS_XFLAG_CASENONPRESERVING flags. > >> > >> Filesystems report case-insensitive or case-nonpreserving behavior > >> by setting these flags directly in fa->fsx_xflags. The default > >> (flags unset) indicates POSIX semantics: case-sensitive and > >> case-preserving. These flags are read-only; userspace cannot set > >> them via ioctl. > >> > >> Relocate struct file_kattr initialization from fileattr_fill_xflags() > >> and fileattr_fill_flags() to vfs_fileattr_get() and the ioctl/syscall > >> call sites. This allows filesystem ->fileattr_get() callbacks to set > >> flags directly in fa->fsx_xflags before invoking the fill functions, > >> which previously would have zeroed those values. Callers that bypass > >> vfs_fileattr_get() must now zero-initialize the struct themselves. > >> > >> Case sensitivity information is exported to userspace via the > >> fa_xflags field in the FS_IOC_FSGETXATTR ioctl and file_getattr() > >> system call. > >> > >> Signed-off-by: Chuck Lever > >> --- > >> fs/file_attr.c | 14 ++++++-------- > >> fs/xfs/xfs_ioctl.c | 2 +- > >> include/linux/fileattr.h | 3 ++- > >> include/uapi/linux/fs.h | 2 ++ > > > > This ought to go to linux-api because you're changing the userspace api. > > Granted it's only adding a flag definition to an existing ioctl, but > > FS_XFLAG_CASEFOLD /does/ collide with Andrey's fsverity xflag patch... > > > > (The rest of the changes looks ok to me.) > > Process question for Christian: Do you want to see a v7 of this > series with Cc: linux-api before proceeding, or are you taking > both Andrey's and mine and can resolve the conflict, or ... ? Well now that I've griped at both patchsets on the same public list, I'll at least chime in that I'd be satisfied if whoever decides to merge them to fix up the conflicts whenever they merge them. :) --D > > > --D > > > >> 4 files changed, 11 insertions(+), 10 deletions(-) > >> > >> diff --git a/fs/file_attr.c b/fs/file_attr.c > >> index 13cdb31a3e94..2700200c5b9c 100644 > >> --- a/fs/file_attr.c > >> +++ b/fs/file_attr.c > >> @@ -15,12 +15,10 @@ > >> * @fa: fileattr pointer > >> * @xflags: FS_XFLAG_* flags > >> * > >> - * Set ->fsx_xflags, ->fsx_valid and ->flags (translated xflags). All > >> - * other fields are zeroed. > >> + * Set ->fsx_xflags, ->fsx_valid and ->flags (translated xflags). > >> */ > >> void fileattr_fill_xflags(struct file_kattr *fa, u32 xflags) > >> { > >> - memset(fa, 0, sizeof(*fa)); > >> fa->fsx_valid = true; > >> fa->fsx_xflags = xflags; > >> if (fa->fsx_xflags & FS_XFLAG_IMMUTABLE) > >> @@ -46,11 +44,9 @@ EXPORT_SYMBOL(fileattr_fill_xflags); > >> * @flags: FS_*_FL flags > >> * > >> * Set ->flags, ->flags_valid and ->fsx_xflags (translated flags). > >> - * All other fields are zeroed. > >> */ > >> void fileattr_fill_flags(struct file_kattr *fa, u32 flags) > >> { > >> - memset(fa, 0, sizeof(*fa)); > >> fa->flags_valid = true; > >> fa->flags = flags; > >> if (fa->flags & FS_SYNC_FL) > >> @@ -84,6 +80,8 @@ int vfs_fileattr_get(struct dentry *dentry, struct file_kattr *fa) > >> struct inode *inode = d_inode(dentry); > >> int error; > >> > >> + memset(fa, 0, sizeof(*fa)); > >> + > >> if (!inode->i_op->fileattr_get) > >> return -ENOIOCTLCMD; > >> > >> @@ -323,7 +321,7 @@ int ioctl_setflags(struct file *file, unsigned int __user *argp) > >> { > >> struct mnt_idmap *idmap = file_mnt_idmap(file); > >> struct dentry *dentry = file->f_path.dentry; > >> - struct file_kattr fa; > >> + struct file_kattr fa = {}; > >> unsigned int flags; > >> int err; > >> > >> @@ -355,7 +353,7 @@ int ioctl_fssetxattr(struct file *file, void __user *argp) > >> { > >> struct mnt_idmap *idmap = file_mnt_idmap(file); > >> struct dentry *dentry = file->f_path.dentry; > >> - struct file_kattr fa; > >> + struct file_kattr fa = {}; > >> int err; > >> > >> err = copy_fsxattr_from_user(&fa, argp); > >> @@ -434,7 +432,7 @@ SYSCALL_DEFINE5(file_setattr, int, dfd, const char __user *, filename, > >> struct filename *name __free(putname) = NULL; > >> unsigned int lookup_flags = 0; > >> struct file_attr fattr; > >> - struct file_kattr fa; > >> + struct file_kattr fa = {}; > >> int error; > >> > >> BUILD_BUG_ON(sizeof(struct file_attr) < FILE_ATTR_SIZE_VER0); > >> diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c > >> index 59eaad774371..f0417c4d1fca 100644 > >> --- a/fs/xfs/xfs_ioctl.c > >> +++ b/fs/xfs/xfs_ioctl.c > >> @@ -496,7 +496,7 @@ xfs_ioc_fsgetxattra( > >> xfs_inode_t *ip, > >> void __user *arg) > >> { > >> - struct file_kattr fa; > >> + struct file_kattr fa = {}; > >> > >> xfs_ilock(ip, XFS_ILOCK_SHARED); > >> xfs_fill_fsxattr(ip, XFS_ATTR_FORK, &fa); > >> diff --git a/include/linux/fileattr.h b/include/linux/fileattr.h > >> index f89dcfad3f8f..709de829659f 100644 > >> --- a/include/linux/fileattr.h > >> +++ b/include/linux/fileattr.h > >> @@ -16,7 +16,8 @@ > >> > >> /* Read-only inode flags */ > >> #define FS_XFLAG_RDONLY_MASK \ > >> - (FS_XFLAG_PREALLOC | FS_XFLAG_HASATTR) > >> + (FS_XFLAG_PREALLOC | FS_XFLAG_HASATTR | \ > >> + FS_XFLAG_CASEFOLD | FS_XFLAG_CASENONPRESERVING) > >> > >> /* Flags to indicate valid value of fsx_ fields */ > >> #define FS_XFLAG_VALUES_MASK \ > >> diff --git a/include/uapi/linux/fs.h b/include/uapi/linux/fs.h > >> index 66ca526cf786..919148beaa8c 100644 > >> --- a/include/uapi/linux/fs.h > >> +++ b/include/uapi/linux/fs.h > >> @@ -253,6 +253,8 @@ struct file_attr { > >> #define FS_XFLAG_FILESTREAM 0x00004000 /* use filestream allocator */ > >> #define FS_XFLAG_DAX 0x00008000 /* use DAX for IO */ > >> #define FS_XFLAG_COWEXTSIZE 0x00010000 /* CoW extent size allocator hint */ > >> +#define FS_XFLAG_CASEFOLD 0x00020000 /* case-insensitive lookups */ > >> +#define FS_XFLAG_CASENONPRESERVING 0x00040000 /* case not preserved */ > >> #define FS_XFLAG_HASATTR 0x80000000 /* no DIFLAG for this */ > >> > >> /* the read-only stuff doesn't really belong here, but any other place is > >> -- > >> 2.52.0 > >> > >> > > -- > Chuck Lever > _______________________________________________ Linux-f2fs-devel mailing list Linux-f2fs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel