1
2#ifndef _LINUX_FS_H
3#define _LINUX_FS_H
4
5#include <linux/linkage.h>
6#include <linux/wait_bit.h>
7#include <linux/kdev_t.h>
8#include <linux/dcache.h>
9#include <linux/path.h>
10#include <linux/stat.h>
11#include <linux/cache.h>
12#include <linux/list.h>
13#include <linux/list_lru.h>
14#include <linux/llist.h>
15#include <linux/radix-tree.h>
16#include <linux/xarray.h>
17#include <linux/rbtree.h>
18#include <linux/init.h>
19#include <linux/pid.h>
20#include <linux/bug.h>
21#include <linux/mutex.h>
22#include <linux/rwsem.h>
23#include <linux/mm_types.h>
24#include <linux/capability.h>
25#include <linux/semaphore.h>
26#include <linux/fcntl.h>
27#include <linux/rculist_bl.h>
28#include <linux/atomic.h>
29#include <linux/shrinker.h>
30#include <linux/migrate_mode.h>
31#include <linux/uidgid.h>
32#include <linux/lockdep.h>
33#include <linux/percpu-rwsem.h>
34#include <linux/workqueue.h>
35#include <linux/delayed_call.h>
36#include <linux/uuid.h>
37#include <linux/errseq.h>
38#include <linux/ioprio.h>
39#include <linux/fs_types.h>
40#include <linux/build_bug.h>
41#include <linux/stddef.h>
42
43#include <asm/byteorder.h>
44#include <uapi/linux/fs.h>
45
46struct backing_dev_info;
47struct bdi_writeback;
48struct bio;
49struct export_operations;
50struct fiemap_extent_info;
51struct hd_geometry;
52struct iovec;
53struct kiocb;
54struct kobject;
55struct pipe_inode_info;
56struct poll_table_struct;
57struct kstatfs;
58struct vm_area_struct;
59struct vfsmount;
60struct cred;
61struct swap_info_struct;
62struct seq_file;
63struct workqueue_struct;
64struct iov_iter;
65struct fscrypt_info;
66struct fscrypt_operations;
67struct fsverity_info;
68struct fsverity_operations;
69struct fs_context;
70struct fs_parameter_spec;
71
72extern void __init inode_init(void);
73extern void __init inode_init_early(void);
74extern void __init files_init(void);
75extern void __init files_maxfiles_init(void);
76
77extern struct files_stat_struct files_stat;
78extern unsigned long get_max_files(void);
79extern unsigned int sysctl_nr_open;
80extern struct inodes_stat_t inodes_stat;
81extern int leases_enable, lease_break_time;
82extern int sysctl_protected_symlinks;
83extern int sysctl_protected_hardlinks;
84extern int sysctl_protected_fifos;
85extern int sysctl_protected_regular;
86
87typedef __kernel_rwf_t rwf_t;
88
89struct buffer_head;
90typedef int (get_block_t)(struct inode *inode, sector_t iblock,
91 struct buffer_head *bh_result, int create);
92typedef int (dio_iodone_t)(struct kiocb *iocb, loff_t offset,
93 ssize_t bytes, void *private);
94
95#define MAY_EXEC 0x00000001
96#define MAY_WRITE 0x00000002
97#define MAY_READ 0x00000004
98#define MAY_APPEND 0x00000008
99#define MAY_ACCESS 0x00000010
100#define MAY_OPEN 0x00000020
101#define MAY_CHDIR 0x00000040
102
103#define MAY_NOT_BLOCK 0x00000080
104
105
106
107
108
109
110
111#define FMODE_READ ((__force fmode_t)0x1)
112
113#define FMODE_WRITE ((__force fmode_t)0x2)
114
115#define FMODE_LSEEK ((__force fmode_t)0x4)
116
117#define FMODE_PREAD ((__force fmode_t)0x8)
118
119#define FMODE_PWRITE ((__force fmode_t)0x10)
120
121#define FMODE_EXEC ((__force fmode_t)0x20)
122
123#define FMODE_NDELAY ((__force fmode_t)0x40)
124
125#define FMODE_EXCL ((__force fmode_t)0x80)
126
127
128#define FMODE_WRITE_IOCTL ((__force fmode_t)0x100)
129
130#define FMODE_32BITHASH ((__force fmode_t)0x200)
131
132#define FMODE_64BITHASH ((__force fmode_t)0x400)
133
134
135
136
137
138
139
140#define FMODE_NOCMTIME ((__force fmode_t)0x800)
141
142
143#define FMODE_RANDOM ((__force fmode_t)0x1000)
144
145
146#define FMODE_UNSIGNED_OFFSET ((__force fmode_t)0x2000)
147
148
149#define FMODE_PATH ((__force fmode_t)0x4000)
150
151
152#define FMODE_ATOMIC_POS ((__force fmode_t)0x8000)
153
154#define FMODE_WRITER ((__force fmode_t)0x10000)
155
156#define FMODE_CAN_READ ((__force fmode_t)0x20000)
157
158#define FMODE_CAN_WRITE ((__force fmode_t)0x40000)
159
160#define FMODE_OPENED ((__force fmode_t)0x80000)
161#define FMODE_CREATED ((__force fmode_t)0x100000)
162
163
164#define FMODE_STREAM ((__force fmode_t)0x200000)
165
166
167#define FMODE_NONOTIFY ((__force fmode_t)0x4000000)
168
169
170#define FMODE_NOWAIT ((__force fmode_t)0x8000000)
171
172
173#define FMODE_NEED_UNMOUNT ((__force fmode_t)0x10000000)
174
175
176#define FMODE_NOACCOUNT ((__force fmode_t)0x20000000)
177
178
179#define FMODE_BUF_RASYNC ((__force fmode_t)0x40000000)
180
181
182
183
184
185#define ATTR_MODE (1 << 0)
186#define ATTR_UID (1 << 1)
187#define ATTR_GID (1 << 2)
188#define ATTR_SIZE (1 << 3)
189#define ATTR_ATIME (1 << 4)
190#define ATTR_MTIME (1 << 5)
191#define ATTR_CTIME (1 << 6)
192#define ATTR_ATIME_SET (1 << 7)
193#define ATTR_MTIME_SET (1 << 8)
194#define ATTR_FORCE (1 << 9)
195#define ATTR_KILL_SUID (1 << 11)
196#define ATTR_KILL_SGID (1 << 12)
197#define ATTR_FILE (1 << 13)
198#define ATTR_KILL_PRIV (1 << 14)
199#define ATTR_OPEN (1 << 15)
200#define ATTR_TIMES_SET (1 << 16)
201#define ATTR_TOUCH (1 << 17)
202
203
204
205
206
207#define WHITEOUT_MODE 0
208#define WHITEOUT_DEV 0
209
210
211
212
213
214
215
216
217
218
219struct iattr {
220 unsigned int ia_valid;
221 umode_t ia_mode;
222 kuid_t ia_uid;
223 kgid_t ia_gid;
224 loff_t ia_size;
225 struct timespec64 ia_atime;
226 struct timespec64 ia_mtime;
227 struct timespec64 ia_ctime;
228
229
230
231
232
233
234 struct file *ia_file;
235};
236
237
238
239
240#include <linux/quota.h>
241
242
243
244
245
246#define FILESYSTEM_MAX_STACK_DEPTH 2
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274enum positive_aop_returns {
275 AOP_WRITEPAGE_ACTIVATE = 0x80000,
276 AOP_TRUNCATED_PAGE = 0x80001,
277};
278
279#define AOP_FLAG_CONT_EXPAND 0x0001
280#define AOP_FLAG_NOFS 0x0002
281
282
283
284
285
286
287struct page;
288struct address_space;
289struct writeback_control;
290struct readahead_control;
291
292
293
294
295
296enum rw_hint {
297 WRITE_LIFE_NOT_SET = 0,
298 WRITE_LIFE_NONE = RWH_WRITE_LIFE_NONE,
299 WRITE_LIFE_SHORT = RWH_WRITE_LIFE_SHORT,
300 WRITE_LIFE_MEDIUM = RWH_WRITE_LIFE_MEDIUM,
301 WRITE_LIFE_LONG = RWH_WRITE_LIFE_LONG,
302 WRITE_LIFE_EXTREME = RWH_WRITE_LIFE_EXTREME,
303};
304
305
306#define IOCB_HIPRI (__force int) RWF_HIPRI
307#define IOCB_DSYNC (__force int) RWF_DSYNC
308#define IOCB_SYNC (__force int) RWF_SYNC
309#define IOCB_NOWAIT (__force int) RWF_NOWAIT
310#define IOCB_APPEND (__force int) RWF_APPEND
311
312
313#define IOCB_EVENTFD (1 << 16)
314#define IOCB_DIRECT (1 << 17)
315#define IOCB_WRITE (1 << 18)
316
317#define IOCB_WAITQ (1 << 19)
318#define IOCB_NOIO (1 << 20)
319
320struct kiocb {
321 struct file *ki_filp;
322
323
324 randomized_struct_fields_start
325
326 loff_t ki_pos;
327 void (*ki_complete)(struct kiocb *iocb, long ret, long ret2);
328 void *private;
329 int ki_flags;
330 u16 ki_hint;
331 u16 ki_ioprio;
332 union {
333 unsigned int ki_cookie;
334 struct wait_page_queue *ki_waitq;
335 };
336
337 randomized_struct_fields_end
338};
339
340static inline bool is_sync_kiocb(struct kiocb *kiocb)
341{
342 return kiocb->ki_complete == NULL;
343}
344
345
346
347
348
349
350
351
352
353
354typedef struct {
355 size_t written;
356 size_t count;
357 union {
358 char __user *buf;
359 void *data;
360 } arg;
361 int error;
362} read_descriptor_t;
363
364typedef int (*read_actor_t)(read_descriptor_t *, struct page *,
365 unsigned long, unsigned long);
366
367struct address_space_operations {
368 int (*writepage)(struct page *page, struct writeback_control *wbc);
369 int (*readpage)(struct file *, struct page *);
370
371
372 int (*writepages)(struct address_space *, struct writeback_control *);
373
374
375 int (*set_page_dirty)(struct page *page);
376
377
378
379
380
381 int (*readpages)(struct file *filp, struct address_space *mapping,
382 struct list_head *pages, unsigned nr_pages);
383 void (*readahead)(struct readahead_control *);
384
385 int (*write_begin)(struct file *, struct address_space *mapping,
386 loff_t pos, unsigned len, unsigned flags,
387 struct page **pagep, void **fsdata);
388 int (*write_end)(struct file *, struct address_space *mapping,
389 loff_t pos, unsigned len, unsigned copied,
390 struct page *page, void *fsdata);
391
392
393 sector_t (*bmap)(struct address_space *, sector_t);
394 void (*invalidatepage) (struct page *, unsigned int, unsigned int);
395 int (*releasepage) (struct page *, gfp_t);
396 void (*freepage)(struct page *);
397 ssize_t (*direct_IO)(struct kiocb *, struct iov_iter *iter);
398
399
400
401
402 int (*migratepage) (struct address_space *,
403 struct page *, struct page *, enum migrate_mode);
404 bool (*isolate_page)(struct page *, isolate_mode_t);
405 void (*putback_page)(struct page *);
406 int (*launder_page) (struct page *);
407 int (*is_partially_uptodate) (struct page *, unsigned long,
408 unsigned long);
409 void (*is_dirty_writeback) (struct page *, bool *, bool *);
410 int (*error_remove_page)(struct address_space *, struct page *);
411
412
413 int (*swap_activate)(struct swap_info_struct *sis, struct file *file,
414 sector_t *span);
415 void (*swap_deactivate)(struct file *file);
416};
417
418extern const struct address_space_operations empty_aops;
419
420
421
422
423
424int pagecache_write_begin(struct file *, struct address_space *mapping,
425 loff_t pos, unsigned len, unsigned flags,
426 struct page **pagep, void **fsdata);
427
428int pagecache_write_end(struct file *, struct address_space *mapping,
429 loff_t pos, unsigned len, unsigned copied,
430 struct page *page, void *fsdata);
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451struct address_space {
452 struct inode *host;
453 struct xarray i_pages;
454 gfp_t gfp_mask;
455 atomic_t i_mmap_writable;
456#ifdef CONFIG_READ_ONLY_THP_FOR_FS
457
458 atomic_t nr_thps;
459#endif
460 struct rb_root_cached i_mmap;
461 struct rw_semaphore i_mmap_rwsem;
462 unsigned long nrpages;
463 unsigned long nrexceptional;
464 pgoff_t writeback_index;
465 const struct address_space_operations *a_ops;
466 unsigned long flags;
467 errseq_t wb_err;
468 spinlock_t private_lock;
469 struct list_head private_list;
470 void *private_data;
471} __attribute__((aligned(sizeof(long)))) __randomize_layout;
472
473
474
475
476
477
478
479#define PAGECACHE_TAG_DIRTY XA_MARK_0
480#define PAGECACHE_TAG_WRITEBACK XA_MARK_1
481#define PAGECACHE_TAG_TOWRITE XA_MARK_2
482
483
484
485
486static inline bool mapping_tagged(struct address_space *mapping, xa_mark_t tag)
487{
488 return xa_marked(&mapping->i_pages, tag);
489}
490
491static inline void i_mmap_lock_write(struct address_space *mapping)
492{
493 down_write(&mapping->i_mmap_rwsem);
494}
495
496static inline int i_mmap_trylock_write(struct address_space *mapping)
497{
498 return down_write_trylock(&mapping->i_mmap_rwsem);
499}
500
501static inline void i_mmap_unlock_write(struct address_space *mapping)
502{
503 up_write(&mapping->i_mmap_rwsem);
504}
505
506static inline void i_mmap_lock_read(struct address_space *mapping)
507{
508 down_read(&mapping->i_mmap_rwsem);
509}
510
511static inline void i_mmap_unlock_read(struct address_space *mapping)
512{
513 up_read(&mapping->i_mmap_rwsem);
514}
515
516static inline void i_mmap_assert_locked(struct address_space *mapping)
517{
518 lockdep_assert_held(&mapping->i_mmap_rwsem);
519}
520
521static inline void i_mmap_assert_write_locked(struct address_space *mapping)
522{
523 lockdep_assert_held_write(&mapping->i_mmap_rwsem);
524}
525
526
527
528
529static inline int mapping_mapped(struct address_space *mapping)
530{
531 return !RB_EMPTY_ROOT(&mapping->i_mmap.rb_root);
532}
533
534
535
536
537
538
539
540
541
542
543static inline int mapping_writably_mapped(struct address_space *mapping)
544{
545 return atomic_read(&mapping->i_mmap_writable) > 0;
546}
547
548static inline int mapping_map_writable(struct address_space *mapping)
549{
550 return atomic_inc_unless_negative(&mapping->i_mmap_writable) ?
551 0 : -EPERM;
552}
553
554static inline void mapping_unmap_writable(struct address_space *mapping)
555{
556 atomic_dec(&mapping->i_mmap_writable);
557}
558
559static inline int mapping_deny_writable(struct address_space *mapping)
560{
561 return atomic_dec_unless_positive(&mapping->i_mmap_writable) ?
562 0 : -EBUSY;
563}
564
565static inline void mapping_allow_writable(struct address_space *mapping)
566{
567 atomic_inc(&mapping->i_mmap_writable);
568}
569
570
571
572
573#if BITS_PER_LONG==32 && defined(CONFIG_SMP)
574#include <linux/seqlock.h>
575#define __NEED_I_SIZE_ORDERED
576#define i_size_ordered_init(inode) seqcount_init(&inode->i_size_seqcount)
577#else
578#define i_size_ordered_init(inode) do { } while (0)
579#endif
580
581struct posix_acl;
582#define ACL_NOT_CACHED ((void *)(-1))
583#define ACL_DONT_CACHE ((void *)(-3))
584
585static inline struct posix_acl *
586uncached_acl_sentinel(struct task_struct *task)
587{
588 return (void *)task + 1;
589}
590
591static inline bool
592is_uncached_acl(struct posix_acl *acl)
593{
594 return (long)acl & 1;
595}
596
597#define IOP_FASTPERM 0x0001
598#define IOP_LOOKUP 0x0002
599#define IOP_NOFOLLOW 0x0004
600#define IOP_XATTR 0x0008
601#define IOP_DEFAULT_READLINK 0x0010
602
603struct fsnotify_mark_connector;
604
605
606
607
608
609
610struct inode {
611 umode_t i_mode;
612 unsigned short i_opflags;
613 kuid_t i_uid;
614 kgid_t i_gid;
615 unsigned int i_flags;
616
617#ifdef CONFIG_FS_POSIX_ACL
618 struct posix_acl *i_acl;
619 struct posix_acl *i_default_acl;
620#endif
621
622 const struct inode_operations *i_op;
623 struct super_block *i_sb;
624 struct address_space *i_mapping;
625
626#ifdef CONFIG_SECURITY
627 void *i_security;
628#endif
629
630
631 unsigned long i_ino;
632
633
634
635
636
637
638
639 union {
640 const unsigned int i_nlink;
641 unsigned int __i_nlink;
642 };
643 dev_t i_rdev;
644 loff_t i_size;
645 struct timespec64 i_atime;
646 struct timespec64 i_mtime;
647 struct timespec64 i_ctime;
648 spinlock_t i_lock;
649 unsigned short i_bytes;
650 u8 i_blkbits;
651 u8 i_write_hint;
652 blkcnt_t i_blocks;
653
654#ifdef __NEED_I_SIZE_ORDERED
655 seqcount_t i_size_seqcount;
656#endif
657
658
659 unsigned long i_state;
660 struct rw_semaphore i_rwsem;
661
662 unsigned long dirtied_when;
663 unsigned long dirtied_time_when;
664
665 struct hlist_node i_hash;
666 struct list_head i_io_list;
667#ifdef CONFIG_CGROUP_WRITEBACK
668 struct bdi_writeback *i_wb;
669
670
671 int i_wb_frn_winner;
672 u16 i_wb_frn_avg_time;
673 u16 i_wb_frn_history;
674#endif
675 struct list_head i_lru;
676 struct list_head i_sb_list;
677 struct list_head i_wb_list;
678 union {
679 struct hlist_head i_dentry;
680 struct rcu_head i_rcu;
681 };
682 atomic64_t i_version;
683 atomic64_t i_sequence;
684 atomic_t i_count;
685 atomic_t i_dio_count;
686 atomic_t i_writecount;
687#if defined(CONFIG_IMA) || defined(CONFIG_FILE_LOCKING)
688 atomic_t i_readcount;
689#endif
690 union {
691 const struct file_operations *i_fop;
692 void (*free_inode)(struct inode *);
693 };
694 struct file_lock_context *i_flctx;
695 struct address_space i_data;
696 struct list_head i_devices;
697 union {
698 struct pipe_inode_info *i_pipe;
699 struct block_device *i_bdev;
700 struct cdev *i_cdev;
701 char *i_link;
702 unsigned i_dir_seq;
703 };
704
705 __u32 i_generation;
706
707#ifdef CONFIG_FSNOTIFY
708 __u32 i_fsnotify_mask;
709 struct fsnotify_mark_connector __rcu *i_fsnotify_marks;
710#endif
711
712#ifdef CONFIG_FS_ENCRYPTION
713 struct fscrypt_info *i_crypt_info;
714#endif
715
716#ifdef CONFIG_FS_VERITY
717 struct fsverity_info *i_verity_info;
718#endif
719
720 void *i_private;
721} __randomize_layout;
722
723struct timespec64 timestamp_truncate(struct timespec64 t, struct inode *inode);
724
725static inline unsigned int i_blocksize(const struct inode *node)
726{
727 return (1 << node->i_blkbits);
728}
729
730static inline int inode_unhashed(struct inode *inode)
731{
732 return hlist_unhashed(&inode->i_hash);
733}
734
735
736
737
738
739
740
741static inline void inode_fake_hash(struct inode *inode)
742{
743 hlist_add_fake(&inode->i_hash);
744}
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762enum inode_i_mutex_lock_class
763{
764 I_MUTEX_NORMAL,
765 I_MUTEX_PARENT,
766 I_MUTEX_CHILD,
767 I_MUTEX_XATTR,
768 I_MUTEX_NONDIR2,
769 I_MUTEX_PARENT2,
770};
771
772static inline void inode_lock(struct inode *inode)
773{
774 down_write(&inode->i_rwsem);
775}
776
777static inline void inode_unlock(struct inode *inode)
778{
779 up_write(&inode->i_rwsem);
780}
781
782static inline void inode_lock_shared(struct inode *inode)
783{
784 down_read(&inode->i_rwsem);
785}
786
787static inline void inode_unlock_shared(struct inode *inode)
788{
789 up_read(&inode->i_rwsem);
790}
791
792static inline int inode_trylock(struct inode *inode)
793{
794 return down_write_trylock(&inode->i_rwsem);
795}
796
797static inline int inode_trylock_shared(struct inode *inode)
798{
799 return down_read_trylock(&inode->i_rwsem);
800}
801
802static inline int inode_is_locked(struct inode *inode)
803{
804 return rwsem_is_locked(&inode->i_rwsem);
805}
806
807static inline void inode_lock_nested(struct inode *inode, unsigned subclass)
808{
809 down_write_nested(&inode->i_rwsem, subclass);
810}
811
812static inline void inode_lock_shared_nested(struct inode *inode, unsigned subclass)
813{
814 down_read_nested(&inode->i_rwsem, subclass);
815}
816
817void lock_two_nondirectories(struct inode *, struct inode*);
818void unlock_two_nondirectories(struct inode *, struct inode*);
819
820
821
822
823
824
825
826
827
828
829
830static inline loff_t i_size_read(const struct inode *inode)
831{
832#if BITS_PER_LONG==32 && defined(CONFIG_SMP)
833 loff_t i_size;
834 unsigned int seq;
835
836 do {
837 seq = read_seqcount_begin(&inode->i_size_seqcount);
838 i_size = inode->i_size;
839 } while (read_seqcount_retry(&inode->i_size_seqcount, seq));
840 return i_size;
841#elif BITS_PER_LONG==32 && defined(CONFIG_PREEMPTION)
842 loff_t i_size;
843
844 preempt_disable();
845 i_size = inode->i_size;
846 preempt_enable();
847 return i_size;
848#else
849 return inode->i_size;
850#endif
851}
852
853
854
855
856
857
858static inline void i_size_write(struct inode *inode, loff_t i_size)
859{
860#if BITS_PER_LONG==32 && defined(CONFIG_SMP)
861 preempt_disable();
862 write_seqcount_begin(&inode->i_size_seqcount);
863 inode->i_size = i_size;
864 write_seqcount_end(&inode->i_size_seqcount);
865 preempt_enable();
866#elif BITS_PER_LONG==32 && defined(CONFIG_PREEMPTION)
867 preempt_disable();
868 inode->i_size = i_size;
869 preempt_enable();
870#else
871 inode->i_size = i_size;
872#endif
873}
874
875static inline unsigned iminor(const struct inode *inode)
876{
877 return MINOR(inode->i_rdev);
878}
879
880static inline unsigned imajor(const struct inode *inode)
881{
882 return MAJOR(inode->i_rdev);
883}
884
885struct fown_struct {
886 rwlock_t lock;
887 struct pid *pid;
888 enum pid_type pid_type;
889 kuid_t uid, euid;
890 int signum;
891};
892
893
894
895
896struct file_ra_state {
897 pgoff_t start;
898 unsigned int size;
899 unsigned int async_size;
900
901
902 unsigned int ra_pages;
903 unsigned int mmap_miss;
904 loff_t prev_pos;
905};
906
907
908
909
910static inline int ra_has_index(struct file_ra_state *ra, pgoff_t index)
911{
912 return (index >= ra->start &&
913 index < ra->start + ra->size);
914}
915
916struct file {
917 union {
918 struct llist_node fu_llist;
919 struct rcu_head fu_rcuhead;
920 } f_u;
921 struct path f_path;
922 struct inode *f_inode;
923 const struct file_operations *f_op;
924
925
926
927
928
929 spinlock_t f_lock;
930 enum rw_hint f_write_hint;
931 atomic_long_t f_count;
932 unsigned int f_flags;
933 fmode_t f_mode;
934 struct mutex f_pos_lock;
935 loff_t f_pos;
936 struct fown_struct f_owner;
937 const struct cred *f_cred;
938 struct file_ra_state f_ra;
939
940 u64 f_version;
941#ifdef CONFIG_SECURITY
942 void *f_security;
943#endif
944
945 void *private_data;
946
947#ifdef CONFIG_EPOLL
948
949 struct list_head f_ep_links;
950 struct list_head f_tfile_llink;
951#endif
952 struct address_space *f_mapping;
953 errseq_t f_wb_err;
954 errseq_t f_sb_err;
955} __randomize_layout
956 __attribute__((aligned(4)));
957
958struct file_handle {
959 __u32 handle_bytes;
960 int handle_type;
961
962 unsigned char f_handle[];
963};
964
965static inline struct file *get_file(struct file *f)
966{
967 atomic_long_inc(&f->f_count);
968 return f;
969}
970#define get_file_rcu_many(x, cnt) \
971 atomic_long_add_unless(&(x)->f_count, (cnt), 0)
972#define get_file_rcu(x) get_file_rcu_many((x), 1)
973#define file_count(x) atomic_long_read(&(x)->f_count)
974
975#define MAX_NON_LFS ((1UL<<31) - 1)
976
977
978
979#if BITS_PER_LONG==32
980#define MAX_LFS_FILESIZE ((loff_t)ULONG_MAX << PAGE_SHIFT)
981#elif BITS_PER_LONG==64
982#define MAX_LFS_FILESIZE ((loff_t)LLONG_MAX)
983#endif
984
985#define FL_POSIX 1
986#define FL_FLOCK 2
987#define FL_DELEG 4
988#define FL_ACCESS 8
989#define FL_EXISTS 16
990#define FL_LEASE 32
991#define FL_CLOSE 64
992#define FL_SLEEP 128
993#define FL_DOWNGRADE_PENDING 256
994#define FL_UNLOCK_PENDING 512
995#define FL_OFDLCK 1024
996#define FL_LAYOUT 2048
997
998#define FL_CLOSE_POSIX (FL_POSIX | FL_CLOSE)
999
1000
1001
1002
1003
1004#define FILE_LOCK_DEFERRED 1
1005
1006
1007typedef void *fl_owner_t;
1008
1009struct file_lock;
1010
1011struct file_lock_operations {
1012 void (*fl_copy_lock)(struct file_lock *, struct file_lock *);
1013 void (*fl_release_private)(struct file_lock *);
1014};
1015
1016struct lock_manager_operations {
1017 fl_owner_t (*lm_get_owner)(fl_owner_t);
1018 void (*lm_put_owner)(fl_owner_t);
1019 void (*lm_notify)(struct file_lock *);
1020 int (*lm_grant)(struct file_lock *, int);
1021 bool (*lm_break)(struct file_lock *);
1022 int (*lm_change)(struct file_lock *, int, struct list_head *);
1023 void (*lm_setup)(struct file_lock *, void **);
1024 bool (*lm_breaker_owns_lease)(struct file_lock *);
1025};
1026
1027struct lock_manager {
1028 struct list_head list;
1029
1030
1031
1032
1033 bool block_opens;
1034};
1035
1036struct net;
1037void locks_start_grace(struct net *, struct lock_manager *);
1038void locks_end_grace(struct lock_manager *);
1039bool locks_in_grace(struct net *);
1040bool opens_in_grace(struct net *);
1041
1042
1043#include <linux/nfs_fs_i.h>
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062struct file_lock {
1063 struct file_lock *fl_blocker;
1064 struct list_head fl_list;
1065 struct hlist_node fl_link;
1066 struct list_head fl_blocked_requests;
1067
1068
1069 struct list_head fl_blocked_member;
1070
1071
1072 fl_owner_t fl_owner;
1073 unsigned int fl_flags;
1074 unsigned char fl_type;
1075 unsigned int fl_pid;
1076 int fl_link_cpu;
1077 wait_queue_head_t fl_wait;
1078 struct file *fl_file;
1079 loff_t fl_start;
1080 loff_t fl_end;
1081
1082 struct fasync_struct * fl_fasync;
1083
1084 unsigned long fl_break_time;
1085 unsigned long fl_downgrade_time;
1086
1087 const struct file_lock_operations *fl_ops;
1088 const struct lock_manager_operations *fl_lmops;
1089 union {
1090 struct nfs_lock_info nfs_fl;
1091 struct nfs4_lock_info nfs4_fl;
1092 struct {
1093 struct list_head link;
1094 int state;
1095 unsigned int debug_id;
1096 } afs;
1097 } fl_u;
1098} __randomize_layout;
1099
1100struct file_lock_context {
1101 spinlock_t flc_lock;
1102 struct list_head flc_flock;
1103 struct list_head flc_posix;
1104 struct list_head flc_lease;
1105};
1106
1107
1108#ifndef OFFSET_MAX
1109#define INT_LIMIT(x) (~((x)1 << (sizeof(x)*8 - 1)))
1110#define OFFSET_MAX INT_LIMIT(loff_t)
1111#define OFFT_OFFSET_MAX INT_LIMIT(off_t)
1112#endif
1113
1114extern void send_sigio(struct fown_struct *fown, int fd, int band);
1115
1116#define locks_inode(f) file_inode(f)
1117
1118#ifdef CONFIG_FILE_LOCKING
1119extern int fcntl_getlk(struct file *, unsigned int, struct flock *);
1120extern int fcntl_setlk(unsigned int, struct file *, unsigned int,
1121 struct flock *);
1122
1123#if BITS_PER_LONG == 32
1124extern int fcntl_getlk64(struct file *, unsigned int, struct flock64 *);
1125extern int fcntl_setlk64(unsigned int, struct file *, unsigned int,
1126 struct flock64 *);
1127#endif
1128
1129extern int fcntl_setlease(unsigned int fd, struct file *filp, long arg);
1130extern int fcntl_getlease(struct file *filp);
1131
1132
1133void locks_free_lock_context(struct inode *inode);
1134void locks_free_lock(struct file_lock *fl);
1135extern void locks_init_lock(struct file_lock *);
1136extern struct file_lock * locks_alloc_lock(void);
1137extern void locks_copy_lock(struct file_lock *, struct file_lock *);
1138extern void locks_copy_conflock(struct file_lock *, struct file_lock *);
1139extern void locks_remove_posix(struct file *, fl_owner_t);
1140extern void locks_remove_file(struct file *);
1141extern void locks_release_private(struct file_lock *);
1142extern void posix_test_lock(struct file *, struct file_lock *);
1143extern int posix_lock_file(struct file *, struct file_lock *, struct file_lock *);
1144extern int locks_delete_block(struct file_lock *);
1145extern int vfs_test_lock(struct file *, struct file_lock *);
1146extern int vfs_lock_file(struct file *, unsigned int, struct file_lock *, struct file_lock *);
1147extern int vfs_cancel_lock(struct file *filp, struct file_lock *fl);
1148extern int locks_lock_inode_wait(struct inode *inode, struct file_lock *fl);
1149extern int __break_lease(struct inode *inode, unsigned int flags, unsigned int type);
1150extern void lease_get_mtime(struct inode *, struct timespec64 *time);
1151extern int generic_setlease(struct file *, long, struct file_lock **, void **priv);
1152extern int vfs_setlease(struct file *, long, struct file_lock **, void **);
1153extern int lease_modify(struct file_lock *, int, struct list_head *);
1154
1155struct notifier_block;
1156extern int lease_register_notifier(struct notifier_block *);
1157extern void lease_unregister_notifier(struct notifier_block *);
1158
1159struct files_struct;
1160extern void show_fd_locks(struct seq_file *f,
1161 struct file *filp, struct files_struct *files);
1162#else
1163static inline int fcntl_getlk(struct file *file, unsigned int cmd,
1164 struct flock __user *user)
1165{
1166 return -EINVAL;
1167}
1168
1169static inline int fcntl_setlk(unsigned int fd, struct file *file,
1170 unsigned int cmd, struct flock __user *user)
1171{
1172 return -EACCES;
1173}
1174
1175#if BITS_PER_LONG == 32
1176static inline int fcntl_getlk64(struct file *file, unsigned int cmd,
1177 struct flock64 __user *user)
1178{
1179 return -EINVAL;
1180}
1181
1182static inline int fcntl_setlk64(unsigned int fd, struct file *file,
1183 unsigned int cmd, struct flock64 __user *user)
1184{
1185 return -EACCES;
1186}
1187#endif
1188static inline int fcntl_setlease(unsigned int fd, struct file *filp, long arg)
1189{
1190 return -EINVAL;
1191}
1192
1193static inline int fcntl_getlease(struct file *filp)
1194{
1195 return F_UNLCK;
1196}
1197
1198static inline void
1199locks_free_lock_context(struct inode *inode)
1200{
1201}
1202
1203static inline void locks_init_lock(struct file_lock *fl)
1204{
1205 return;
1206}
1207
1208static inline void locks_copy_conflock(struct file_lock *new, struct file_lock *fl)
1209{
1210 return;
1211}
1212
1213static inline void locks_copy_lock(struct file_lock *new, struct file_lock *fl)
1214{
1215 return;
1216}
1217
1218static inline void locks_remove_posix(struct file *filp, fl_owner_t owner)
1219{
1220 return;
1221}
1222
1223static inline void locks_remove_file(struct file *filp)
1224{
1225 return;
1226}
1227
1228static inline void posix_test_lock(struct file *filp, struct file_lock *fl)
1229{
1230 return;
1231}
1232
1233static inline int posix_lock_file(struct file *filp, struct file_lock *fl,
1234 struct file_lock *conflock)
1235{
1236 return -ENOLCK;
1237}
1238
1239static inline int locks_delete_block(struct file_lock *waiter)
1240{
1241 return -ENOENT;
1242}
1243
1244static inline int vfs_test_lock(struct file *filp, struct file_lock *fl)
1245{
1246 return 0;
1247}
1248
1249static inline int vfs_lock_file(struct file *filp, unsigned int cmd,
1250 struct file_lock *fl, struct file_lock *conf)
1251{
1252 return -ENOLCK;
1253}
1254
1255static inline int vfs_cancel_lock(struct file *filp, struct file_lock *fl)
1256{
1257 return 0;
1258}
1259
1260static inline int locks_lock_inode_wait(struct inode *inode, struct file_lock *fl)
1261{
1262 return -ENOLCK;
1263}
1264
1265static inline int __break_lease(struct inode *inode, unsigned int mode, unsigned int type)
1266{
1267 return 0;
1268}
1269
1270static inline void lease_get_mtime(struct inode *inode,
1271 struct timespec64 *time)
1272{
1273 return;
1274}
1275
1276static inline int generic_setlease(struct file *filp, long arg,
1277 struct file_lock **flp, void **priv)
1278{
1279 return -EINVAL;
1280}
1281
1282static inline int vfs_setlease(struct file *filp, long arg,
1283 struct file_lock **lease, void **priv)
1284{
1285 return -EINVAL;
1286}
1287
1288static inline int lease_modify(struct file_lock *fl, int arg,
1289 struct list_head *dispose)
1290{
1291 return -EINVAL;
1292}
1293
1294struct files_struct;
1295static inline void show_fd_locks(struct seq_file *f,
1296 struct file *filp, struct files_struct *files) {}
1297#endif
1298
1299static inline struct inode *file_inode(const struct file *f)
1300{
1301 return f->f_inode;
1302}
1303
1304static inline struct dentry *file_dentry(const struct file *file)
1305{
1306 return d_real(file->f_path.dentry, file_inode(file));
1307}
1308
1309static inline int locks_lock_file_wait(struct file *filp, struct file_lock *fl)
1310{
1311 return locks_lock_inode_wait(locks_inode(filp), fl);
1312}
1313
1314struct fasync_struct {
1315 rwlock_t fa_lock;
1316 int magic;
1317 int fa_fd;
1318 struct fasync_struct *fa_next;
1319 struct file *fa_file;
1320 struct rcu_head fa_rcu;
1321};
1322
1323#define FASYNC_MAGIC 0x4601
1324
1325
1326extern int fasync_helper(int, struct file *, int, struct fasync_struct **);
1327extern struct fasync_struct *fasync_insert_entry(int, struct file *, struct fasync_struct **, struct fasync_struct *);
1328extern int fasync_remove_entry(struct file *, struct fasync_struct **);
1329extern struct fasync_struct *fasync_alloc(void);
1330extern void fasync_free(struct fasync_struct *);
1331
1332
1333extern void kill_fasync(struct fasync_struct **, int, int);
1334
1335extern void __f_setown(struct file *filp, struct pid *, enum pid_type, int force);
1336extern int f_setown(struct file *filp, unsigned long arg, int force);
1337extern void f_delown(struct file *filp);
1338extern pid_t f_getown(struct file *filp);
1339extern int send_sigurg(struct fown_struct *fown);
1340
1341
1342
1343
1344
1345#define SB_RDONLY 1
1346#define SB_NOSUID 2
1347#define SB_NODEV 4
1348#define SB_NOEXEC 8
1349#define SB_SYNCHRONOUS 16
1350#define SB_MANDLOCK 64
1351#define SB_DIRSYNC 128
1352#define SB_NOATIME 1024
1353#define SB_NODIRATIME 2048
1354#define SB_SILENT 32768
1355#define SB_POSIXACL (1<<16)
1356#define SB_INLINECRYPT (1<<17)
1357#define SB_KERNMOUNT (1<<22)
1358#define SB_I_VERSION (1<<23)
1359#define SB_LAZYTIME (1<<25)
1360
1361
1362#define SB_SUBMOUNT (1<<26)
1363#define SB_FORCE (1<<27)
1364#define SB_NOSEC (1<<28)
1365#define SB_BORN (1<<29)
1366#define SB_ACTIVE (1<<30)
1367#define SB_NOUSER (1<<31)
1368
1369
1370#define SB_ENC_STRICT_MODE_FL (1 << 0)
1371
1372#define sb_has_strict_encoding(sb) \
1373 (sb->s_encoding_flags & SB_ENC_STRICT_MODE_FL)
1374
1375
1376
1377
1378
1379#define MNT_FORCE 0x00000001
1380#define MNT_DETACH 0x00000002
1381#define MNT_EXPIRE 0x00000004
1382#define UMOUNT_NOFOLLOW 0x00000008
1383#define UMOUNT_UNUSED 0x80000000
1384
1385
1386#define SB_I_CGROUPWB 0x00000001
1387#define SB_I_NOEXEC 0x00000002
1388#define SB_I_NODEV 0x00000004
1389#define SB_I_STABLE_WRITES 0x00000008
1390
1391
1392#define SB_I_USERNS_VISIBLE 0x00000010
1393#define SB_I_IMA_UNVERIFIABLE_SIGNATURE 0x00000020
1394#define SB_I_UNTRUSTED_MOUNTER 0x00000040
1395
1396#define SB_I_SKIP_SYNC 0x00000100
1397
1398
1399enum {
1400 SB_UNFROZEN = 0,
1401 SB_FREEZE_WRITE = 1,
1402 SB_FREEZE_PAGEFAULT = 2,
1403 SB_FREEZE_FS = 3,
1404
1405 SB_FREEZE_COMPLETE = 4,
1406};
1407
1408#define SB_FREEZE_LEVELS (SB_FREEZE_COMPLETE - 1)
1409
1410struct sb_writers {
1411 int frozen;
1412 wait_queue_head_t wait_unfrozen;
1413 struct percpu_rw_semaphore rw_sem[SB_FREEZE_LEVELS];
1414};
1415
1416struct super_block {
1417 struct list_head s_list;
1418 dev_t s_dev;
1419 unsigned char s_blocksize_bits;
1420 unsigned long s_blocksize;
1421 loff_t s_maxbytes;
1422 struct file_system_type *s_type;
1423 const struct super_operations *s_op;
1424 const struct dquot_operations *dq_op;
1425 const struct quotactl_ops *s_qcop;
1426 const struct export_operations *s_export_op;
1427 unsigned long s_flags;
1428 unsigned long s_iflags;
1429 unsigned long s_magic;
1430 struct dentry *s_root;
1431 struct rw_semaphore s_umount;
1432 int s_count;
1433 atomic_t s_active;
1434#ifdef CONFIG_SECURITY
1435 void *s_security;
1436#endif
1437 const struct xattr_handler **s_xattr;
1438#ifdef CONFIG_FS_ENCRYPTION
1439 const struct fscrypt_operations *s_cop;
1440 struct key *s_master_keys;
1441#endif
1442#ifdef CONFIG_FS_VERITY
1443 const struct fsverity_operations *s_vop;
1444#endif
1445#ifdef CONFIG_UNICODE
1446 struct unicode_map *s_encoding;
1447 __u16 s_encoding_flags;
1448#endif
1449 struct hlist_bl_head s_roots;
1450 struct list_head s_mounts;
1451 struct block_device *s_bdev;
1452 struct backing_dev_info *s_bdi;
1453 struct mtd_info *s_mtd;
1454 struct hlist_node s_instances;
1455 unsigned int s_quota_types;
1456 struct quota_info s_dquot;
1457
1458 struct sb_writers s_writers;
1459
1460
1461
1462
1463
1464
1465 void *s_fs_info;
1466
1467
1468 u32 s_time_gran;
1469
1470 time64_t s_time_min;
1471 time64_t s_time_max;
1472#ifdef CONFIG_FSNOTIFY
1473 __u32 s_fsnotify_mask;
1474 struct fsnotify_mark_connector __rcu *s_fsnotify_marks;
1475#endif
1476
1477 char s_id[32];
1478 uuid_t s_uuid;
1479
1480 unsigned int s_max_links;
1481 fmode_t s_mode;
1482
1483
1484
1485
1486
1487 struct mutex s_vfs_rename_mutex;
1488
1489
1490
1491
1492
1493 const char *s_subtype;
1494
1495 const struct dentry_operations *s_d_op;
1496
1497
1498
1499
1500 int cleancache_poolid;
1501
1502 struct shrinker s_shrink;
1503
1504
1505 atomic_long_t s_remove_count;
1506
1507
1508 atomic_long_t s_fsnotify_inode_refs;
1509
1510
1511 int s_readonly_remount;
1512
1513
1514 errseq_t s_wb_err;
1515
1516
1517 struct workqueue_struct *s_dio_done_wq;
1518 struct hlist_head s_pins;
1519
1520
1521
1522
1523
1524
1525 struct user_namespace *s_user_ns;
1526
1527
1528
1529
1530
1531
1532 struct list_lru s_dentry_lru;
1533 struct list_lru s_inode_lru;
1534 struct rcu_head rcu;
1535 struct work_struct destroy_work;
1536
1537 struct mutex s_sync_lock;
1538
1539
1540
1541
1542 int s_stack_depth;
1543
1544
1545 spinlock_t s_inode_list_lock ____cacheline_aligned_in_smp;
1546 struct list_head s_inodes;
1547
1548 spinlock_t s_inode_wblist_lock;
1549 struct list_head s_inodes_wb;
1550} __randomize_layout;
1551
1552
1553
1554
1555
1556
1557static inline uid_t i_uid_read(const struct inode *inode)
1558{
1559 return from_kuid(inode->i_sb->s_user_ns, inode->i_uid);
1560}
1561
1562static inline gid_t i_gid_read(const struct inode *inode)
1563{
1564 return from_kgid(inode->i_sb->s_user_ns, inode->i_gid);
1565}
1566
1567static inline void i_uid_write(struct inode *inode, uid_t uid)
1568{
1569 inode->i_uid = make_kuid(inode->i_sb->s_user_ns, uid);
1570}
1571
1572static inline void i_gid_write(struct inode *inode, gid_t gid)
1573{
1574 inode->i_gid = make_kgid(inode->i_sb->s_user_ns, gid);
1575}
1576
1577extern struct timespec64 current_time(struct inode *inode);
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587static inline void __sb_end_write(struct super_block *sb, int level)
1588{
1589 percpu_up_read(sb->s_writers.rw_sem + level-1);
1590}
1591
1592static inline void __sb_start_write(struct super_block *sb, int level)
1593{
1594 percpu_down_read(sb->s_writers.rw_sem + level - 1);
1595}
1596
1597static inline bool __sb_start_write_trylock(struct super_block *sb, int level)
1598{
1599 return percpu_down_read_trylock(sb->s_writers.rw_sem + level - 1);
1600}
1601
1602#define __sb_writers_acquired(sb, lev) \
1603 percpu_rwsem_acquire(&(sb)->s_writers.rw_sem[(lev)-1], 1, _THIS_IP_)
1604#define __sb_writers_release(sb, lev) \
1605 percpu_rwsem_release(&(sb)->s_writers.rw_sem[(lev)-1], 1, _THIS_IP_)
1606
1607
1608
1609
1610
1611
1612
1613
1614static inline void sb_end_write(struct super_block *sb)
1615{
1616 __sb_end_write(sb, SB_FREEZE_WRITE);
1617}
1618
1619
1620
1621
1622
1623
1624
1625
1626static inline void sb_end_pagefault(struct super_block *sb)
1627{
1628 __sb_end_write(sb, SB_FREEZE_PAGEFAULT);
1629}
1630
1631
1632
1633
1634
1635
1636
1637
1638static inline void sb_end_intwrite(struct super_block *sb)
1639{
1640 __sb_end_write(sb, SB_FREEZE_FS);
1641}
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662static inline void sb_start_write(struct super_block *sb)
1663{
1664 __sb_start_write(sb, SB_FREEZE_WRITE);
1665}
1666
1667static inline bool sb_start_write_trylock(struct super_block *sb)
1668{
1669 return __sb_start_write_trylock(sb, SB_FREEZE_WRITE);
1670}
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691static inline void sb_start_pagefault(struct super_block *sb)
1692{
1693 __sb_start_write(sb, SB_FREEZE_PAGEFAULT);
1694}
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709static inline void sb_start_intwrite(struct super_block *sb)
1710{
1711 __sb_start_write(sb, SB_FREEZE_FS);
1712}
1713
1714static inline bool sb_start_intwrite_trylock(struct super_block *sb)
1715{
1716 return __sb_start_write_trylock(sb, SB_FREEZE_FS);
1717}
1718
1719
1720extern bool inode_owner_or_capable(const struct inode *inode);
1721
1722
1723
1724
1725extern int vfs_create(struct inode *, struct dentry *, umode_t, bool);
1726extern int vfs_mkdir(struct inode *, struct dentry *, umode_t);
1727extern int vfs_mknod(struct inode *, struct dentry *, umode_t, dev_t);
1728extern int vfs_symlink(struct inode *, struct dentry *, const char *);
1729extern int vfs_link(struct dentry *, struct inode *, struct dentry *, struct inode **);
1730extern int vfs_rmdir(struct inode *, struct dentry *);
1731extern int vfs_unlink(struct inode *, struct dentry *, struct inode **);
1732extern int vfs_rename(struct inode *, struct dentry *, struct inode *, struct dentry *, struct inode **, unsigned int);
1733
1734static inline int vfs_whiteout(struct inode *dir, struct dentry *dentry)
1735{
1736 return vfs_mknod(dir, dentry, S_IFCHR | WHITEOUT_MODE, WHITEOUT_DEV);
1737}
1738
1739extern struct dentry *vfs_tmpfile(struct dentry *dentry, umode_t mode,
1740 int open_flag);
1741
1742int vfs_mkobj(struct dentry *, umode_t,
1743 int (*f)(struct dentry *, umode_t, void *),
1744 void *);
1745
1746int vfs_fchown(struct file *file, uid_t user, gid_t group);
1747int vfs_fchmod(struct file *file, umode_t mode);
1748int vfs_utimes(const struct path *path, struct timespec64 *times);
1749
1750extern long vfs_ioctl(struct file *file, unsigned int cmd, unsigned long arg);
1751
1752#ifdef CONFIG_COMPAT
1753extern long compat_ptr_ioctl(struct file *file, unsigned int cmd,
1754 unsigned long arg);
1755#else
1756#define compat_ptr_ioctl NULL
1757#endif
1758
1759
1760
1761
1762extern void inode_init_owner(struct inode *inode, const struct inode *dir,
1763 umode_t mode);
1764extern bool may_open_dev(const struct path *path);
1765
1766
1767
1768
1769
1770
1771
1772struct dir_context;
1773typedef int (*filldir_t)(struct dir_context *, const char *, int, loff_t, u64,
1774 unsigned);
1775
1776struct dir_context {
1777 filldir_t actor;
1778 loff_t pos;
1779};
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791#define NOMMU_MAP_COPY 0x00000001
1792#define NOMMU_MAP_DIRECT 0x00000008
1793#define NOMMU_MAP_READ VM_MAYREAD
1794#define NOMMU_MAP_WRITE VM_MAYWRITE
1795#define NOMMU_MAP_EXEC VM_MAYEXEC
1796
1797#define NOMMU_VMFLAGS \
1798 (NOMMU_MAP_READ | NOMMU_MAP_WRITE | NOMMU_MAP_EXEC)
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808#define REMAP_FILE_DEDUP (1 << 0)
1809#define REMAP_FILE_CAN_SHORTEN (1 << 1)
1810
1811
1812
1813
1814
1815
1816
1817
1818#define REMAP_FILE_ADVISORY (REMAP_FILE_CAN_SHORTEN)
1819
1820struct iov_iter;
1821
1822struct file_operations {
1823 struct module *owner;
1824 loff_t (*llseek) (struct file *, loff_t, int);
1825 ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
1826 ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);
1827 ssize_t (*read_iter) (struct kiocb *, struct iov_iter *);
1828 ssize_t (*write_iter) (struct kiocb *, struct iov_iter *);
1829 int (*iopoll)(struct kiocb *kiocb, bool spin);
1830 int (*iterate) (struct file *, struct dir_context *);
1831 int (*iterate_shared) (struct file *, struct dir_context *);
1832 __poll_t (*poll) (struct file *, struct poll_table_struct *);
1833 long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
1834 long (*compat_ioctl) (struct file *, unsigned int, unsigned long);
1835 int (*mmap) (struct file *, struct vm_area_struct *);
1836 unsigned long mmap_supported_flags;
1837 int (*open) (struct inode *, struct file *);
1838 int (*flush) (struct file *, fl_owner_t id);
1839 int (*release) (struct inode *, struct file *);
1840 int (*fsync) (struct file *, loff_t, loff_t, int datasync);
1841 int (*fasync) (int, struct file *, int);
1842 int (*lock) (struct file *, int, struct file_lock *);
1843 ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int);
1844 unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
1845 int (*check_flags)(int);
1846 int (*flock) (struct file *, int, struct file_lock *);
1847 ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int);
1848 ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int);
1849 int (*setlease)(struct file *, long, struct file_lock **, void **);
1850 long (*fallocate)(struct file *file, int mode, loff_t offset,
1851 loff_t len);
1852 void (*show_fdinfo)(struct seq_file *m, struct file *f);
1853#ifndef CONFIG_MMU
1854 unsigned (*mmap_capabilities)(struct file *);
1855#endif
1856 ssize_t (*copy_file_range)(struct file *, loff_t, struct file *,
1857 loff_t, size_t, unsigned int);
1858 loff_t (*remap_file_range)(struct file *file_in, loff_t pos_in,
1859 struct file *file_out, loff_t pos_out,
1860 loff_t len, unsigned int remap_flags);
1861 int (*fadvise)(struct file *, loff_t, loff_t, int);
1862} __randomize_layout;
1863
1864struct inode_operations {
1865 struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int);
1866 const char * (*get_link) (struct dentry *, struct inode *, struct delayed_call *);
1867 int (*permission) (struct inode *, int);
1868 struct posix_acl * (*get_acl)(struct inode *, int);
1869
1870 int (*readlink) (struct dentry *, char __user *,int);
1871
1872 int (*create) (struct inode *,struct dentry *, umode_t, bool);
1873 int (*link) (struct dentry *,struct inode *,struct dentry *);
1874 int (*unlink) (struct inode *,struct dentry *);
1875 int (*symlink) (struct inode *,struct dentry *,const char *);
1876 int (*mkdir) (struct inode *,struct dentry *,umode_t);
1877 int (*rmdir) (struct inode *,struct dentry *);
1878 int (*mknod) (struct inode *,struct dentry *,umode_t,dev_t);
1879 int (*rename) (struct inode *, struct dentry *,
1880 struct inode *, struct dentry *, unsigned int);
1881 int (*setattr) (struct dentry *, struct iattr *);
1882 int (*getattr) (const struct path *, struct kstat *, u32, unsigned int);
1883 ssize_t (*listxattr) (struct dentry *, char *, size_t);
1884 int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start,
1885 u64 len);
1886 int (*update_time)(struct inode *, struct timespec64 *, int);
1887 int (*atomic_open)(struct inode *, struct dentry *,
1888 struct file *, unsigned open_flag,
1889 umode_t create_mode);
1890 int (*tmpfile) (struct inode *, struct dentry *, umode_t);
1891 int (*set_acl)(struct inode *, struct posix_acl *, int);
1892} ____cacheline_aligned;
1893
1894static inline ssize_t call_read_iter(struct file *file, struct kiocb *kio,
1895 struct iov_iter *iter)
1896{
1897 return file->f_op->read_iter(kio, iter);
1898}
1899
1900static inline ssize_t call_write_iter(struct file *file, struct kiocb *kio,
1901 struct iov_iter *iter)
1902{
1903 return file->f_op->write_iter(kio, iter);
1904}
1905
1906static inline int call_mmap(struct file *file, struct vm_area_struct *vma)
1907{
1908 return file->f_op->mmap(file, vma);
1909}
1910
1911extern ssize_t vfs_read(struct file *, char __user *, size_t, loff_t *);
1912extern ssize_t vfs_write(struct file *, const char __user *, size_t, loff_t *);
1913extern ssize_t vfs_copy_file_range(struct file *, loff_t , struct file *,
1914 loff_t, size_t, unsigned int);
1915extern ssize_t generic_copy_file_range(struct file *file_in, loff_t pos_in,
1916 struct file *file_out, loff_t pos_out,
1917 size_t len, unsigned int flags);
1918extern int generic_remap_file_range_prep(struct file *file_in, loff_t pos_in,
1919 struct file *file_out, loff_t pos_out,
1920 loff_t *count,
1921 unsigned int remap_flags);
1922extern loff_t do_clone_file_range(struct file *file_in, loff_t pos_in,
1923 struct file *file_out, loff_t pos_out,
1924 loff_t len, unsigned int remap_flags);
1925extern loff_t vfs_clone_file_range(struct file *file_in, loff_t pos_in,
1926 struct file *file_out, loff_t pos_out,
1927 loff_t len, unsigned int remap_flags);
1928extern int vfs_dedupe_file_range(struct file *file,
1929 struct file_dedupe_range *same);
1930extern loff_t vfs_dedupe_file_range_one(struct file *src_file, loff_t src_pos,
1931 struct file *dst_file, loff_t dst_pos,
1932 loff_t len, unsigned int remap_flags);
1933
1934
1935struct super_operations {
1936 struct inode *(*alloc_inode)(struct super_block *sb);
1937 void (*destroy_inode)(struct inode *);
1938 void (*free_inode)(struct inode *);
1939
1940 void (*dirty_inode) (struct inode *, int flags);
1941 int (*write_inode) (struct inode *, struct writeback_control *wbc);
1942 int (*drop_inode) (struct inode *);
1943 void (*evict_inode) (struct inode *);
1944 void (*put_super) (struct super_block *);
1945 int (*sync_fs)(struct super_block *sb, int wait);
1946 int (*freeze_super) (struct super_block *);
1947 int (*freeze_fs) (struct super_block *);
1948 int (*thaw_super) (struct super_block *);
1949 int (*unfreeze_fs) (struct super_block *);
1950 int (*statfs) (struct dentry *, struct kstatfs *);
1951 int (*remount_fs) (struct super_block *, int *, char *);
1952 void (*umount_begin) (struct super_block *);
1953
1954 int (*show_options)(struct seq_file *, struct dentry *);
1955 int (*show_devname)(struct seq_file *, struct dentry *);
1956 int (*show_path)(struct seq_file *, struct dentry *);
1957 int (*show_stats)(struct seq_file *, struct dentry *);
1958#ifdef CONFIG_QUOTA
1959 ssize_t (*quota_read)(struct super_block *, int, char *, size_t, loff_t);
1960 ssize_t (*quota_write)(struct super_block *, int, const char *, size_t, loff_t);
1961 struct dquot **(*get_dquots)(struct inode *);
1962#endif
1963 int (*bdev_try_to_free_page)(struct super_block*, struct page*, gfp_t);
1964 long (*nr_cached_objects)(struct super_block *,
1965 struct shrink_control *);
1966 long (*free_cached_objects)(struct super_block *,
1967 struct shrink_control *);
1968};
1969
1970
1971
1972
1973#define S_SYNC (1 << 0)
1974#define S_NOATIME (1 << 1)
1975#define S_APPEND (1 << 2)
1976#define S_IMMUTABLE (1 << 3)
1977#define S_DEAD (1 << 4)
1978#define S_NOQUOTA (1 << 5)
1979#define S_DIRSYNC (1 << 6)
1980#define S_NOCMTIME (1 << 7)
1981#define S_SWAPFILE (1 << 8)
1982#define S_PRIVATE (1 << 9)
1983#define S_IMA (1 << 10)
1984#define S_AUTOMOUNT (1 << 11)
1985#define S_NOSEC (1 << 12)
1986#ifdef CONFIG_FS_DAX
1987#define S_DAX (1 << 13)
1988#else
1989#define S_DAX 0
1990#endif
1991#define S_ENCRYPTED (1 << 14)
1992#define S_CASEFOLD (1 << 15)
1993#define S_VERITY (1 << 16)
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008#define __IS_FLG(inode, flg) ((inode)->i_sb->s_flags & (flg))
2009
2010static inline bool sb_rdonly(const struct super_block *sb) { return sb->s_flags & SB_RDONLY; }
2011#define IS_RDONLY(inode) sb_rdonly((inode)->i_sb)
2012#define IS_SYNC(inode) (__IS_FLG(inode, SB_SYNCHRONOUS) || \
2013 ((inode)->i_flags & S_SYNC))
2014#define IS_DIRSYNC(inode) (__IS_FLG(inode, SB_SYNCHRONOUS|SB_DIRSYNC) || \
2015 ((inode)->i_flags & (S_SYNC|S_DIRSYNC)))
2016#define IS_MANDLOCK(inode) __IS_FLG(inode, SB_MANDLOCK)
2017#define IS_NOATIME(inode) __IS_FLG(inode, SB_RDONLY|SB_NOATIME)
2018#define IS_I_VERSION(inode) __IS_FLG(inode, SB_I_VERSION)
2019
2020#define IS_NOQUOTA(inode) ((inode)->i_flags & S_NOQUOTA)
2021#define IS_APPEND(inode) ((inode)->i_flags & S_APPEND)
2022#define IS_IMMUTABLE(inode) ((inode)->i_flags & S_IMMUTABLE)
2023#define IS_POSIXACL(inode) __IS_FLG(inode, SB_POSIXACL)
2024
2025#define IS_DEADDIR(inode) ((inode)->i_flags & S_DEAD)
2026#define IS_NOCMTIME(inode) ((inode)->i_flags & S_NOCMTIME)
2027#define IS_SWAPFILE(inode) ((inode)->i_flags & S_SWAPFILE)
2028#define IS_PRIVATE(inode) ((inode)->i_flags & S_PRIVATE)
2029#define IS_IMA(inode) ((inode)->i_flags & S_IMA)
2030#define IS_AUTOMOUNT(inode) ((inode)->i_flags & S_AUTOMOUNT)
2031#define IS_NOSEC(inode) ((inode)->i_flags & S_NOSEC)
2032#define IS_DAX(inode) ((inode)->i_flags & S_DAX)
2033#define IS_ENCRYPTED(inode) ((inode)->i_flags & S_ENCRYPTED)
2034#define IS_CASEFOLDED(inode) ((inode)->i_flags & S_CASEFOLD)
2035#define IS_VERITY(inode) ((inode)->i_flags & S_VERITY)
2036
2037#define IS_WHITEOUT(inode) (S_ISCHR(inode->i_mode) && \
2038 (inode)->i_rdev == WHITEOUT_DEV)
2039
2040static inline bool HAS_UNMAPPED_ID(struct inode *inode)
2041{
2042 return !uid_valid(inode->i_uid) || !gid_valid(inode->i_gid);
2043}
2044
2045static inline enum rw_hint file_write_hint(struct file *file)
2046{
2047 if (file->f_write_hint != WRITE_LIFE_NOT_SET)
2048 return file->f_write_hint;
2049
2050 return file_inode(file)->i_write_hint;
2051}
2052
2053static inline int iocb_flags(struct file *file);
2054
2055static inline u16 ki_hint_validate(enum rw_hint hint)
2056{
2057 typeof(((struct kiocb *)0)->ki_hint) max_hint = -1;
2058
2059 if (hint <= max_hint)
2060 return hint;
2061 return 0;
2062}
2063
2064static inline void init_sync_kiocb(struct kiocb *kiocb, struct file *filp)
2065{
2066 *kiocb = (struct kiocb) {
2067 .ki_filp = filp,
2068 .ki_flags = iocb_flags(filp),
2069 .ki_hint = ki_hint_validate(file_write_hint(filp)),
2070 .ki_ioprio = get_current_ioprio(),
2071 };
2072}
2073
2074static inline void kiocb_clone(struct kiocb *kiocb, struct kiocb *kiocb_src,
2075 struct file *filp)
2076{
2077 *kiocb = (struct kiocb) {
2078 .ki_filp = filp,
2079 .ki_flags = kiocb_src->ki_flags,
2080 .ki_hint = kiocb_src->ki_hint,
2081 .ki_ioprio = kiocb_src->ki_ioprio,
2082 .ki_pos = kiocb_src->ki_pos,
2083 };
2084}
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155#define I_DIRTY_SYNC (1 << 0)
2156#define I_DIRTY_DATASYNC (1 << 1)
2157#define I_DIRTY_PAGES (1 << 2)
2158#define __I_NEW 3
2159#define I_NEW (1 << __I_NEW)
2160#define I_WILL_FREE (1 << 4)
2161#define I_FREEING (1 << 5)
2162#define I_CLEAR (1 << 6)
2163#define __I_SYNC 7
2164#define I_SYNC (1 << __I_SYNC)
2165#define I_REFERENCED (1 << 8)
2166#define __I_DIO_WAKEUP 9
2167#define I_DIO_WAKEUP (1 << __I_DIO_WAKEUP)
2168#define I_LINKABLE (1 << 10)
2169#define I_DIRTY_TIME (1 << 11)
2170#define I_WB_SWITCH (1 << 13)
2171#define I_OVL_INUSE (1 << 14)
2172#define I_CREATING (1 << 15)
2173#define I_DONTCACHE (1 << 16)
2174#define I_SYNC_QUEUED (1 << 17)
2175
2176#define I_DIRTY_INODE (I_DIRTY_SYNC | I_DIRTY_DATASYNC)
2177#define I_DIRTY (I_DIRTY_INODE | I_DIRTY_PAGES)
2178#define I_DIRTY_ALL (I_DIRTY | I_DIRTY_TIME)
2179
2180extern void __mark_inode_dirty(struct inode *, int);
2181static inline void mark_inode_dirty(struct inode *inode)
2182{
2183 __mark_inode_dirty(inode, I_DIRTY);
2184}
2185
2186static inline void mark_inode_dirty_sync(struct inode *inode)
2187{
2188 __mark_inode_dirty(inode, I_DIRTY_SYNC);
2189}
2190
2191extern void inc_nlink(struct inode *inode);
2192extern void drop_nlink(struct inode *inode);
2193extern void clear_nlink(struct inode *inode);
2194extern void set_nlink(struct inode *inode, unsigned int nlink);
2195
2196static inline void inode_inc_link_count(struct inode *inode)
2197{
2198 inc_nlink(inode);
2199 mark_inode_dirty(inode);
2200}
2201
2202static inline void inode_dec_link_count(struct inode *inode)
2203{
2204 drop_nlink(inode);
2205 mark_inode_dirty(inode);
2206}
2207
2208enum file_time_flags {
2209 S_ATIME = 1,
2210 S_MTIME = 2,
2211 S_CTIME = 4,
2212 S_VERSION = 8,
2213};
2214
2215extern bool atime_needs_update(const struct path *, struct inode *);
2216extern void touch_atime(const struct path *);
2217static inline void file_accessed(struct file *file)
2218{
2219 if (!(file->f_flags & O_NOATIME))
2220 touch_atime(&file->f_path);
2221}
2222
2223extern int file_modified(struct file *file);
2224
2225int sync_inode(struct inode *inode, struct writeback_control *wbc);
2226int sync_inode_metadata(struct inode *inode, int wait);
2227
2228struct file_system_type {
2229 const char *name;
2230 int fs_flags;
2231#define FS_REQUIRES_DEV 1
2232#define FS_BINARY_MOUNTDATA 2
2233#define FS_HAS_SUBTYPE 4
2234#define FS_USERNS_MOUNT 8
2235#define FS_DISALLOW_NOTIFY_PERM 16
2236#define FS_THP_SUPPORT 8192
2237#define FS_RENAME_DOES_D_MOVE 32768
2238 int (*init_fs_context)(struct fs_context *);
2239 const struct fs_parameter_spec *parameters;
2240 struct dentry *(*mount) (struct file_system_type *, int,
2241 const char *, void *);
2242 void (*kill_sb) (struct super_block *);
2243 struct module *owner;
2244 struct file_system_type * next;
2245 struct hlist_head fs_supers;
2246
2247 struct lock_class_key s_lock_key;
2248 struct lock_class_key s_umount_key;
2249 struct lock_class_key s_vfs_rename_key;
2250 struct lock_class_key s_writers_key[SB_FREEZE_LEVELS];
2251
2252 struct lock_class_key i_lock_key;
2253 struct lock_class_key i_mutex_key;
2254 struct lock_class_key i_mutex_dir_key;
2255};
2256
2257#define MODULE_ALIAS_FS(NAME) MODULE_ALIAS("fs-" NAME)
2258
2259extern struct dentry *mount_bdev(struct file_system_type *fs_type,
2260 int flags, const char *dev_name, void *data,
2261 int (*fill_super)(struct super_block *, void *, int));
2262extern struct dentry *mount_single(struct file_system_type *fs_type,
2263 int flags, void *data,
2264 int (*fill_super)(struct super_block *, void *, int));
2265extern struct dentry *mount_nodev(struct file_system_type *fs_type,
2266 int flags, void *data,
2267 int (*fill_super)(struct super_block *, void *, int));
2268extern struct dentry *mount_subtree(struct vfsmount *mnt, const char *path);
2269void generic_shutdown_super(struct super_block *sb);
2270void kill_block_super(struct super_block *sb);
2271void kill_anon_super(struct super_block *sb);
2272void kill_litter_super(struct super_block *sb);
2273void deactivate_super(struct super_block *sb);
2274void deactivate_locked_super(struct super_block *sb);
2275int set_anon_super(struct super_block *s, void *data);
2276int set_anon_super_fc(struct super_block *s, struct fs_context *fc);
2277int get_anon_bdev(dev_t *);
2278void free_anon_bdev(dev_t);
2279struct super_block *sget_fc(struct fs_context *fc,
2280 int (*test)(struct super_block *, struct fs_context *),
2281 int (*set)(struct super_block *, struct fs_context *));
2282struct super_block *sget(struct file_system_type *type,
2283 int (*test)(struct super_block *,void *),
2284 int (*set)(struct super_block *,void *),
2285 int flags, void *data);
2286
2287
2288#define fops_get(fops) \
2289 (((fops) && try_module_get((fops)->owner) ? (fops) : NULL))
2290#define fops_put(fops) \
2291 do { if (fops) module_put((fops)->owner); } while(0)
2292
2293
2294
2295
2296
2297#define replace_fops(f, fops) \
2298 do { \
2299 struct file *__file = (f); \
2300 fops_put(__file->f_op); \
2301 BUG_ON(!(__file->f_op = (fops))); \
2302 } while(0)
2303
2304extern int register_filesystem(struct file_system_type *);
2305extern int unregister_filesystem(struct file_system_type *);
2306extern struct vfsmount *kern_mount(struct file_system_type *);
2307extern void kern_unmount(struct vfsmount *mnt);
2308extern int may_umount_tree(struct vfsmount *);
2309extern int may_umount(struct vfsmount *);
2310extern long do_mount(const char *, const char __user *,
2311 const char *, unsigned long, void *);
2312extern struct vfsmount *collect_mounts(const struct path *);
2313extern void drop_collected_mounts(struct vfsmount *);
2314extern int iterate_mounts(int (*)(struct vfsmount *, void *), void *,
2315 struct vfsmount *);
2316extern int vfs_statfs(const struct path *, struct kstatfs *);
2317extern int user_statfs(const char __user *, struct kstatfs *);
2318extern int fd_statfs(int, struct kstatfs *);
2319extern int freeze_super(struct super_block *super);
2320extern int thaw_super(struct super_block *super);
2321extern bool our_mnt(struct vfsmount *mnt);
2322extern __printf(2, 3)
2323int super_setup_bdi_name(struct super_block *sb, char *fmt, ...);
2324extern int super_setup_bdi(struct super_block *sb);
2325
2326extern int current_umask(void);
2327
2328extern void ihold(struct inode * inode);
2329extern void iput(struct inode *);
2330extern int generic_update_time(struct inode *, struct timespec64 *, int);
2331
2332
2333extern struct kobject *fs_kobj;
2334
2335#define MAX_RW_COUNT (INT_MAX & PAGE_MASK)
2336
2337#ifdef CONFIG_MANDATORY_FILE_LOCKING
2338extern int locks_mandatory_locked(struct file *);
2339extern int locks_mandatory_area(struct inode *, struct file *, loff_t, loff_t, unsigned char);
2340
2341
2342
2343
2344
2345
2346static inline int __mandatory_lock(struct inode *ino)
2347{
2348 return (ino->i_mode & (S_ISGID | S_IXGRP)) == S_ISGID;
2349}
2350
2351
2352
2353
2354
2355
2356static inline int mandatory_lock(struct inode *ino)
2357{
2358 return IS_MANDLOCK(ino) && __mandatory_lock(ino);
2359}
2360
2361static inline int locks_verify_locked(struct file *file)
2362{
2363 if (mandatory_lock(locks_inode(file)))
2364 return locks_mandatory_locked(file);
2365 return 0;
2366}
2367
2368static inline int locks_verify_truncate(struct inode *inode,
2369 struct file *f,
2370 loff_t size)
2371{
2372 if (!inode->i_flctx || !mandatory_lock(inode))
2373 return 0;
2374
2375 if (size < inode->i_size) {
2376 return locks_mandatory_area(inode, f, size, inode->i_size - 1,
2377 F_WRLCK);
2378 } else {
2379 return locks_mandatory_area(inode, f, inode->i_size, size - 1,
2380 F_WRLCK);
2381 }
2382}
2383
2384#else
2385
2386static inline int locks_mandatory_locked(struct file *file)
2387{
2388 return 0;
2389}
2390
2391static inline int locks_mandatory_area(struct inode *inode, struct file *filp,
2392 loff_t start, loff_t end, unsigned char type)
2393{
2394 return 0;
2395}
2396
2397static inline int __mandatory_lock(struct inode *inode)
2398{
2399 return 0;
2400}
2401
2402static inline int mandatory_lock(struct inode *inode)
2403{
2404 return 0;
2405}
2406
2407static inline int locks_verify_locked(struct file *file)
2408{
2409 return 0;
2410}
2411
2412static inline int locks_verify_truncate(struct inode *inode, struct file *filp,
2413 size_t size)
2414{
2415 return 0;
2416}
2417
2418#endif
2419
2420
2421#ifdef CONFIG_FILE_LOCKING
2422static inline int break_lease(struct inode *inode, unsigned int mode)
2423{
2424
2425
2426
2427
2428
2429
2430 smp_mb();
2431 if (inode->i_flctx && !list_empty_careful(&inode->i_flctx->flc_lease))
2432 return __break_lease(inode, mode, FL_LEASE);
2433 return 0;
2434}
2435
2436static inline int break_deleg(struct inode *inode, unsigned int mode)
2437{
2438
2439
2440
2441
2442
2443
2444 smp_mb();
2445 if (inode->i_flctx && !list_empty_careful(&inode->i_flctx->flc_lease))
2446 return __break_lease(inode, mode, FL_DELEG);
2447 return 0;
2448}
2449
2450static inline int try_break_deleg(struct inode *inode, struct inode **delegated_inode)
2451{
2452 int ret;
2453
2454 ret = break_deleg(inode, O_WRONLY|O_NONBLOCK);
2455 if (ret == -EWOULDBLOCK && delegated_inode) {
2456 *delegated_inode = inode;
2457 ihold(inode);
2458 }
2459 return ret;
2460}
2461
2462static inline int break_deleg_wait(struct inode **delegated_inode)
2463{
2464 int ret;
2465
2466 ret = break_deleg(*delegated_inode, O_WRONLY);
2467 iput(*delegated_inode);
2468 *delegated_inode = NULL;
2469 return ret;
2470}
2471
2472static inline int break_layout(struct inode *inode, bool wait)
2473{
2474 smp_mb();
2475 if (inode->i_flctx && !list_empty_careful(&inode->i_flctx->flc_lease))
2476 return __break_lease(inode,
2477 wait ? O_WRONLY : O_WRONLY | O_NONBLOCK,
2478 FL_LAYOUT);
2479 return 0;
2480}
2481
2482#else
2483static inline int break_lease(struct inode *inode, unsigned int mode)
2484{
2485 return 0;
2486}
2487
2488static inline int break_deleg(struct inode *inode, unsigned int mode)
2489{
2490 return 0;
2491}
2492
2493static inline int try_break_deleg(struct inode *inode, struct inode **delegated_inode)
2494{
2495 return 0;
2496}
2497
2498static inline int break_deleg_wait(struct inode **delegated_inode)
2499{
2500 BUG();
2501 return 0;
2502}
2503
2504static inline int break_layout(struct inode *inode, bool wait)
2505{
2506 return 0;
2507}
2508
2509#endif
2510
2511
2512struct audit_names;
2513struct filename {
2514 const char *name;
2515 const __user char *uptr;
2516 int refcnt;
2517 struct audit_names *aname;
2518 const char iname[];
2519};
2520static_assert(offsetof(struct filename, iname) % sizeof(long) == 0);
2521
2522extern long vfs_truncate(const struct path *, loff_t);
2523extern int do_truncate(struct dentry *, loff_t start, unsigned int time_attrs,
2524 struct file *filp);
2525extern int vfs_fallocate(struct file *file, int mode, loff_t offset,
2526 loff_t len);
2527extern long do_sys_open(int dfd, const char __user *filename, int flags,
2528 umode_t mode);
2529extern struct file *file_open_name(struct filename *, int, umode_t);
2530extern struct file *filp_open(const char *, int, umode_t);
2531extern struct file *file_open_root(struct dentry *, struct vfsmount *,
2532 const char *, int, umode_t);
2533extern struct file * dentry_open(const struct path *, int, const struct cred *);
2534extern struct file * open_with_fake_path(const struct path *, int,
2535 struct inode*, const struct cred *);
2536static inline struct file *file_clone_open(struct file *file)
2537{
2538 return dentry_open(&file->f_path, file->f_flags, file->f_cred);
2539}
2540extern int filp_close(struct file *, fl_owner_t id);
2541
2542extern struct filename *getname_flags(const char __user *, int, int *);
2543extern struct filename *getname(const char __user *);
2544extern struct filename *getname_kernel(const char *);
2545extern void putname(struct filename *name);
2546
2547extern int finish_open(struct file *file, struct dentry *dentry,
2548 int (*open)(struct inode *, struct file *));
2549extern int finish_no_open(struct file *file, struct dentry *dentry);
2550
2551
2552extern void __init vfs_caches_init_early(void);
2553extern void __init vfs_caches_init(void);
2554
2555extern struct kmem_cache *names_cachep;
2556
2557#define __getname() kmem_cache_alloc(names_cachep, GFP_KERNEL)
2558#define __putname(name) kmem_cache_free(names_cachep, (void *)(name))
2559
2560extern struct super_block *blockdev_superblock;
2561static inline bool sb_is_blkdev_sb(struct super_block *sb)
2562{
2563 return IS_ENABLED(CONFIG_BLOCK) && sb == blockdev_superblock;
2564}
2565
2566void emergency_thaw_all(void);
2567extern int sync_filesystem(struct super_block *);
2568extern const struct file_operations def_blk_fops;
2569extern const struct file_operations def_chr_fops;
2570
2571
2572#define CHRDEV_MAJOR_MAX 512
2573
2574#define CHRDEV_MAJOR_DYN_END 234
2575
2576#define CHRDEV_MAJOR_DYN_EXT_START 511
2577#define CHRDEV_MAJOR_DYN_EXT_END 384
2578
2579extern int alloc_chrdev_region(dev_t *, unsigned, unsigned, const char *);
2580extern int register_chrdev_region(dev_t, unsigned, const char *);
2581extern int __register_chrdev(unsigned int major, unsigned int baseminor,
2582 unsigned int count, const char *name,
2583 const struct file_operations *fops);
2584extern void __unregister_chrdev(unsigned int major, unsigned int baseminor,
2585 unsigned int count, const char *name);
2586extern void unregister_chrdev_region(dev_t, unsigned);
2587extern void chrdev_show(struct seq_file *,off_t);
2588
2589static inline int register_chrdev(unsigned int major, const char *name,
2590 const struct file_operations *fops)
2591{
2592 return __register_chrdev(major, 0, 256, name, fops);
2593}
2594
2595static inline void unregister_chrdev(unsigned int major, const char *name)
2596{
2597 __unregister_chrdev(major, 0, 256, name);
2598}
2599
2600extern void init_special_inode(struct inode *, umode_t, dev_t);
2601
2602
2603extern void make_bad_inode(struct inode *);
2604extern bool is_bad_inode(struct inode *);
2605
2606unsigned long invalidate_mapping_pages(struct address_space *mapping,
2607 pgoff_t start, pgoff_t end);
2608
2609void invalidate_mapping_pagevec(struct address_space *mapping,
2610 pgoff_t start, pgoff_t end,
2611 unsigned long *nr_pagevec);
2612
2613static inline void invalidate_remote_inode(struct inode *inode)
2614{
2615 if (S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) ||
2616 S_ISLNK(inode->i_mode))
2617 invalidate_mapping_pages(inode->i_mapping, 0, -1);
2618}
2619extern int invalidate_inode_pages2(struct address_space *mapping);
2620extern int invalidate_inode_pages2_range(struct address_space *mapping,
2621 pgoff_t start, pgoff_t end);
2622extern int write_inode_now(struct inode *, int);
2623extern int filemap_fdatawrite(struct address_space *);
2624extern int filemap_flush(struct address_space *);
2625extern int filemap_fdatawait_keep_errors(struct address_space *mapping);
2626extern int filemap_fdatawait_range(struct address_space *, loff_t lstart,
2627 loff_t lend);
2628extern int filemap_fdatawait_range_keep_errors(struct address_space *mapping,
2629 loff_t start_byte, loff_t end_byte);
2630
2631static inline int filemap_fdatawait(struct address_space *mapping)
2632{
2633 return filemap_fdatawait_range(mapping, 0, LLONG_MAX);
2634}
2635
2636extern bool filemap_range_has_page(struct address_space *, loff_t lstart,
2637 loff_t lend);
2638extern int filemap_write_and_wait_range(struct address_space *mapping,
2639 loff_t lstart, loff_t lend);
2640extern int __filemap_fdatawrite_range(struct address_space *mapping,
2641 loff_t start, loff_t end, int sync_mode);
2642extern int filemap_fdatawrite_range(struct address_space *mapping,
2643 loff_t start, loff_t end);
2644extern int filemap_check_errors(struct address_space *mapping);
2645extern void __filemap_set_wb_err(struct address_space *mapping, int err);
2646
2647static inline int filemap_write_and_wait(struct address_space *mapping)
2648{
2649 return filemap_write_and_wait_range(mapping, 0, LLONG_MAX);
2650}
2651
2652extern int __must_check file_fdatawait_range(struct file *file, loff_t lstart,
2653 loff_t lend);
2654extern int __must_check file_check_and_advance_wb_err(struct file *file);
2655extern int __must_check file_write_and_wait_range(struct file *file,
2656 loff_t start, loff_t end);
2657
2658static inline int file_write_and_wait(struct file *file)
2659{
2660 return file_write_and_wait_range(file, 0, LLONG_MAX);
2661}
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677static inline void filemap_set_wb_err(struct address_space *mapping, int err)
2678{
2679
2680 if (unlikely(err))
2681 __filemap_set_wb_err(mapping, err);
2682}
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694static inline int filemap_check_wb_err(struct address_space *mapping,
2695 errseq_t since)
2696{
2697 return errseq_check(&mapping->wb_err, since);
2698}
2699
2700
2701
2702
2703
2704
2705
2706
2707static inline errseq_t filemap_sample_wb_err(struct address_space *mapping)
2708{
2709 return errseq_sample(&mapping->wb_err);
2710}
2711
2712
2713
2714
2715
2716
2717
2718
2719static inline errseq_t file_sample_sb_err(struct file *file)
2720{
2721 return errseq_sample(&file->f_path.dentry->d_sb->s_wb_err);
2722}
2723
2724extern int vfs_fsync_range(struct file *file, loff_t start, loff_t end,
2725 int datasync);
2726extern int vfs_fsync(struct file *file, int datasync);
2727
2728extern int sync_file_range(struct file *file, loff_t offset, loff_t nbytes,
2729 unsigned int flags);
2730
2731
2732
2733
2734
2735
2736static inline ssize_t generic_write_sync(struct kiocb *iocb, ssize_t count)
2737{
2738 if (iocb->ki_flags & IOCB_DSYNC) {
2739 int ret = vfs_fsync_range(iocb->ki_filp,
2740 iocb->ki_pos - count, iocb->ki_pos - 1,
2741 (iocb->ki_flags & IOCB_SYNC) ? 0 : 1);
2742 if (ret)
2743 return ret;
2744 }
2745
2746 return count;
2747}
2748
2749extern void emergency_sync(void);
2750extern void emergency_remount(void);
2751
2752#ifdef CONFIG_BLOCK
2753extern int bmap(struct inode *inode, sector_t *block);
2754#else
2755static inline int bmap(struct inode *inode, sector_t *block)
2756{
2757 return -EINVAL;
2758}
2759#endif
2760
2761extern int notify_change(struct dentry *, struct iattr *, struct inode **);
2762extern int inode_permission(struct inode *, int);
2763extern int generic_permission(struct inode *, int);
2764extern int __check_sticky(struct inode *dir, struct inode *inode);
2765
2766static inline bool execute_ok(struct inode *inode)
2767{
2768 return (inode->i_mode & S_IXUGO) || S_ISDIR(inode->i_mode);
2769}
2770
2771static inline void file_start_write(struct file *file)
2772{
2773 if (!S_ISREG(file_inode(file)->i_mode))
2774 return;
2775 sb_start_write(file_inode(file)->i_sb);
2776}
2777
2778static inline bool file_start_write_trylock(struct file *file)
2779{
2780 if (!S_ISREG(file_inode(file)->i_mode))
2781 return true;
2782 return sb_start_write_trylock(file_inode(file)->i_sb);
2783}
2784
2785static inline void file_end_write(struct file *file)
2786{
2787 if (!S_ISREG(file_inode(file)->i_mode))
2788 return;
2789 __sb_end_write(file_inode(file)->i_sb, SB_FREEZE_WRITE);
2790}
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808static inline int get_write_access(struct inode *inode)
2809{
2810 return atomic_inc_unless_negative(&inode->i_writecount) ? 0 : -ETXTBSY;
2811}
2812static inline int deny_write_access(struct file *file)
2813{
2814 struct inode *inode = file_inode(file);
2815 return atomic_dec_unless_positive(&inode->i_writecount) ? 0 : -ETXTBSY;
2816}
2817static inline void put_write_access(struct inode * inode)
2818{
2819 atomic_dec(&inode->i_writecount);
2820}
2821static inline void allow_write_access(struct file *file)
2822{
2823 if (file)
2824 atomic_inc(&file_inode(file)->i_writecount);
2825}
2826static inline bool inode_is_open_for_write(const struct inode *inode)
2827{
2828 return atomic_read(&inode->i_writecount) > 0;
2829}
2830
2831#if defined(CONFIG_IMA) || defined(CONFIG_FILE_LOCKING)
2832static inline void i_readcount_dec(struct inode *inode)
2833{
2834 BUG_ON(!atomic_read(&inode->i_readcount));
2835 atomic_dec(&inode->i_readcount);
2836}
2837static inline void i_readcount_inc(struct inode *inode)
2838{
2839 atomic_inc(&inode->i_readcount);
2840}
2841#else
2842static inline void i_readcount_dec(struct inode *inode)
2843{
2844 return;
2845}
2846static inline void i_readcount_inc(struct inode *inode)
2847{
2848 return;
2849}
2850#endif
2851extern int do_pipe_flags(int *, int);
2852
2853extern ssize_t kernel_read(struct file *, void *, size_t, loff_t *);
2854ssize_t __kernel_read(struct file *file, void *buf, size_t count, loff_t *pos);
2855extern ssize_t kernel_write(struct file *, const void *, size_t, loff_t *);
2856extern ssize_t __kernel_write(struct file *, const void *, size_t, loff_t *);
2857extern struct file * open_exec(const char *);
2858
2859
2860extern bool is_subdir(struct dentry *, struct dentry *);
2861extern bool path_is_under(const struct path *, const struct path *);
2862
2863extern char *file_path(struct file *, char *, int);
2864
2865#include <linux/err.h>
2866
2867
2868extern loff_t default_llseek(struct file *file, loff_t offset, int whence);
2869
2870extern loff_t vfs_llseek(struct file *file, loff_t offset, int whence);
2871
2872extern int inode_init_always(struct super_block *, struct inode *);
2873extern void inode_init_once(struct inode *);
2874extern void address_space_init_once(struct address_space *mapping);
2875extern struct inode * igrab(struct inode *);
2876extern ino_t iunique(struct super_block *, ino_t);
2877extern int inode_needs_sync(struct inode *inode);
2878extern int generic_delete_inode(struct inode *inode);
2879static inline int generic_drop_inode(struct inode *inode)
2880{
2881 return !inode->i_nlink || inode_unhashed(inode) ||
2882 (inode->i_state & I_DONTCACHE);
2883}
2884extern void d_mark_dontcache(struct inode *inode);
2885
2886extern struct inode *ilookup5_nowait(struct super_block *sb,
2887 unsigned long hashval, int (*test)(struct inode *, void *),
2888 void *data);
2889extern struct inode *ilookup5(struct super_block *sb, unsigned long hashval,
2890 int (*test)(struct inode *, void *), void *data);
2891extern struct inode *ilookup(struct super_block *sb, unsigned long ino);
2892
2893extern struct inode *inode_insert5(struct inode *inode, unsigned long hashval,
2894 int (*test)(struct inode *, void *),
2895 int (*set)(struct inode *, void *),
2896 void *data);
2897extern struct inode * iget5_locked(struct super_block *, unsigned long, int (*test)(struct inode *, void *), int (*set)(struct inode *, void *), void *);
2898extern struct inode * iget_locked(struct super_block *, unsigned long);
2899extern struct inode *find_inode_nowait(struct super_block *,
2900 unsigned long,
2901 int (*match)(struct inode *,
2902 unsigned long, void *),
2903 void *data);
2904extern struct inode *find_inode_rcu(struct super_block *, unsigned long,
2905 int (*)(struct inode *, void *), void *);
2906extern struct inode *find_inode_by_ino_rcu(struct super_block *, unsigned long);
2907extern int insert_inode_locked4(struct inode *, unsigned long, int (*test)(struct inode *, void *), void *);
2908extern int insert_inode_locked(struct inode *);
2909#ifdef CONFIG_DEBUG_LOCK_ALLOC
2910extern void lockdep_annotate_inode_mutex_key(struct inode *inode);
2911#else
2912static inline void lockdep_annotate_inode_mutex_key(struct inode *inode) { };
2913#endif
2914extern void unlock_new_inode(struct inode *);
2915extern void discard_new_inode(struct inode *);
2916extern unsigned int get_next_ino(void);
2917extern void evict_inodes(struct super_block *sb);
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929static inline bool is_zero_ino(ino_t ino)
2930{
2931 return (u32)ino == 0;
2932}
2933
2934extern void __iget(struct inode * inode);
2935extern void iget_failed(struct inode *);
2936extern void clear_inode(struct inode *);
2937extern void __destroy_inode(struct inode *);
2938extern struct inode *new_inode_pseudo(struct super_block *sb);
2939extern struct inode *new_inode(struct super_block *sb);
2940extern void free_inode_nonrcu(struct inode *inode);
2941extern int should_remove_suid(struct dentry *);
2942extern int file_remove_privs(struct file *);
2943
2944extern void __insert_inode_hash(struct inode *, unsigned long hashval);
2945static inline void insert_inode_hash(struct inode *inode)
2946{
2947 __insert_inode_hash(inode, inode->i_ino);
2948}
2949
2950extern void __remove_inode_hash(struct inode *);
2951static inline void remove_inode_hash(struct inode *inode)
2952{
2953 if (!inode_unhashed(inode) && !hlist_fake(&inode->i_hash))
2954 __remove_inode_hash(inode);
2955}
2956
2957extern void inode_sb_list_add(struct inode *inode);
2958
2959extern int sb_set_blocksize(struct super_block *, int);
2960extern int sb_min_blocksize(struct super_block *, int);
2961
2962extern int generic_file_mmap(struct file *, struct vm_area_struct *);
2963extern int generic_file_readonly_mmap(struct file *, struct vm_area_struct *);
2964extern ssize_t generic_write_checks(struct kiocb *, struct iov_iter *);
2965extern int generic_write_check_limits(struct file *file, loff_t pos,
2966 loff_t *count);
2967extern int generic_file_rw_checks(struct file *file_in, struct file *file_out);
2968extern ssize_t generic_file_buffered_read(struct kiocb *iocb,
2969 struct iov_iter *to, ssize_t already_read);
2970extern ssize_t generic_file_read_iter(struct kiocb *, struct iov_iter *);
2971extern ssize_t __generic_file_write_iter(struct kiocb *, struct iov_iter *);
2972extern ssize_t generic_file_write_iter(struct kiocb *, struct iov_iter *);
2973extern ssize_t generic_file_direct_write(struct kiocb *, struct iov_iter *);
2974extern ssize_t generic_perform_write(struct file *, struct iov_iter *, loff_t);
2975
2976ssize_t vfs_iter_read(struct file *file, struct iov_iter *iter, loff_t *ppos,
2977 rwf_t flags);
2978ssize_t vfs_iter_write(struct file *file, struct iov_iter *iter, loff_t *ppos,
2979 rwf_t flags);
2980ssize_t vfs_iocb_iter_read(struct file *file, struct kiocb *iocb,
2981 struct iov_iter *iter);
2982ssize_t vfs_iocb_iter_write(struct file *file, struct kiocb *iocb,
2983 struct iov_iter *iter);
2984
2985
2986extern ssize_t blkdev_read_iter(struct kiocb *iocb, struct iov_iter *to);
2987extern ssize_t blkdev_write_iter(struct kiocb *iocb, struct iov_iter *from);
2988extern int blkdev_fsync(struct file *filp, loff_t start, loff_t end,
2989 int datasync);
2990extern void block_sync_page(struct page *page);
2991
2992
2993extern ssize_t generic_file_splice_read(struct file *, loff_t *,
2994 struct pipe_inode_info *, size_t, unsigned int);
2995extern ssize_t iter_file_splice_write(struct pipe_inode_info *,
2996 struct file *, loff_t *, size_t, unsigned int);
2997extern ssize_t generic_splice_sendpage(struct pipe_inode_info *pipe,
2998 struct file *out, loff_t *, size_t len, unsigned int flags);
2999extern long do_splice_direct(struct file *in, loff_t *ppos, struct file *out,
3000 loff_t *opos, size_t len, unsigned int flags);
3001
3002
3003extern void
3004file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping);
3005extern loff_t noop_llseek(struct file *file, loff_t offset, int whence);
3006extern loff_t no_llseek(struct file *file, loff_t offset, int whence);
3007extern loff_t vfs_setpos(struct file *file, loff_t offset, loff_t maxsize);
3008extern loff_t generic_file_llseek(struct file *file, loff_t offset, int whence);
3009extern loff_t generic_file_llseek_size(struct file *file, loff_t offset,
3010 int whence, loff_t maxsize, loff_t eof);
3011extern loff_t fixed_size_llseek(struct file *file, loff_t offset,
3012 int whence, loff_t size);
3013extern loff_t no_seek_end_llseek_size(struct file *, loff_t, int, loff_t);
3014extern loff_t no_seek_end_llseek(struct file *, loff_t, int);
3015extern int generic_file_open(struct inode * inode, struct file * filp);
3016extern int nonseekable_open(struct inode * inode, struct file * filp);
3017extern int stream_open(struct inode * inode, struct file * filp);
3018
3019#ifdef CONFIG_BLOCK
3020typedef void (dio_submit_t)(struct bio *bio, struct inode *inode,
3021 loff_t file_offset);
3022
3023enum {
3024
3025 DIO_LOCKING = 0x01,
3026
3027
3028 DIO_SKIP_HOLES = 0x02,
3029};
3030
3031ssize_t __blockdev_direct_IO(struct kiocb *iocb, struct inode *inode,
3032 struct block_device *bdev, struct iov_iter *iter,
3033 get_block_t get_block,
3034 dio_iodone_t end_io, dio_submit_t submit_io,
3035 int flags);
3036
3037static inline ssize_t blockdev_direct_IO(struct kiocb *iocb,
3038 struct inode *inode,
3039 struct iov_iter *iter,
3040 get_block_t get_block)
3041{
3042 return __blockdev_direct_IO(iocb, inode, inode->i_sb->s_bdev, iter,
3043 get_block, NULL, NULL, DIO_LOCKING | DIO_SKIP_HOLES);
3044}
3045#endif
3046
3047void inode_dio_wait(struct inode *inode);
3048
3049
3050
3051
3052
3053
3054
3055
3056static inline void inode_dio_begin(struct inode *inode)
3057{
3058 atomic_inc(&inode->i_dio_count);
3059}
3060
3061
3062
3063
3064
3065
3066
3067
3068static inline void inode_dio_end(struct inode *inode)
3069{
3070 if (atomic_dec_and_test(&inode->i_dio_count))
3071 wake_up_bit(&inode->i_state, __I_DIO_WAKEUP);
3072}
3073
3074
3075
3076
3077void dio_warn_stale_pagecache(struct file *filp);
3078
3079extern void inode_set_flags(struct inode *inode, unsigned int flags,
3080 unsigned int mask);
3081
3082extern const struct file_operations generic_ro_fops;
3083
3084#define special_file(m) (S_ISCHR(m)||S_ISBLK(m)||S_ISFIFO(m)||S_ISSOCK(m))
3085
3086extern int readlink_copy(char __user *, int, const char *);
3087extern int page_readlink(struct dentry *, char __user *, int);
3088extern const char *page_get_link(struct dentry *, struct inode *,
3089 struct delayed_call *);
3090extern void page_put_link(void *);
3091extern int __page_symlink(struct inode *inode, const char *symname, int len,
3092 int nofs);
3093extern int page_symlink(struct inode *inode, const char *symname, int len);
3094extern const struct inode_operations page_symlink_inode_operations;
3095extern void kfree_link(void *);
3096extern void generic_fillattr(struct inode *, struct kstat *);
3097extern int vfs_getattr_nosec(const struct path *, struct kstat *, u32, unsigned int);
3098extern int vfs_getattr(const struct path *, struct kstat *, u32, unsigned int);
3099void __inode_add_bytes(struct inode *inode, loff_t bytes);
3100void inode_add_bytes(struct inode *inode, loff_t bytes);
3101void __inode_sub_bytes(struct inode *inode, loff_t bytes);
3102void inode_sub_bytes(struct inode *inode, loff_t bytes);
3103static inline loff_t __inode_get_bytes(struct inode *inode)
3104{
3105 return (((loff_t)inode->i_blocks) << 9) + inode->i_bytes;
3106}
3107loff_t inode_get_bytes(struct inode *inode);
3108void inode_set_bytes(struct inode *inode, loff_t bytes);
3109const char *simple_get_link(struct dentry *, struct inode *,
3110 struct delayed_call *);
3111extern const struct inode_operations simple_symlink_inode_operations;
3112
3113extern int iterate_dir(struct file *, struct dir_context *);
3114
3115int vfs_fstatat(int dfd, const char __user *filename, struct kstat *stat,
3116 int flags);
3117int vfs_fstat(int fd, struct kstat *stat);
3118
3119static inline int vfs_stat(const char __user *filename, struct kstat *stat)
3120{
3121 return vfs_fstatat(AT_FDCWD, filename, stat, 0);
3122}
3123static inline int vfs_lstat(const char __user *name, struct kstat *stat)
3124{
3125 return vfs_fstatat(AT_FDCWD, name, stat, AT_SYMLINK_NOFOLLOW);
3126}
3127
3128extern const char *vfs_get_link(struct dentry *, struct delayed_call *);
3129extern int vfs_readlink(struct dentry *, char __user *, int);
3130
3131extern struct file_system_type *get_filesystem(struct file_system_type *fs);
3132extern void put_filesystem(struct file_system_type *fs);
3133extern struct file_system_type *get_fs_type(const char *name);
3134extern struct super_block *get_super(struct block_device *);
3135extern struct super_block *get_super_thawed(struct block_device *);
3136extern struct super_block *get_super_exclusive_thawed(struct block_device *bdev);
3137extern struct super_block *get_active_super(struct block_device *bdev);
3138extern void drop_super(struct super_block *sb);
3139extern void drop_super_exclusive(struct super_block *sb);
3140extern void iterate_supers(void (*)(struct super_block *, void *), void *);
3141extern void iterate_supers_type(struct file_system_type *,
3142 void (*)(struct super_block *, void *), void *);
3143
3144extern int dcache_dir_open(struct inode *, struct file *);
3145extern int dcache_dir_close(struct inode *, struct file *);
3146extern loff_t dcache_dir_lseek(struct file *, loff_t, int);
3147extern int dcache_readdir(struct file *, struct dir_context *);
3148extern int simple_setattr(struct dentry *, struct iattr *);
3149extern int simple_getattr(const struct path *, struct kstat *, u32, unsigned int);
3150extern int simple_statfs(struct dentry *, struct kstatfs *);
3151extern int simple_open(struct inode *inode, struct file *file);
3152extern int simple_link(struct dentry *, struct inode *, struct dentry *);
3153extern int simple_unlink(struct inode *, struct dentry *);
3154extern int simple_rmdir(struct inode *, struct dentry *);
3155extern int simple_rename(struct inode *, struct dentry *,
3156 struct inode *, struct dentry *, unsigned int);
3157extern void simple_recursive_removal(struct dentry *,
3158 void (*callback)(struct dentry *));
3159extern int noop_fsync(struct file *, loff_t, loff_t, int);
3160extern int noop_set_page_dirty(struct page *page);
3161extern void noop_invalidatepage(struct page *page, unsigned int offset,
3162 unsigned int length);
3163extern ssize_t noop_direct_IO(struct kiocb *iocb, struct iov_iter *iter);
3164extern int simple_empty(struct dentry *);
3165extern int simple_readpage(struct file *file, struct page *page);
3166extern int simple_write_begin(struct file *file, struct address_space *mapping,
3167 loff_t pos, unsigned len, unsigned flags,
3168 struct page **pagep, void **fsdata);
3169extern int simple_write_end(struct file *file, struct address_space *mapping,
3170 loff_t pos, unsigned len, unsigned copied,
3171 struct page *page, void *fsdata);
3172extern int always_delete_dentry(const struct dentry *);
3173extern struct inode *alloc_anon_inode(struct super_block *);
3174extern int simple_nosetlease(struct file *, long, struct file_lock **, void **);
3175extern const struct dentry_operations simple_dentry_operations;
3176
3177extern struct dentry *simple_lookup(struct inode *, struct dentry *, unsigned int flags);
3178extern ssize_t generic_read_dir(struct file *, char __user *, size_t, loff_t *);
3179extern const struct file_operations simple_dir_operations;
3180extern const struct inode_operations simple_dir_inode_operations;
3181extern void make_empty_dir_inode(struct inode *inode);
3182extern bool is_empty_dir_inode(struct inode *inode);
3183struct tree_descr { const char *name; const struct file_operations *ops; int mode; };
3184struct dentry *d_alloc_name(struct dentry *, const char *);
3185extern int simple_fill_super(struct super_block *, unsigned long,
3186 const struct tree_descr *);
3187extern int simple_pin_fs(struct file_system_type *, struct vfsmount **mount, int *count);
3188extern void simple_release_fs(struct vfsmount **mount, int *count);
3189
3190extern ssize_t simple_read_from_buffer(void __user *to, size_t count,
3191 loff_t *ppos, const void *from, size_t available);
3192extern ssize_t simple_write_to_buffer(void *to, size_t available, loff_t *ppos,
3193 const void __user *from, size_t count);
3194
3195extern int __generic_file_fsync(struct file *, loff_t, loff_t, int);
3196extern int generic_file_fsync(struct file *, loff_t, loff_t, int);
3197
3198extern int generic_check_addressable(unsigned, u64);
3199
3200#ifdef CONFIG_UNICODE
3201extern int generic_ci_d_hash(const struct dentry *dentry, struct qstr *str);
3202extern int generic_ci_d_compare(const struct dentry *dentry, unsigned int len,
3203 const char *str, const struct qstr *name);
3204#endif
3205
3206#ifdef CONFIG_MIGRATION
3207extern int buffer_migrate_page(struct address_space *,
3208 struct page *, struct page *,
3209 enum migrate_mode);
3210extern int buffer_migrate_page_norefs(struct address_space *,
3211 struct page *, struct page *,
3212 enum migrate_mode);
3213#else
3214#define buffer_migrate_page NULL
3215#define buffer_migrate_page_norefs NULL
3216#endif
3217
3218extern int setattr_prepare(struct dentry *, struct iattr *);
3219extern int inode_newsize_ok(const struct inode *, loff_t offset);
3220extern void setattr_copy(struct inode *inode, const struct iattr *attr);
3221
3222extern int file_update_time(struct file *file);
3223
3224static inline bool vma_is_dax(const struct vm_area_struct *vma)
3225{
3226 return vma->vm_file && IS_DAX(vma->vm_file->f_mapping->host);
3227}
3228
3229static inline bool vma_is_fsdax(struct vm_area_struct *vma)
3230{
3231 struct inode *inode;
3232
3233 if (!vma->vm_file)
3234 return false;
3235 if (!vma_is_dax(vma))
3236 return false;
3237 inode = file_inode(vma->vm_file);
3238 if (S_ISCHR(inode->i_mode))
3239 return false;
3240 return true;
3241}
3242
3243static inline int iocb_flags(struct file *file)
3244{
3245 int res = 0;
3246 if (file->f_flags & O_APPEND)
3247 res |= IOCB_APPEND;
3248 if (file->f_flags & O_DIRECT)
3249 res |= IOCB_DIRECT;
3250 if ((file->f_flags & O_DSYNC) || IS_SYNC(file->f_mapping->host))
3251 res |= IOCB_DSYNC;
3252 if (file->f_flags & __O_SYNC)
3253 res |= IOCB_SYNC;
3254 return res;
3255}
3256
3257static inline int kiocb_set_rw_flags(struct kiocb *ki, rwf_t flags)
3258{
3259 int kiocb_flags = 0;
3260
3261
3262 BUILD_BUG_ON((__force int) RWF_SUPPORTED & IOCB_EVENTFD);
3263
3264 if (!flags)
3265 return 0;
3266 if (unlikely(flags & ~RWF_SUPPORTED))
3267 return -EOPNOTSUPP;
3268
3269 if (flags & RWF_NOWAIT) {
3270 if (!(ki->ki_filp->f_mode & FMODE_NOWAIT))
3271 return -EOPNOTSUPP;
3272 kiocb_flags |= IOCB_NOIO;
3273 }
3274 kiocb_flags |= (__force int) (flags & RWF_SUPPORTED);
3275 if (flags & RWF_SYNC)
3276 kiocb_flags |= IOCB_DSYNC;
3277
3278 ki->ki_flags |= kiocb_flags;
3279 return 0;
3280}
3281
3282static inline ino_t parent_ino(struct dentry *dentry)
3283{
3284 ino_t res;
3285
3286
3287
3288
3289
3290 spin_lock(&dentry->d_lock);
3291 res = dentry->d_parent->d_inode->i_ino;
3292 spin_unlock(&dentry->d_lock);
3293 return res;
3294}
3295
3296
3297
3298
3299
3300
3301
3302struct simple_transaction_argresp {
3303 ssize_t size;
3304 char data[];
3305};
3306
3307#define SIMPLE_TRANSACTION_LIMIT (PAGE_SIZE - sizeof(struct simple_transaction_argresp))
3308
3309char *simple_transaction_get(struct file *file, const char __user *buf,
3310 size_t size);
3311ssize_t simple_transaction_read(struct file *file, char __user *buf,
3312 size_t size, loff_t *pos);
3313int simple_transaction_release(struct inode *inode, struct file *file);
3314
3315void simple_transaction_set(struct file *file, size_t n);
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333#define DEFINE_SIMPLE_ATTRIBUTE(__fops, __get, __set, __fmt) \
3334static int __fops ## _open(struct inode *inode, struct file *file) \
3335{ \
3336 __simple_attr_check_format(__fmt, 0ull); \
3337 return simple_attr_open(inode, file, __get, __set, __fmt); \
3338} \
3339static const struct file_operations __fops = { \
3340 .owner = THIS_MODULE, \
3341 .open = __fops ## _open, \
3342 .release = simple_attr_release, \
3343 .read = simple_attr_read, \
3344 .write = simple_attr_write, \
3345 .llseek = generic_file_llseek, \
3346}
3347
3348static inline __printf(1, 2)
3349void __simple_attr_check_format(const char *fmt, ...)
3350{
3351
3352}
3353
3354int simple_attr_open(struct inode *inode, struct file *file,
3355 int (*get)(void *, u64 *), int (*set)(void *, u64),
3356 const char *fmt);
3357int simple_attr_release(struct inode *inode, struct file *file);
3358ssize_t simple_attr_read(struct file *file, char __user *buf,
3359 size_t len, loff_t *ppos);
3360ssize_t simple_attr_write(struct file *file, const char __user *buf,
3361 size_t len, loff_t *ppos);
3362
3363struct ctl_table;
3364int proc_nr_files(struct ctl_table *table, int write,
3365 void *buffer, size_t *lenp, loff_t *ppos);
3366int proc_nr_dentry(struct ctl_table *table, int write,
3367 void *buffer, size_t *lenp, loff_t *ppos);
3368int proc_nr_inodes(struct ctl_table *table, int write,
3369 void *buffer, size_t *lenp, loff_t *ppos);
3370int __init get_filesystem_list(char *buf);
3371
3372#define __FMODE_EXEC ((__force int) FMODE_EXEC)
3373#define __FMODE_NONOTIFY ((__force int) FMODE_NONOTIFY)
3374
3375#define ACC_MODE(x) ("\004\002\006\006"[(x)&O_ACCMODE])
3376#define OPEN_FMODE(flag) ((__force fmode_t)(((flag + 1) & O_ACCMODE) | \
3377 (flag & __FMODE_NONOTIFY)))
3378
3379static inline bool is_sxid(umode_t mode)
3380{
3381 return (mode & S_ISUID) || ((mode & S_ISGID) && (mode & S_IXGRP));
3382}
3383
3384static inline int check_sticky(struct inode *dir, struct inode *inode)
3385{
3386 if (!(dir->i_mode & S_ISVTX))
3387 return 0;
3388
3389 return __check_sticky(dir, inode);
3390}
3391
3392static inline void inode_has_no_xattr(struct inode *inode)
3393{
3394 if (!is_sxid(inode->i_mode) && (inode->i_sb->s_flags & SB_NOSEC))
3395 inode->i_flags |= S_NOSEC;
3396}
3397
3398static inline bool is_root_inode(struct inode *inode)
3399{
3400 return inode == inode->i_sb->s_root->d_inode;
3401}
3402
3403static inline bool dir_emit(struct dir_context *ctx,
3404 const char *name, int namelen,
3405 u64 ino, unsigned type)
3406{
3407 return ctx->actor(ctx, name, namelen, ctx->pos, ino, type) == 0;
3408}
3409static inline bool dir_emit_dot(struct file *file, struct dir_context *ctx)
3410{
3411 return ctx->actor(ctx, ".", 1, ctx->pos,
3412 file->f_path.dentry->d_inode->i_ino, DT_DIR) == 0;
3413}
3414static inline bool dir_emit_dotdot(struct file *file, struct dir_context *ctx)
3415{
3416 return ctx->actor(ctx, "..", 2, ctx->pos,
3417 parent_ino(file->f_path.dentry), DT_DIR) == 0;
3418}
3419static inline bool dir_emit_dots(struct file *file, struct dir_context *ctx)
3420{
3421 if (ctx->pos == 0) {
3422 if (!dir_emit_dot(file, ctx))
3423 return false;
3424 ctx->pos = 1;
3425 }
3426 if (ctx->pos == 1) {
3427 if (!dir_emit_dotdot(file, ctx))
3428 return false;
3429 ctx->pos = 2;
3430 }
3431 return true;
3432}
3433static inline bool dir_relax(struct inode *inode)
3434{
3435 inode_unlock(inode);
3436 inode_lock(inode);
3437 return !IS_DEADDIR(inode);
3438}
3439
3440static inline bool dir_relax_shared(struct inode *inode)
3441{
3442 inode_unlock_shared(inode);
3443 inode_lock_shared(inode);
3444 return !IS_DEADDIR(inode);
3445}
3446
3447extern bool path_noexec(const struct path *path);
3448extern void inode_nohighmem(struct inode *inode);
3449
3450
3451extern int vfs_fadvise(struct file *file, loff_t offset, loff_t len,
3452 int advice);
3453extern int generic_fadvise(struct file *file, loff_t offset, loff_t len,
3454 int advice);
3455
3456int vfs_ioc_setflags_prepare(struct inode *inode, unsigned int oldflags,
3457 unsigned int flags);
3458
3459int vfs_ioc_fssetxattr_check(struct inode *inode, const struct fsxattr *old_fa,
3460 struct fsxattr *fa);
3461
3462static inline void simple_fill_fsxattr(struct fsxattr *fa, __u32 xflags)
3463{
3464 memset(fa, 0, sizeof(*fa));
3465 fa->fsx_xflags = xflags;
3466}
3467
3468
3469
3470
3471
3472
3473static inline int inode_drain_writes(struct inode *inode)
3474{
3475 inode_dio_wait(inode);
3476 return filemap_write_and_wait(inode->i_mapping);
3477}
3478
3479#endif
3480