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