Re: linux-next: build failure after merge of the vfs-brauner tree

From: Ozgur

Date: Mon Oct 12 2026 - 10:37:39 EST


Mark Brown <broonie@xxxxxxxxxx>, 12 Eki 2026 Pzt, 16:50 tarihinde şunu yazdı:
>
> Hi all,

Hi Mark,

i noticed Namjae Jeon's commit (2de2cdd9cc08, ntfs: add pathname
access for named streams) is currently present in fs-next and your
reported build failure appears to result from this commit interacting
with VFS changes that make mnt_idmap const in the ->setattr() and
->getattr() callbacks, and i think fs-next before changes are
integrated into linux-next

i compiled linux-next tree but couldnt reproduce the build failure.

Regards

Ozgur

>
> After merging the vfs-brauner tree, today's linux-next build (x86_64
> allmodconfig) failed like this:
>
> /tmp/next/build/fs/smb/client/cifsfs.c:1258:18: error: incompatible function pointer types initializing 'int (*)(const struct mnt_idmap *, struct dentry *, struct file_kattr *)' with an expression of type 'int (struct mnt_idmap *, struct dentry *, struct file_kattr *)' [-Wincompatible-function-pointer-types]
> 1258 | .fileattr_set = cifs_fileattr_set,
> | ^~~~~~~~~~~~~~~~~
> /tmp/next/build/fs/smb/client/cifsfs.c:1270:18: error: incompatible function pointer types initializing 'int (*)(const struct mnt_idmap *, struct dentry *, struct file_kattr *)' with an expression of type 'int (struct mnt_idmap *, struct dentry *, struct file_kattr *)' [-Wincompatible-function-pointer-types]
> 1270 | .fileattr_set = cifs_fileattr_set,
> | ^~~~~~~~~~~~~~~~~
> 2 errors generated.
> make[6]: *** [/tmp/next/build/scripts/Makefile.build:290: fs/smb/client/cifsfs.o] Error 1
> make[6]: *** Waiting for unfinished jobs....
> make[5]: *** [/tmp/next/build/scripts/Makefile.build:551: fs/smb/client] Error 2
> make[5]: *** Waiting for unfinished jobs....
> /tmp/next/build/fs/ntfs/namei.c:793:40: error: passing 'const struct mnt_idmap *' to parameter of type 'struct mnt_idmap *' discards qualifiers [-Werror,-Wincompatible-pointer-types-discards-qualifiers]
> 793 | stream_vi = ntfs_create_named_stream(idmap, dir, base_name,
> | ^~~~~
> /tmp/next/build/fs/ntfs/stream.h:35:58: note: passing argument to parameter 'idmap' here
> 35 | struct inode *ntfs_create_named_stream(struct mnt_idmap *idmap,
> | ^
> 1 error generated.
>
>
> Caused by the constification series for mnt_idmap interacting with:
>
> 2de2cdd9cc08f (ntfs: add pathname access for named streams)
> 121e0c35720b2 (smb: client: implement fileattr_set for compression flags)
>
> from the cifs and ntfs trees. I have applied the fixup below and can
> carry as needed.
>
> From 6b75090639b332f5fa52a558edbba295d8bb42fc Mon Sep 17 00:00:00 2001
> From: Mark Brown <broonie@xxxxxxxxxx>
> Date: Mon, 12 Oct 2026 13:55:24 +0100
> Subject: [PATCH] cifs: Fix semantic conflict with const mnt_idmap
>
> /tmp/next/build/fs/smb/client/cifsfs.c:1258:18: error: incompatible function pointer types initializing 'int (*)(const struct mnt_idmap *, struct dentry *, struct file_kattr *)' with an expression of type 'int (struct mnt_idmap *, struct dentry *, struct file_kattr *)' [-Wincompatible-function-pointer-types]
> 1258 | .fileattr_set = cifs_fileattr_set,
> | ^~~~~~~~~~~~~~~~~
> /tmp/next/build/fs/smb/client/cifsfs.c:1270:18: error: incompatible function pointer types initializing 'int (*)(const struct mnt_idmap *, struct dentry *, struct file_kattr *)' with an expression of type 'int (struct mnt_idmap *, struct dentry *, struct file_kattr *)' [-Wincompatible-function-pointer-types]
> 1270 | .fileattr_set = cifs_fileattr_set,
> | ^~~~~~~~~~~~~~~~~
> 2 errors generated.
>
> Signed-off-by: Mark Brown <broonie@xxxxxxxxxx>
> ---
> fs/ntfs/named_stream.c | 6 +++---
> fs/ntfs/stream.h | 2 +-
> fs/smb/client/cifsfs.h | 2 +-
> fs/smb/client/ioctl.c | 2 +-
> 4 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/fs/ntfs/named_stream.c b/fs/ntfs/named_stream.c
> index d74bebf90966b..95a3c05f98211 100644
> --- a/fs/ntfs/named_stream.c
> +++ b/fs/ntfs/named_stream.c
> @@ -553,7 +553,7 @@ int ntfs_stream_path_names(struct ntfs_volume *vol,
> *
> * Return: Referenced stream inode on success, or ERR_PTR() on failure.
> */
> -struct inode *ntfs_create_named_stream(struct mnt_idmap *idmap,
> +struct inode *ntfs_create_named_stream(const struct mnt_idmap *idmap,
> struct inode *dir, __le16 *base_name, int base_len,
> __le16 *stream_name, int stream_len)
> {
> @@ -988,13 +988,13 @@ static ssize_t ntfs_stream_listxattr(struct dentry *dentry, char *buffer,
> }
>
> #ifdef CONFIG_NTFS_FS_POSIX_ACL
> -static struct posix_acl *ntfs_stream_get_acl(struct mnt_idmap *idmap,
> +static struct posix_acl *ntfs_stream_get_acl(const struct mnt_idmap *idmap,
> struct dentry *dentry, int type)
> {
> return ERR_PTR(-EOPNOTSUPP);
> }
>
> -static int ntfs_stream_set_acl(struct mnt_idmap *idmap,
> +static int ntfs_stream_set_acl(const struct mnt_idmap *idmap,
> struct dentry *dentry, struct posix_acl *acl, int type)
> {
> return -EOPNOTSUPP;
> diff --git a/fs/ntfs/stream.h b/fs/ntfs/stream.h
> index 5cbf6e8f6b681..76b6c9cca5cc0 100644
> --- a/fs/ntfs/stream.h
> +++ b/fs/ntfs/stream.h
> @@ -32,7 +32,7 @@ struct inode *ntfs_stream_lookup_inode_by_name(struct inode *dir,
> __le16 *name, int name_len);
> struct dentry *ntfs_lookup_stream(struct inode *dir, struct dentry *dentry,
> const struct ntfs_stream_path *path);
> -struct inode *ntfs_create_named_stream(struct mnt_idmap *idmap,
> +struct inode *ntfs_create_named_stream(const struct mnt_idmap *idmap,
> struct inode *dir, __le16 *base_name, int base_len,
> __le16 *stream_name, int stream_len);
> int ntfs_unlink_named_stream(struct inode *dir, struct dentry *dentry);
> diff --git a/fs/smb/client/cifsfs.h b/fs/smb/client/cifsfs.h
> index 7600467babb67..e54d3798eb2f7 100644
> --- a/fs/smb/client/cifsfs.h
> +++ b/fs/smb/client/cifsfs.h
> @@ -91,7 +91,7 @@ extern const struct inode_operations cifs_namespace_inode_operations;
>
> struct file_kattr;
> int cifs_fileattr_get(struct dentry *dentry, struct file_kattr *fa);
> -int cifs_fileattr_set(struct mnt_idmap *idmap, struct dentry *dentry,
> +int cifs_fileattr_set(const struct mnt_idmap *idmap, struct dentry *dentry,
> struct file_kattr *fa);
>
>
> diff --git a/fs/smb/client/ioctl.c b/fs/smb/client/ioctl.c
> index af4664f5b1202..bb8808289a468 100644
> --- a/fs/smb/client/ioctl.c
> +++ b/fs/smb/client/ioctl.c
> @@ -181,7 +181,7 @@ static int cifs_set_compression(unsigned int xid, struct dentry *dentry,
> compression_state);
> }
>
> -int cifs_fileattr_set(struct mnt_idmap *idmap, struct dentry *dentry,
> +int cifs_fileattr_set(const struct mnt_idmap *idmap, struct dentry *dentry,
> struct file_kattr *fa)
> {
> struct cifs_sb_info *cifs_sb = CIFS_SB(dentry);
> --
> 2.47.3
>