hc
2024-05-10 37f49e37ab4cb5d0bc4c60eb5c6d4dd57db767bb
kernel/fs/internal.h
....@@ -1,12 +1,8 @@
1
+/* SPDX-License-Identifier: GPL-2.0-or-later */
12 /* fs/ internal definitions
23 *
34 * Copyright (C) 2006 Red Hat, Inc. All Rights Reserved.
45 * Written by David Howells (dhowells@redhat.com)
5
- *
6
- * This program is free software; you can redistribute it and/or
7
- * modify it under the terms of the GNU General Public License
8
- * as published by the Free Software Foundation; either version
9
- * 2 of the License, or (at your option) any later version.
106 */
117
128 struct super_block;
....@@ -17,6 +13,8 @@
1713 struct path;
1814 struct mount;
1915 struct shrink_control;
16
+struct fs_context;
17
+struct user_namespace;
2018
2119 /*
2220 * block_dev.c
....@@ -25,7 +23,9 @@
2523 extern void __init bdev_cache_init(void);
2624
2725 extern int __sync_blockdev(struct block_device *bdev, int wait);
28
-
26
+void iterate_bdevs(void (*)(struct block_device *, void *), void *);
27
+void emergency_thaw_bdev(struct super_block *sb);
28
+void bd_forget(struct inode *inode);
2929 #else
3030 static inline void bdev_cache_init(void)
3131 {
....@@ -35,16 +35,24 @@
3535 {
3636 return 0;
3737 }
38
-#endif
38
+static inline void iterate_bdevs(void (*f)(struct block_device *, void *),
39
+ void *arg)
40
+{
41
+}
42
+static inline int emergency_thaw_bdev(struct super_block *sb)
43
+{
44
+ return 0;
45
+}
46
+static inline void bd_forget(struct inode *inode)
47
+{
48
+}
49
+#endif /* CONFIG_BLOCK */
3950
4051 /*
4152 * buffer.c
4253 */
43
-extern void guard_bio_eod(int rw, struct bio *bio);
4454 extern int __block_write_begin_int(struct page *page, loff_t pos, unsigned len,
4555 get_block_t *get_block, struct iomap *iomap);
46
-int __generic_write_end(struct inode *inode, loff_t pos, unsigned copied,
47
- struct page *page);
4856
4957 /*
5058 * char_dev.c
....@@ -52,25 +60,29 @@
5260 extern void __init chrdev_init(void);
5361
5462 /*
63
+ * fs_context.c
64
+ */
65
+extern const struct fs_context_operations legacy_fs_context_ops;
66
+extern int parse_monolithic_mount_data(struct fs_context *, void *);
67
+extern void vfs_clean_context(struct fs_context *fc);
68
+extern int finish_clean_context(struct fs_context *fc);
69
+
70
+/*
5571 * namei.c
5672 */
57
-extern int user_path_mountpoint_at(int, const char __user *, unsigned int, struct path *);
58
-long do_mknodat(int dfd, const char __user *filename, umode_t mode,
59
- unsigned int dev);
60
-long do_mkdirat(int dfd, const char __user *pathname, umode_t mode);
61
-long do_rmdir(int dfd, const char __user *pathname);
73
+extern int filename_lookup(int dfd, struct filename *name, unsigned flags,
74
+ struct path *path, struct path *root);
75
+extern int vfs_path_lookup(struct dentry *, struct vfsmount *,
76
+ const char *, unsigned int, struct path *);
77
+long do_rmdir(int dfd, struct filename *name);
6278 long do_unlinkat(int dfd, struct filename *name);
63
-long do_symlinkat(const char __user *oldname, int newdfd,
64
- const char __user *newname);
65
-int do_linkat(int olddfd, const char __user *oldname, int newdfd,
66
- const char __user *newname, int flags);
79
+int may_linkat(struct path *link);
80
+int do_renameat2(int olddfd, struct filename *oldname, int newdfd,
81
+ struct filename *newname, unsigned int flags);
6782
6883 /*
6984 * namespace.c
7085 */
71
-extern void *copy_mount_options(const void __user *);
72
-extern char *copy_mount_string(const void __user *);
73
-
7486 extern struct vfsmount *lookup_mnt(const struct path *);
7587 extern int finish_automount(struct vfsmount *, struct path *);
7688
....@@ -80,6 +92,12 @@
8092
8193 extern int __mnt_want_write_file(struct file *);
8294 extern void __mnt_drop_write_file(struct file *);
95
+
96
+extern void dissolve_on_fput(struct vfsmount *);
97
+
98
+int path_mount(const char *dev_name, struct path *path,
99
+ const char *type_page, unsigned long flags, void *data_page);
100
+int path_umount(struct path *path, int flags);
83101
84102 /*
85103 * fs_struct.c
....@@ -95,13 +113,10 @@
95113 /*
96114 * super.c
97115 */
98
-extern int do_remount_sb(struct super_block *, int, void *, int);
99
-extern int do_remount_sb2(struct vfsmount *, struct super_block *, int,
100
- void *, int);
116
+extern int reconfigure_super(struct fs_context *);
101117 extern bool trylock_super(struct super_block *sb);
102
-extern struct dentry *mount_fs(struct file_system_type *,
103
- int, const char *, struct vfsmount *, void *);
104118 extern struct super_block *user_get_super(dev_t);
119
+extern bool mount_capable(struct fs_context *);
105120
106121 /*
107122 * open.c
....@@ -117,13 +132,15 @@
117132 const struct open_flags *op);
118133 extern struct file *do_file_open_root(struct dentry *, struct vfsmount *,
119134 const char *, const struct open_flags *);
135
+extern struct open_how build_open_how(int flags, umode_t mode);
136
+extern int build_open_flags(const struct open_how *how, struct open_flags *op);
137
+extern int __close_fd_get_file(unsigned int fd, struct file **res);
120138
121139 long do_sys_ftruncate(unsigned int fd, loff_t length, int small);
122
-long do_faccessat(int dfd, const char __user *filename, int mode);
123
-int do_fchmodat(int dfd, const char __user *filename, umode_t mode);
140
+int chmod_common(const struct path *path, umode_t mode);
124141 int do_fchownat(int dfd, const char __user *filename, uid_t user, gid_t group,
125142 int flag);
126
-
143
+int chown_common(const struct path *path, uid_t user, gid_t group);
127144 extern int vfs_open(const struct path *, struct file *);
128145
129146 /*
....@@ -132,22 +149,26 @@
132149 extern long prune_icache_sb(struct super_block *sb, struct shrink_control *sc);
133150 extern void inode_add_lru(struct inode *inode);
134151 extern int dentry_needs_remove_privs(struct dentry *dentry);
152
+bool in_group_or_capable(const struct inode *inode, kgid_t gid);
153
+void lock_two_inodes(struct inode *inode1, struct inode *inode2,
154
+ unsigned subclass1, unsigned subclass2);
135155
136156 /*
137157 * fs-writeback.c
138158 */
139
-extern void inode_io_list_del(struct inode *inode);
140
-
141159 extern long get_nr_dirty_inodes(void);
142160 extern int invalidate_inodes(struct super_block *, bool);
143161
144162 /*
145163 * dcache.c
146164 */
147
-extern struct dentry *__d_alloc(struct super_block *, const struct qstr *);
148165 extern int d_set_mounted(struct dentry *dentry);
149166 extern long prune_dcache_sb(struct super_block *sb, struct shrink_control *sc);
150167 extern struct dentry *d_alloc_cursor(struct dentry *);
168
+extern struct dentry * d_alloc_pseudo(struct super_block *, const struct qstr *);
169
+extern char *simple_dname(struct dentry *, char *, int);
170
+extern void dput_to_list(struct dentry *, struct list_head *);
171
+extern void shrink_dentry_list(struct list_head *);
151172
152173 /*
153174 * read_write.c
....@@ -170,21 +191,16 @@
170191 */
171192 extern const struct dentry_operations ns_dentry_operations;
172193
173
-/*
174
- * fs/ioctl.c
175
- */
176
-extern int do_vfs_ioctl(struct file *file, unsigned int fd, unsigned int cmd,
177
- unsigned long arg);
178
-
179
-/*
180
- * iomap support:
181
- */
182
-typedef loff_t (*iomap_actor_t)(struct inode *inode, loff_t pos, loff_t len,
183
- void *data, struct iomap *iomap);
184
-
185
-loff_t iomap_apply(struct inode *inode, loff_t pos, loff_t length,
186
- unsigned flags, const struct iomap_ops *ops, void *data,
187
- iomap_actor_t actor);
188
-
189194 /* direct-io.c: */
190195 int sb_init_dio_done_wq(struct super_block *sb);
196
+
197
+/*
198
+ * fs/stat.c:
199
+ */
200
+int do_statx(int dfd, const char __user *filename, unsigned flags,
201
+ unsigned int mask, struct statx __user *buffer);
202
+
203
+/*
204
+ * fs/attr.c
205
+ */
206
+int setattr_should_drop_sgid(const struct inode *inode);