mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
Merge tag 'vfs-6.17-rc1.fileattr' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs
Pull fileattr updates from Christian Brauner: "This introduces the new file_getattr() and file_setattr() system calls after lengthy discussions. Both system calls serve as successors and extensible companions to the FS_IOC_FSGETXATTR and FS_IOC_FSSETXATTR system calls which have started to show their age in addition to being named in a way that makes it easy to conflate them with extended attribute related operations. These syscalls allow userspace to set filesystem inode attributes on special files. One of the usage examples is the XFS quota projects. XFS has project quotas which could be attached to a directory. All new inodes in these directories inherit project ID set on parent directory. The project is created from userspace by opening and calling FS_IOC_FSSETXATTR on each inode. This is not possible for special files such as FIFO, SOCK, BLK etc. Therefore, some inodes are left with empty project ID. Those inodes then are not shown in the quota accounting but still exist in the directory. This is not critical but in the case when special files are created in the directory with already existing project quota, these new inodes inherit extended attributes. This creates a mix of special files with and without attributes. Moreover, special files with attributes don't have a possibility to become clear or change the attributes. This, in turn, prevents userspace from re-creating quota project on these existing files. In addition, these new system calls allow the implementation of additional attributes that we couldn't or didn't want to fit into the legacy ioctls anymore" * tag 'vfs-6.17-rc1.fileattr' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs: fs: tighten a sanity check in file_attr_to_fileattr() tree-wide: s/struct fileattr/struct file_kattr/g fs: introduce file_getattr and file_setattr syscalls fs: prepare for extending file_get/setattr() fs: make vfs_fileattr_[get|set] return -EOPNOTSUPP selinux: implement inode_file_[g|s]etattr hooks lsm: introduce new hooks for setting/getting inode fsxattr fs: split fileattr related helpers into separate file
This commit is contained in:
@@ -87,8 +87,8 @@ prototypes::
|
||||
int (*tmpfile) (struct mnt_idmap *, struct inode *,
|
||||
struct file *, umode_t);
|
||||
int (*fileattr_set)(struct mnt_idmap *idmap,
|
||||
struct dentry *dentry, struct fileattr *fa);
|
||||
int (*fileattr_get)(struct dentry *dentry, struct fileattr *fa);
|
||||
struct dentry *dentry, struct file_kattr *fa);
|
||||
int (*fileattr_get)(struct dentry *dentry, struct file_kattr *fa);
|
||||
struct posix_acl * (*get_acl)(struct mnt_idmap *, struct dentry *, int);
|
||||
struct offset_ctx *(*get_offset_ctx)(struct inode *inode);
|
||||
|
||||
|
||||
@@ -515,8 +515,8 @@ As of kernel 2.6.22, the following members are defined:
|
||||
struct posix_acl * (*get_acl)(struct mnt_idmap *, struct dentry *, int);
|
||||
int (*set_acl)(struct mnt_idmap *, struct dentry *, struct posix_acl *, int);
|
||||
int (*fileattr_set)(struct mnt_idmap *idmap,
|
||||
struct dentry *dentry, struct fileattr *fa);
|
||||
int (*fileattr_get)(struct dentry *dentry, struct fileattr *fa);
|
||||
struct dentry *dentry, struct file_kattr *fa);
|
||||
int (*fileattr_get)(struct dentry *dentry, struct file_kattr *fa);
|
||||
struct offset_ctx *(*get_offset_ctx)(struct inode *inode);
|
||||
};
|
||||
|
||||
|
||||
@@ -507,3 +507,5 @@
|
||||
575 common listxattrat sys_listxattrat
|
||||
576 common removexattrat sys_removexattrat
|
||||
577 common open_tree_attr sys_open_tree_attr
|
||||
578 common file_getattr sys_file_getattr
|
||||
579 common file_setattr sys_file_setattr
|
||||
|
||||
@@ -482,3 +482,5 @@
|
||||
465 common listxattrat sys_listxattrat
|
||||
466 common removexattrat sys_removexattrat
|
||||
467 common open_tree_attr sys_open_tree_attr
|
||||
468 common file_getattr sys_file_getattr
|
||||
469 common file_setattr sys_file_setattr
|
||||
|
||||
@@ -479,3 +479,5 @@
|
||||
465 common listxattrat sys_listxattrat
|
||||
466 common removexattrat sys_removexattrat
|
||||
467 common open_tree_attr sys_open_tree_attr
|
||||
468 common file_getattr sys_file_getattr
|
||||
469 common file_setattr sys_file_setattr
|
||||
|
||||
@@ -467,3 +467,5 @@
|
||||
465 common listxattrat sys_listxattrat
|
||||
466 common removexattrat sys_removexattrat
|
||||
467 common open_tree_attr sys_open_tree_attr
|
||||
468 common file_getattr sys_file_getattr
|
||||
469 common file_setattr sys_file_setattr
|
||||
|
||||
@@ -473,3 +473,5 @@
|
||||
465 common listxattrat sys_listxattrat
|
||||
466 common removexattrat sys_removexattrat
|
||||
467 common open_tree_attr sys_open_tree_attr
|
||||
468 common file_getattr sys_file_getattr
|
||||
469 common file_setattr sys_file_setattr
|
||||
|
||||
@@ -406,3 +406,5 @@
|
||||
465 n32 listxattrat sys_listxattrat
|
||||
466 n32 removexattrat sys_removexattrat
|
||||
467 n32 open_tree_attr sys_open_tree_attr
|
||||
468 n32 file_getattr sys_file_getattr
|
||||
469 n32 file_setattr sys_file_setattr
|
||||
|
||||
@@ -382,3 +382,5 @@
|
||||
465 n64 listxattrat sys_listxattrat
|
||||
466 n64 removexattrat sys_removexattrat
|
||||
467 n64 open_tree_attr sys_open_tree_attr
|
||||
468 n64 file_getattr sys_file_getattr
|
||||
469 n64 file_setattr sys_file_setattr
|
||||
|
||||
@@ -455,3 +455,5 @@
|
||||
465 o32 listxattrat sys_listxattrat
|
||||
466 o32 removexattrat sys_removexattrat
|
||||
467 o32 open_tree_attr sys_open_tree_attr
|
||||
468 o32 file_getattr sys_file_getattr
|
||||
469 o32 file_setattr sys_file_setattr
|
||||
|
||||
@@ -466,3 +466,5 @@
|
||||
465 common listxattrat sys_listxattrat
|
||||
466 common removexattrat sys_removexattrat
|
||||
467 common open_tree_attr sys_open_tree_attr
|
||||
468 common file_getattr sys_file_getattr
|
||||
469 common file_setattr sys_file_setattr
|
||||
|
||||
@@ -558,3 +558,5 @@
|
||||
465 common listxattrat sys_listxattrat
|
||||
466 common removexattrat sys_removexattrat
|
||||
467 common open_tree_attr sys_open_tree_attr
|
||||
468 common file_getattr sys_file_getattr
|
||||
469 common file_setattr sys_file_setattr
|
||||
|
||||
@@ -470,3 +470,5 @@
|
||||
465 common listxattrat sys_listxattrat sys_listxattrat
|
||||
466 common removexattrat sys_removexattrat sys_removexattrat
|
||||
467 common open_tree_attr sys_open_tree_attr sys_open_tree_attr
|
||||
468 common file_getattr sys_file_getattr sys_file_getattr
|
||||
469 common file_setattr sys_file_setattr sys_file_setattr
|
||||
|
||||
@@ -471,3 +471,5 @@
|
||||
465 common listxattrat sys_listxattrat
|
||||
466 common removexattrat sys_removexattrat
|
||||
467 common open_tree_attr sys_open_tree_attr
|
||||
468 common file_getattr sys_file_getattr
|
||||
469 common file_setattr sys_file_setattr
|
||||
|
||||
@@ -513,3 +513,5 @@
|
||||
465 common listxattrat sys_listxattrat
|
||||
466 common removexattrat sys_removexattrat
|
||||
467 common open_tree_attr sys_open_tree_attr
|
||||
468 common file_getattr sys_file_getattr
|
||||
469 common file_setattr sys_file_setattr
|
||||
|
||||
@@ -473,3 +473,5 @@
|
||||
465 i386 listxattrat sys_listxattrat
|
||||
466 i386 removexattrat sys_removexattrat
|
||||
467 i386 open_tree_attr sys_open_tree_attr
|
||||
468 i386 file_getattr sys_file_getattr
|
||||
469 i386 file_setattr sys_file_setattr
|
||||
|
||||
@@ -391,6 +391,8 @@
|
||||
465 common listxattrat sys_listxattrat
|
||||
466 common removexattrat sys_removexattrat
|
||||
467 common open_tree_attr sys_open_tree_attr
|
||||
468 common file_getattr sys_file_getattr
|
||||
469 common file_setattr sys_file_setattr
|
||||
|
||||
#
|
||||
# Due to a historical design error, certain syscalls are numbered differently
|
||||
|
||||
@@ -438,3 +438,5 @@
|
||||
465 common listxattrat sys_listxattrat
|
||||
466 common removexattrat sys_removexattrat
|
||||
467 common open_tree_attr sys_open_tree_attr
|
||||
468 common file_getattr sys_file_getattr
|
||||
469 common file_setattr sys_file_setattr
|
||||
|
||||
+2
-1
@@ -15,7 +15,8 @@ obj-y := open.o read_write.o file_table.o super.o \
|
||||
pnode.o splice.o sync.o utimes.o d_path.o \
|
||||
stack.o fs_struct.o statfs.o fs_pin.o nsfs.o \
|
||||
fs_types.o fs_context.o fs_parser.o fsopen.o init.o \
|
||||
kernel_read_file.o mnt_idmapping.o remap_range.o pidfs.o
|
||||
kernel_read_file.o mnt_idmapping.o remap_range.o pidfs.o \
|
||||
file_attr.o
|
||||
|
||||
obj-$(CONFIG_BUFFER_HEAD) += buffer.o mpage.o
|
||||
obj-$(CONFIG_PROC_FS) += proc_namespace.o
|
||||
|
||||
+2
-2
@@ -1617,7 +1617,7 @@ static const __maybe_unused unsigned bch_flags_to_xflags[] = {
|
||||
};
|
||||
|
||||
static int bch2_fileattr_get(struct dentry *dentry,
|
||||
struct fileattr *fa)
|
||||
struct file_kattr *fa)
|
||||
{
|
||||
struct bch_inode_info *inode = to_bch_ei(d_inode(dentry));
|
||||
struct bch_fs *c = inode->v.i_sb->s_fs_info;
|
||||
@@ -1680,7 +1680,7 @@ static int fssetxattr_inode_update_fn(struct btree_trans *trans,
|
||||
|
||||
static int bch2_fileattr_set(struct mnt_idmap *idmap,
|
||||
struct dentry *dentry,
|
||||
struct fileattr *fa)
|
||||
struct file_kattr *fa)
|
||||
{
|
||||
struct bch_inode_info *inode = to_bch_ei(d_inode(dentry));
|
||||
struct bch_fs *c = inode->v.i_sb->s_fs_info;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user