mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-25 18:59:33 +03:00
Fix multiple definitions of struct mount_attr on recent glibc versions
The ifdef used would never work because the CPP is not aware of C structure definitions. Rather than use an autotools check, we can just use a nameless structure that we typedef to mount_attr_t. This is a Linux kernel interface, which means that it is stable and this is fine to do. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Youzhong Yang <yyang@mathworks.com> Signed-off-by: Richard Yao <richard.yao@alumni.stonybrook.edu> Closes #14057 Closes #14058
This commit is contained in:
parent
411d327c67
commit
9650b35e95
@ -99,18 +99,16 @@
|
|||||||
#define AT_RECURSIVE 0x8000
|
#define AT_RECURSIVE 0x8000
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef mount_attr
|
typedef struct {
|
||||||
struct mount_attr {
|
|
||||||
__u64 attr_set;
|
__u64 attr_set;
|
||||||
__u64 attr_clr;
|
__u64 attr_clr;
|
||||||
__u64 propagation;
|
__u64 propagation;
|
||||||
__u64 userns_fd;
|
__u64 userns_fd;
|
||||||
};
|
} mount_attr_t;
|
||||||
#endif
|
|
||||||
|
|
||||||
static inline int
|
static inline int
|
||||||
sys_mount_setattr(int dfd, const char *path, unsigned int flags,
|
sys_mount_setattr(int dfd, const char *path, unsigned int flags,
|
||||||
struct mount_attr *attr, size_t size)
|
mount_attr_t *attr, size_t size)
|
||||||
{
|
{
|
||||||
return (syscall(__NR_mount_setattr, dfd, path, flags, attr, size));
|
return (syscall(__NR_mount_setattr, dfd, path, flags, attr, size));
|
||||||
}
|
}
|
||||||
@ -528,7 +526,7 @@ is_idmap_supported(char *path)
|
|||||||
list_t head;
|
list_t head;
|
||||||
int ret;
|
int ret;
|
||||||
int tree_fd = -EBADF, path_fd = -EBADF;
|
int tree_fd = -EBADF, path_fd = -EBADF;
|
||||||
struct mount_attr attr = {
|
mount_attr_t attr = {
|
||||||
.attr_set = MOUNT_ATTR_IDMAP,
|
.attr_set = MOUNT_ATTR_IDMAP,
|
||||||
.userns_fd = -EBADF,
|
.userns_fd = -EBADF,
|
||||||
};
|
};
|
||||||
@ -634,7 +632,7 @@ do_idmap_mount(list_t *idmap, char *source, char *target, int flags)
|
|||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
int tree_fd = -EBADF, source_fd = -EBADF;
|
int tree_fd = -EBADF, source_fd = -EBADF;
|
||||||
struct mount_attr attr = {
|
mount_attr_t attr = {
|
||||||
.attr_set = MOUNT_ATTR_IDMAP,
|
.attr_set = MOUNT_ATTR_IDMAP,
|
||||||
.userns_fd = -EBADF,
|
.userns_fd = -EBADF,
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user