1#ifndef _LINUX_FS_H
2#define _LINUX_FS_H
3
4
5
6
7
8
9#include <linux/limits.h>
10#include <linux/ioctl.h>
11
12
13
14
15
16
17
18
19
20
21
22
23#undef NR_OPEN
24#define NR_OPEN (1024*1024)
25#define INR_OPEN 1024
26
27#define BLOCK_SIZE_BITS 10
28#define BLOCK_SIZE (1<<BLOCK_SIZE_BITS)
29
30#define SEEK_SET 0
31#define SEEK_CUR 1
32#define SEEK_END 2
33#define SEEK_MAX SEEK_END
34
35
36struct files_stat_struct {
37 int nr_files;
38 int nr_free_files;
39 int max_files;
40};
41extern struct files_stat_struct files_stat;
42extern int get_max_files(void);
43
44struct inodes_stat_t {
45 int nr_inodes;
46 int nr_unused;
47 int dummy[5];
48};
49extern struct inodes_stat_t inodes_stat;
50
51extern int leases_enable, lease_break_time;
52
53#ifdef CONFIG_DNOTIFY
54extern int dir_notify_enable;
55#endif
56
57#define NR_FILE 8192
58
59#define MAY_EXEC 1
60#define MAY_WRITE 2
61#define MAY_READ 4
62#define MAY_APPEND 8
63
64#define FMODE_READ 1
65#define FMODE_WRITE 2
66
67
68#define FMODE_LSEEK 4
69#define FMODE_PREAD 8
70#define FMODE_PWRITE FMODE_PREAD
71
72
73
74
75#define FMODE_EXEC 16
76
77#define RW_MASK 1
78#define RWA_MASK 2
79#define READ 0
80#define WRITE 1
81#define READA 2
82#define SWRITE 3
83#define READ_SYNC (READ | (1 << BIO_RW_SYNC))
84#define READ_META (READ | (1 << BIO_RW_META))
85#define WRITE_SYNC (WRITE | (1 << BIO_RW_SYNC))
86#define WRITE_BARRIER ((1 << BIO_RW) | (1 << BIO_RW_BARRIER))
87
88#define SEL_IN 1
89#define SEL_OUT 2
90#define SEL_EX 4
91
92
93#define FS_REQUIRES_DEV 1
94#define FS_BINARY_MOUNTDATA 2
95#define FS_HAS_SUBTYPE 4
96#define FS_REVAL_DOT 16384
97#define FS_RENAME_DOES_D_MOVE 32768
98
99
100
101
102
103
104#define MS_RDONLY 1
105#define MS_NOSUID 2
106#define MS_NODEV 4
107#define MS_NOEXEC 8
108#define MS_SYNCHRONOUS 16
109#define MS_REMOUNT 32
110#define MS_MANDLOCK 64
111#define MS_DIRSYNC 128
112#define MS_NOATIME 1024
113#define MS_NODIRATIME 2048
114#define MS_BIND 4096
115#define MS_MOVE 8192
116#define MS_REC 16384
117#define MS_VERBOSE 32768
118
119#define MS_SILENT 32768
120#define MS_POSIXACL (1<<16)
121#define MS_UNBINDABLE (1<<17)
122#define MS_PRIVATE (1<<18)
123#define MS_SLAVE (1<<19)
124#define MS_SHARED (1<<20)
125#define MS_RELATIME (1<<21)
126#define MS_KERNMOUNT (1<<22)
127#define MS_ACTIVE (1<<30)
128#define MS_NOUSER (1<<31)
129
130
131
132
133#define MS_RMT_MASK (MS_RDONLY|MS_SYNCHRONOUS|MS_MANDLOCK)
134
135
136
137
138#define MS_MGC_VAL 0xC0ED0000
139#define MS_MGC_MSK 0xffff0000
140
141
142
143#define S_SYNC 1
144#define S_NOATIME 2
145#define S_APPEND 4
146#define S_IMMUTABLE 8
147#define S_DEAD 16
148#define S_NOQUOTA 32
149#define S_DIRSYNC 64
150#define S_NOCMTIME 128
151#define S_SWAPFILE 256
152#define S_PRIVATE 512
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167#define __IS_FLG(inode,flg) ((inode)->i_sb->s_flags & (flg))
168
169#define IS_RDONLY(inode) ((inode)->i_sb->s_flags & MS_RDONLY)
170#define IS_SYNC(inode) (__IS_FLG(inode, MS_SYNCHRONOUS) || \
171 ((inode)->i_flags & S_SYNC))
172#define IS_DIRSYNC(inode) (__IS_FLG(inode, MS_SYNCHRONOUS|MS_DIRSYNC) || \
173 ((inode)->i_flags & (S_SYNC|S_DIRSYNC)))
174#define IS_MANDLOCK(inode) __IS_FLG(inode, MS_MANDLOCK)
175#define IS_NOATIME(inode) __IS_FLG(inode, MS_RDONLY|MS_NOATIME)
176
177#define IS_NOQUOTA(inode) ((inode)->i_flags & S_NOQUOTA)
178#define IS_APPEND(inode) ((inode)->i_flags & S_APPEND)
179#define IS_IMMUTABLE(inode) ((inode)->i_flags & S_IMMUTABLE)
180#define IS_POSIXACL(inode) __IS_FLG(inode, MS_POSIXACL)
181
182#define IS_DEADDIR(inode) ((inode)->i_flags & S_DEAD)
183#define IS_NOCMTIME(inode) ((inode)->i_flags & S_NOCMTIME)
184#define IS_SWAPFILE(inode) ((inode)->i_flags & S_SWAPFILE)
185#define IS_PRIVATE(inode) ((inode)->i_flags & S_PRIVATE)
186
187
188
189
190#define BLKROSET _IO(0x12,93)
191#define BLKROGET _IO(0x12,94)
192#define BLKRRPART _IO(0x12,95)
193#define BLKGETSIZE _IO(0x12,96)
194#define BLKFLSBUF _IO(0x12,97)
195#define BLKRASET _IO(0x12,98)
196#define BLKRAGET _IO(0x12,99)
197#define BLKFRASET _IO(0x12,100)
198#define BLKFRAGET _IO(0x12,101)
199#define BLKSECTSET _IO(0x12,102)
200#define BLKSECTGET _IO(0x12,103)
201#define BLKSSZGET _IO(0x12,104)
202#if 0
203#define BLKPG _IO(0x12,105)
204
205
206
207#define BLKELVGET _IOR(0x12,106,size_t)
208#define BLKELVSET _IOW(0x12,107,size_t)
209
210
211#endif
212
213#define BLKBSZGET _IOR(0x12,112,size_t)
214#define BLKBSZSET _IOW(0x12,113,size_t)
215#define BLKGETSIZE64 _IOR(0x12,114,size_t)
216#define BLKTRACESETUP _IOWR(0x12,115,struct blk_user_trace_setup)
217#define BLKTRACESTART _IO(0x12,116)
218#define BLKTRACESTOP _IO(0x12,117)
219#define BLKTRACETEARDOWN _IO(0x12,118)
220
221#define BMAP_IOCTL 1
222#define FIBMAP _IO(0x00,1)
223#define FIGETBSZ _IO(0x00,2)
224
225#define FS_IOC_GETFLAGS _IOR('f', 1, long)
226#define FS_IOC_SETFLAGS _IOW('f', 2, long)
227#define FS_IOC_GETVERSION _IOR('v', 1, long)
228#define FS_IOC_SETVERSION _IOW('v', 2, long)
229#define FS_IOC32_GETFLAGS _IOR('f', 1, int)
230#define FS_IOC32_SETFLAGS _IOW('f', 2, int)
231#define FS_IOC32_GETVERSION _IOR('v', 1, int)
232#define FS_IOC32_SETVERSION _IOW('v', 2, int)
233
234
235
236
237#define FS_SECRM_FL 0x00000001
238#define FS_UNRM_FL 0x00000002
239#define FS_COMPR_FL 0x00000004
240#define FS_SYNC_FL 0x00000008
241#define FS_IMMUTABLE_FL 0x00000010
242#define FS_APPEND_FL 0x00000020
243#define FS_NODUMP_FL 0x00000040
244#define FS_NOATIME_FL 0x00000080
245
246#define FS_DIRTY_FL 0x00000100
247#define FS_COMPRBLK_FL 0x00000200
248#define FS_NOCOMP_FL 0x00000400
249#define FS_ECOMPR_FL 0x00000800
250
251#define FS_BTREE_FL 0x00001000
252#define FS_INDEX_FL 0x00001000
253#define FS_IMAGIC_FL 0x00002000
254#define FS_JOURNAL_DATA_FL 0x00004000
255#define FS_NOTAIL_FL 0x00008000
256#define FS_DIRSYNC_FL 0x00010000
257#define FS_TOPDIR_FL 0x00020000
258#define FS_EXTENT_FL 0x00080000
259#define FS_DIRECTIO_FL 0x00100000
260#define FS_RESERVED_FL 0x80000000
261
262#define FS_FL_USER_VISIBLE 0x0003DFFF
263#define FS_FL_USER_MODIFIABLE 0x000380FF
264
265
266#define SYNC_FILE_RANGE_WAIT_BEFORE 1
267#define SYNC_FILE_RANGE_WRITE 2
268#define SYNC_FILE_RANGE_WAIT_AFTER 4
269
270#ifdef __KERNEL__
271
272#include <linux/linkage.h>
273#include <linux/wait.h>
274#include <linux/types.h>
275#include <linux/kdev_t.h>
276#include <linux/dcache.h>
277#include <linux/namei.h>
278#include <linux/stat.h>
279#include <linux/cache.h>
280#include <linux/kobject.h>
281#include <linux/list.h>
282#include <linux/radix-tree.h>
283#include <linux/prio_tree.h>
284#include <linux/init.h>
285#include <linux/pid.h>
286#include <linux/mutex.h>
287#include <linux/capability.h>
288
289#include <asm/atomic.h>
290#include <asm/semaphore.h>
291#include <asm/byteorder.h>
292
293struct export_operations;
294struct hd_geometry;
295struct iovec;
296struct nameidata;
297struct kiocb;
298struct pipe_inode_info;
299struct poll_table_struct;
300struct kstatfs;
301struct vm_area_struct;
302struct vfsmount;
303
304extern void __init inode_init(void);
305extern void __init inode_init_early(void);
306extern void __init mnt_init(void);
307extern void __init files_init(unsigned long);
308
309struct buffer_head;
310typedef int (get_block_t)(struct inode *inode, sector_t iblock,
311 struct buffer_head *bh_result, int create);
312typedef void (dio_iodone_t)(struct kiocb *iocb, loff_t offset,
313 ssize_t bytes, void *private);
314
315
316
317
318
319#define ATTR_MODE 1
320#define ATTR_UID 2
321#define ATTR_GID 4
322#define ATTR_SIZE 8
323#define ATTR_ATIME 16
324#define ATTR_MTIME 32
325#define ATTR_CTIME 64
326#define ATTR_ATIME_SET 128
327#define ATTR_MTIME_SET 256
328#define ATTR_FORCE 512
329#define ATTR_ATTR_FLAG 1024
330#define ATTR_KILL_SUID 2048
331#define ATTR_KILL_SGID 4096
332#define ATTR_FILE 8192
333#define ATTR_KILL_PRIV 16384
334#define ATTR_OPEN 32768
335
336
337
338
339
340
341
342
343
344
345struct iattr {
346 unsigned int ia_valid;
347 umode_t ia_mode;
348 uid_t ia_uid;
349 gid_t ia_gid;
350 loff_t ia_size;
351 struct timespec ia_atime;
352 struct timespec ia_mtime;
353 struct timespec ia_ctime;
354
355
356
357
358
359
360 struct file *ia_file;
361};
362
363
364
365
366#include <linux/quota.h>
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394enum positive_aop_returns {
395 AOP_WRITEPAGE_ACTIVATE = 0x80000,
396 AOP_TRUNCATED_PAGE = 0x80001,
397};
398
399#define AOP_FLAG_UNINTERRUPTIBLE 0x0001
400#define AOP_FLAG_CONT_EXPAND 0x0002
401
402
403
404
405struct page;
406struct address_space;
407struct writeback_control;
408
409struct iov_iter {
410 const struct iovec *iov;
411 unsigned long nr_segs;
412 size_t iov_offset;
413 size_t count;
414};
415
416size_t iov_iter_copy_from_user_atomic(struct page *page,
417 struct iov_iter *i, unsigned long offset, size_t bytes);
418size_t iov_iter_copy_from_user(struct page *page,
419 struct iov_iter *i, unsigned long offset, size_t bytes);
420void iov_iter_advance(struct iov_iter *i, size_t bytes);
421int iov_iter_fault_in_readable(struct iov_iter *i, size_t bytes);
422size_t iov_iter_single_seg_count(struct iov_iter *i);
423
424static inline void iov_iter_init(struct iov_iter *i,
425 const struct iovec *iov, unsigned long nr_segs,
426 size_t count, size_t written)
427{
428 i->iov = iov;
429 i->nr_segs = nr_segs;
430 i->iov_offset = 0;
431 i->count = count + written;
432
433 iov_iter_advance(i, written);
434}
435
436static inline size_t iov_iter_count(struct iov_iter *i)
437{
438 return i->count;
439}
440
441
442struct address_space_operations {
443 int (*writepage)(struct page *page, struct writeback_control *wbc);
444 int (*readpage)(struct file *, struct page *);
445 void (*sync_page)(struct page *);
446
447
448 int (*writepages)(struct address_space *, struct writeback_control *);
449
450
451 int (*set_page_dirty)(struct page *page);
452
453 int (*readpages)(struct file *filp, struct address_space *mapping,
454 struct list_head *pages, unsigned nr_pages);
455
456
457
458
459
460 int (*prepare_write)(struct file *, struct page *, unsigned, unsigned);
461 int (*commit_write)(struct file *, struct page *, unsigned, unsigned);
462
463 int (*write_begin)(struct file *, struct address_space *mapping,
464 loff_t pos, unsigned len, unsigned flags,
465 struct page **pagep, void **fsdata);
466 int (*write_end)(struct file *, struct address_space *mapping,
467 loff_t pos, unsigned len, unsigned copied,
468 struct page *page, void *fsdata);
469
470
471 sector_t (*bmap)(struct address_space *, sector_t);
472 void (*invalidatepage) (struct page *, unsigned long);
473 int (*releasepage) (struct page *, gfp_t);
474 ssize_t (*direct_IO)(int, struct kiocb *, const struct iovec *iov,
475 loff_t offset, unsigned long nr_segs);
476 struct page* (*get_xip_page)(struct address_space *, sector_t,
477 int);
478
479 int (*migratepage) (struct address_space *,
480 struct page *, struct page *);
481 int (*launder_page) (struct page *);
482};
483
484
485
486
487
488int pagecache_write_begin(struct file *, struct address_space *mapping,
489 loff_t pos, unsigned len, unsigned flags,
490 struct page **pagep, void **fsdata);
491
492int pagecache_write_end(struct file *, struct address_space *mapping,
493 loff_t pos, unsigned len, unsigned copied,
494 struct page *page, void *fsdata);
495
496struct backing_dev_info;
497struct address_space {
498 struct inode *host;
499 struct radix_tree_root page_tree;
500 rwlock_t tree_lock;
501 unsigned int i_mmap_writable;
502 struct prio_tree_root i_mmap;
503 struct list_head i_mmap_nonlinear;
504 spinlock_t i_mmap_lock;
505 unsigned int truncate_count;
506 unsigned long nrpages;
507 pgoff_t writeback_index;
508 const struct address_space_operations *a_ops;
509 unsigned long flags;
510 struct backing_dev_info *backing_dev_info;
511 spinlock_t private_lock;
512 struct list_head private_list;
513 struct address_space *assoc_mapping;
514} __attribute__((aligned(sizeof(long))));
515
516
517
518
519
520
521struct block_device {
522 dev_t bd_dev;
523 struct inode * bd_inode;
524 int bd_openers;
525 struct mutex bd_mutex;
526 struct semaphore bd_mount_sem;
527 struct list_head bd_inodes;
528 void * bd_holder;
529 int bd_holders;
530#ifdef CONFIG_SYSFS
531 struct list_head bd_holder_list;
532#endif
533 struct block_device * bd_contains;
534 unsigned bd_block_size;
535 struct hd_struct * bd_part;
536
537 unsigned bd_part_count;
538 int bd_invalidated;
539 struct gendisk * bd_disk;
540 struct list_head bd_list;
541 struct backing_dev_info *bd_inode_backing_dev_info;
542
543
544
545
546
547
548 unsigned long bd_private;
549};
550
551
552
553
554
555#define PAGECACHE_TAG_DIRTY 0
556#define PAGECACHE_TAG_WRITEBACK 1
557
558int mapping_tagged(struct address_space *mapping, int tag);
559
560
561
562
563static inline int mapping_mapped(struct address_space *mapping)
564{
565 return !prio_tree_empty(&mapping->i_mmap) ||
566 !list_empty(&mapping->i_mmap_nonlinear);
567}
568
569
570
571
572
573
574
575static inline int mapping_writably_mapped(struct address_space *mapping)
576{
577 return mapping->i_mmap_writable != 0;
578}
579
580
581
582
583#if BITS_PER_LONG==32 && defined(CONFIG_SMP)
584#include <linux/seqlock.h>
585#define __NEED_I_SIZE_ORDERED
586#define i_size_ordered_init(inode) seqcount_init(&inode->i_size_seqcount)
587#else
588#define i_size_ordered_init(inode) do { } while (0)
589#endif
590
591struct inode {
592 struct hlist_node i_hash;
593 struct list_head i_list;
594 struct list_head i_sb_list;
595 struct list_head i_dentry;
596 unsigned long i_ino;
597 atomic_t i_count;
598 unsigned int i_nlink;
599 uid_t i_uid;
600 gid_t i_gid;
601 dev_t i_rdev;
602 unsigned long i_version;
603 loff_t i_size;
604#ifdef __NEED_I_SIZE_ORDERED
605 seqcount_t i_size_seqcount;
606#endif
607 struct timespec i_atime;
608 struct timespec i_mtime;
609 struct timespec i_ctime;
610 unsigned int i_blkbits;
611 blkcnt_t i_blocks;
612 unsigned short i_bytes;
613 umode_t i_mode;
614 spinlock_t i_lock;
615 struct mutex i_mutex;
616 struct rw_semaphore i_alloc_sem;
617 const struct inode_operations *i_op;
618 const struct file_operations *i_fop;
619 struct super_block *i_sb;
620 struct file_lock *i_flock;
621 struct address_space *i_mapping;
622 struct address_space i_data;
623#ifdef CONFIG_QUOTA
624 struct dquot *i_dquot[MAXQUOTAS];
625#endif
626 struct list_head i_devices;
627 union {
628 struct pipe_inode_info *i_pipe;
629 struct block_device *i_bdev;
630 struct cdev *i_cdev;
631 };
632 int i_cindex;
633
634 __u32 i_generation;
635
636#ifdef CONFIG_DNOTIFY
637 unsigned long i_dnotify_mask;
638 struct dnotify_struct *i_dnotify;
639#endif
640
641#ifdef CONFIG_INOTIFY
642 struct list_head inotify_watches;
643 struct mutex inotify_mutex;
644#endif
645
646 unsigned long i_state;
647 unsigned long dirtied_when;
648
649 unsigned int i_flags;
650
651 atomic_t i_writecount;
652#ifdef CONFIG_SECURITY
653 void *i_security;
654#endif
655 void *i_private;
656};
657
658
659
660
661
662
663
664
665
666
667
668
669enum inode_i_mutex_lock_class
670{
671 I_MUTEX_NORMAL,
672 I_MUTEX_PARENT,
673 I_MUTEX_CHILD,
674 I_MUTEX_XATTR,
675 I_MUTEX_QUOTA
676};
677
678extern void inode_double_lock(struct inode *inode1, struct inode *inode2);
679extern void inode_double_unlock(struct inode *inode1, struct inode *inode2);
680
681
682
683
684
685
686
687
688
689
690
691static inline loff_t i_size_read(const struct inode *inode)
692{
693#if BITS_PER_LONG==32 && defined(CONFIG_SMP)
694 loff_t i_size;
695 unsigned int seq;
696
697 do {
698 seq = read_seqcount_begin(&inode->i_size_seqcount);
699 i_size = inode->i_size;
700 } while (read_seqcount_retry(&inode->i_size_seqcount, seq));
701 return i_size;
702#elif BITS_PER_LONG==32 && defined(CONFIG_PREEMPT)
703 loff_t i_size;
704
705 preempt_disable();
706 i_size = inode->i_size;
707 preempt_enable();
708 return i_size;
709#else
710 return inode->i_size;
711#endif
712}
713
714
715
716
717
718
719static inline void i_size_write(struct inode *inode, loff_t i_size)
720{
721#if BITS_PER_LONG==32 && defined(CONFIG_SMP)
722 write_seqcount_begin(&inode->i_size_seqcount);
723 inode->i_size = i_size;
724 write_seqcount_end(&inode->i_size_seqcount);
725#elif BITS_PER_LONG==32 && defined(CONFIG_PREEMPT)
726 preempt_disable();
727 inode->i_size = i_size;
728 preempt_enable();
729#else
730 inode->i_size = i_size;
731#endif
732}
733
734static inline unsigned iminor(const struct inode *inode)
735{
736 return MINOR(inode->i_rdev);
737}
738
739static inline unsigned imajor(const struct inode *inode)
740{
741 return MAJOR(inode->i_rdev);
742}
743
744extern struct block_device *I_BDEV(struct inode *inode);
745
746struct fown_struct {
747 rwlock_t lock;
748 struct pid *pid;
749 enum pid_type pid_type;
750 uid_t uid, euid;
751 int signum;
752};
753
754
755
756
757struct file_ra_state {
758 pgoff_t start;
759 unsigned int size;
760 unsigned int async_size;
761
762
763 unsigned int ra_pages;
764 int mmap_miss;
765 loff_t prev_pos;
766};
767
768
769
770
771static inline int ra_has_index(struct file_ra_state *ra, pgoff_t index)
772{
773 return (index >= ra->start &&
774 index < ra->start + ra->size);
775}
776
777struct file {
778
779
780
781
782 union {
783 struct list_head fu_list;
784 struct rcu_head fu_rcuhead;
785 } f_u;
786 struct path f_path;
787#define f_dentry f_path.dentry
788#define f_vfsmnt f_path.mnt
789 const struct file_operations *f_op;
790 atomic_t f_count;
791 unsigned int f_flags;
792 mode_t f_mode;
793 loff_t f_pos;
794 struct fown_struct f_owner;
795 unsigned int f_uid, f_gid;
796 struct file_ra_state f_ra;
797
798 u64 f_version;
799#ifdef CONFIG_SECURITY
800 void *f_security;
801#endif
802
803 void *private_data;
804
805#ifdef CONFIG_EPOLL
806
807 struct list_head f_ep_links;
808 spinlock_t f_ep_lock;
809#endif
810 struct address_space *f_mapping;
811};
812extern spinlock_t files_lock;
813#define file_list_lock() spin_lock(&files_lock);
814#define file_list_unlock() spin_unlock(&files_lock);
815
816#define get_file(x) atomic_inc(&(x)->f_count)
817#define file_count(x) atomic_read(&(x)->f_count)
818
819#define MAX_NON_LFS ((1UL<<31) - 1)
820
821
822
823#if BITS_PER_LONG==32
824#define MAX_LFS_FILESIZE (((u64)PAGE_CACHE_SIZE << (BITS_PER_LONG-1))-1)
825#elif BITS_PER_LONG==64
826#define MAX_LFS_FILESIZE 0x7fffffffffffffffUL
827#endif
828
829#define FL_POSIX 1
830#define FL_FLOCK 2
831#define FL_ACCESS 8
832#define FL_EXISTS 16
833#define FL_LEASE 32
834#define FL_CLOSE 64
835#define FL_SLEEP 128
836
837
838
839
840
841
842
843
844typedef struct files_struct *fl_owner_t;
845
846struct file_lock_operations {
847 void (*fl_insert)(struct file_lock *);
848 void (*fl_remove)(struct file_lock *);
849 void (*fl_copy_lock)(struct file_lock *, struct file_lock *);
850 void (*fl_release_private)(struct file_lock *);
851};
852
853struct lock_manager_operations {
854 int (*fl_compare_owner)(struct file_lock *, struct file_lock *);
855 void (*fl_notify)(struct file_lock *);
856 int (*fl_grant)(struct file_lock *, struct file_lock *, int);
857 void (*fl_copy_lock)(struct file_lock *, struct file_lock *);
858 void (*fl_release_private)(struct file_lock *);
859 void (*fl_break)(struct file_lock *);
860 int (*fl_mylease)(struct file_lock *, struct file_lock *);
861 int (*fl_change)(struct file_lock **, int);
862};
863
864
865#include <linux/nfs_fs_i.h>
866
867struct file_lock {
868 struct file_lock *fl_next;
869 struct list_head fl_link;
870 struct list_head fl_block;
871 fl_owner_t fl_owner;
872 unsigned int fl_pid;
873 wait_queue_head_t fl_wait;
874 struct file *fl_file;
875 unsigned char fl_flags;
876 unsigned char fl_type;
877 loff_t fl_start;
878 loff_t fl_end;
879
880 struct fasync_struct * fl_fasync;
881 unsigned long fl_break_time;
882
883 struct file_lock_operations *fl_ops;
884 struct lock_manager_operations *fl_lmops;
885 union {
886 struct nfs_lock_info nfs_fl;
887 struct nfs4_lock_info nfs4_fl;
888 struct {
889 struct list_head link;
890 int state;
891 } afs;
892 } fl_u;
893};
894
895
896#ifndef OFFSET_MAX
897#define INT_LIMIT(x) (~((x)1 << (sizeof(x)*8 - 1)))
898#define OFFSET_MAX INT_LIMIT(loff_t)
899#define OFFT_OFFSET_MAX INT_LIMIT(off_t)
900#endif
901
902#include <linux/fcntl.h>
903
904extern int fcntl_getlk(struct file *, struct flock __user *);
905extern int fcntl_setlk(unsigned int, struct file *, unsigned int,
906 struct flock __user *);
907
908#if BITS_PER_LONG == 32
909extern int fcntl_getlk64(struct file *, struct flock64 __user *);
910extern int fcntl_setlk64(unsigned int, struct file *, unsigned int,
911 struct flock64 __user *);
912#endif
913
914extern void send_sigio(struct fown_struct *fown, int fd, int band);
915extern int fcntl_setlease(unsigned int fd, struct file *filp, long arg);
916extern int fcntl_getlease(struct file *filp);
917
918
919extern int do_sync_mapping_range(struct address_space *mapping, loff_t offset,
920 loff_t endbyte, unsigned int flags);
921
922
923extern void locks_init_lock(struct file_lock *);
924extern void locks_copy_lock(struct file_lock *, struct file_lock *);
925extern void locks_remove_posix(struct file *, fl_owner_t);
926extern void locks_remove_flock(struct file *);
927extern void posix_test_lock(struct file *, struct file_lock *);
928extern int posix_lock_file(struct file *, struct file_lock *, struct file_lock *);
929extern int posix_lock_file_wait(struct file *, struct file_lock *);
930extern int posix_unblock_lock(struct file *, struct file_lock *);
931extern int vfs_test_lock(struct file *, struct file_lock *);
932extern int vfs_lock_file(struct file *, unsigned int, struct file_lock *, struct file_lock *);
933extern int vfs_cancel_lock(struct file *filp, struct file_lock *fl);
934extern int flock_lock_file_wait(struct file *filp, struct file_lock *fl);
935extern int __break_lease(struct inode *inode, unsigned int flags);
936extern void lease_get_mtime(struct inode *, struct timespec *time);
937extern int generic_setlease(struct file *, long, struct file_lock **);
938extern int vfs_setlease(struct file *, long, struct file_lock **);
939extern int lease_modify(struct file_lock **, int);
940extern int lock_may_read(struct inode *, loff_t start, unsigned long count);
941extern int lock_may_write(struct inode *, loff_t start, unsigned long count);
942extern struct seq_operations locks_seq_operations;
943
944struct fasync_struct {
945 int magic;
946 int fa_fd;
947 struct fasync_struct *fa_next;
948 struct file *fa_file;
949};
950
951#define FASYNC_MAGIC 0x4601
952
953
954extern int fasync_helper(int, struct file *, int, struct fasync_struct **);
955
956extern void kill_fasync(struct fasync_struct **, int, int);
957
958extern void __kill_fasync(struct fasync_struct *, int, int);
959
960extern int __f_setown(struct file *filp, struct pid *, enum pid_type, int force);
961extern int f_setown(struct file *filp, unsigned long arg, int force);
962extern void f_delown(struct file *filp);
963extern pid_t f_getown(struct file *filp);
964extern int send_sigurg(struct fown_struct *fown);
965
966
967
968
969
970#define MNT_FORCE 0x00000001
971#define MNT_DETACH 0x00000002
972#define MNT_EXPIRE 0x00000004
973
974extern struct list_head super_blocks;
975extern spinlock_t sb_lock;
976
977#define sb_entry(list) list_entry((list), struct super_block, s_list)
978#define S_BIAS (1<<30)
979struct super_block {
980 struct list_head s_list;
981 dev_t s_dev;
982 unsigned long s_blocksize;
983 unsigned char s_blocksize_bits;
984 unsigned char s_dirt;
985 unsigned long long s_maxbytes;
986 struct file_system_type *s_type;
987 const struct super_operations *s_op;
988 struct dquot_operations *dq_op;
989 struct quotactl_ops *s_qcop;
990 const struct export_operations *s_export_op;
991 unsigned long s_flags;
992 unsigned long s_magic;
993 struct dentry *s_root;
994 struct rw_semaphore s_umount;
995 struct mutex s_lock;
996 int s_count;
997 int s_syncing;
998 int s_need_sync_fs;
999 atomic_t s_active;
1000#ifdef CONFIG_SECURITY
1001 void *s_security;
1002#endif
1003 struct xattr_handler **s_xattr;
1004
1005 struct list_head s_inodes;
1006 struct list_head s_dirty;
1007 struct list_head s_io;
1008 struct list_head s_more_io;
1009 struct hlist_head s_anon;
1010 struct list_head s_files;
1011
1012 struct block_device *s_bdev;
1013 struct mtd_info *s_mtd;
1014 struct list_head s_instances;
1015 struct quota_info s_dquot;
1016
1017 int s_frozen;
1018 wait_queue_head_t s_wait_unfrozen;
1019
1020 char s_id[32];
1021
1022 void *s_fs_info;
1023
1024
1025
1026
1027
1028 struct mutex s_vfs_rename_mutex;
1029
1030
1031
1032 u32 s_time_gran;
1033
1034
1035
1036
1037
1038 char *s_subtype;
1039};
1040
1041extern struct timespec current_fs_time(struct super_block *sb);
1042
1043
1044
1045
1046enum {
1047 SB_UNFROZEN = 0,
1048 SB_FREEZE_WRITE = 1,
1049 SB_FREEZE_TRANS = 2,
1050};
1051
1052#define vfs_check_frozen(sb, level) \
1053 wait_event((sb)->s_wait_unfrozen, ((sb)->s_frozen < (level)))
1054
1055#define get_fs_excl() atomic_inc(¤t->fs_excl)
1056#define put_fs_excl() atomic_dec(¤t->fs_excl)
1057#define has_fs_excl() atomic_read(¤t->fs_excl)
1058
1059#define is_owner_or_cap(inode) \
1060 ((current->fsuid == (inode)->i_uid) || capable(CAP_FOWNER))
1061
1062
1063extern void lock_super(struct super_block *);
1064extern void unlock_super(struct super_block *);
1065
1066
1067
1068
1069extern int vfs_permission(struct nameidata *, int);
1070extern int vfs_create(struct inode *, struct dentry *, int, struct nameidata *);
1071extern int vfs_mkdir(struct inode *, struct dentry *, int);
1072extern int vfs_mknod(struct inode *, struct dentry *, int, dev_t);
1073extern int vfs_symlink(struct inode *, struct dentry *, const char *, int);
1074extern int vfs_link(struct dentry *, struct inode *, struct dentry *);
1075extern int vfs_rmdir(struct inode *, struct dentry *);
1076extern int vfs_unlink(struct inode *, struct dentry *);
1077extern int vfs_rename(struct inode *, struct dentry *, struct inode *, struct dentry *);
1078
1079
1080
1081
1082extern void dentry_unhash(struct dentry *dentry);
1083
1084
1085
1086
1087extern int file_permission(struct file *, int);
1088
1089
1090
1091
1092
1093
1094
1095#define DT_UNKNOWN 0
1096#define DT_FIFO 1
1097#define DT_CHR 2
1098#define DT_DIR 4
1099#define DT_BLK 6
1100#define DT_REG 8
1101#define DT_LNK 10
1102#define DT_SOCK 12
1103#define DT_WHT 14
1104
1105#define OSYNC_METADATA (1<<0)
1106#define OSYNC_DATA (1<<1)
1107#define OSYNC_INODE (1<<2)
1108int generic_osync_inode(struct inode *, struct address_space *, int);
1109
1110
1111
1112
1113
1114
1115
1116typedef int (*filldir_t)(void *, const char *, int, loff_t, u64, unsigned);
1117
1118struct block_device_operations {
1119 int (*open) (struct inode *, struct file *);
1120 int (*release) (struct inode *, struct file *);
1121 int (*ioctl) (struct inode *, struct file *, unsigned, unsigned long);
1122 long (*unlocked_ioctl) (struct file *, unsigned, unsigned long);
1123 long (*compat_ioctl) (struct file *, unsigned, unsigned long);
1124 int (*direct_access) (struct block_device *, sector_t, unsigned long *);
1125 int (*media_changed) (struct gendisk *);
1126 int (*revalidate_disk) (struct gendisk *);
1127 int (*getgeo)(struct block_device *, struct hd_geometry *);
1128 struct module *owner;
1129};
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140typedef struct {
1141 size_t written;
1142 size_t count;
1143 union {
1144 char __user * buf;
1145 void *data;
1146 } arg;
1147 int error;
1148} read_descriptor_t;
1149
1150typedef int (*read_actor_t)(read_descriptor_t *, struct page *, unsigned long, unsigned long);
1151
1152
1153
1154
1155#define HAVE_COMPAT_IOCTL 1
1156#define HAVE_UNLOCKED_IOCTL 1
1157
1158
1159
1160
1161
1162
1163struct file_operations {
1164 struct module *owner;
1165 loff_t (*llseek) (struct file *, loff_t, int);
1166 ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
1167 ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);
1168 ssize_t (*aio_read) (struct kiocb *, const struct iovec *, unsigned long, loff_t);
1169 ssize_t (*aio_write) (struct kiocb *, const struct iovec *, unsigned long, loff_t);
1170 int (*readdir) (struct file *, void *, filldir_t);
1171 unsigned int (*poll) (struct file *, struct poll_table_struct *);
1172 int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long);
1173 long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
1174 long (*compat_ioctl) (struct file *, unsigned int, unsigned long);
1175 int (*mmap) (struct file *, struct vm_area_struct *);
1176 int (*open) (struct inode *, struct file *);
1177 int (*flush) (struct file *, fl_owner_t id);
1178 int (*release) (struct inode *, struct file *);
1179 int (*fsync) (struct file *, struct dentry *, int datasync);
1180 int (*aio_fsync) (struct kiocb *, int datasync);
1181 int (*fasync) (int, struct file *, int);
1182 int (*lock) (struct file *, int, struct file_lock *);
1183 ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int);
1184 unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
1185 int (*check_flags)(int);
1186 int (*dir_notify)(struct file *filp, unsigned long arg);
1187 int (*flock) (struct file *, int, struct file_lock *);
1188 ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int);
1189 ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int);
1190 int (*setlease)(struct file *, long, struct file_lock **);
1191};
1192
1193struct inode_operations {
1194 int (*create) (struct inode *,struct dentry *,int, struct nameidata *);
1195 struct dentry * (*lookup) (struct inode *,struct dentry *, struct nameidata *);
1196 int (*link) (struct dentry *,struct inode *,struct dentry *);
1197 int (*unlink) (struct inode *,struct dentry *);
1198 int (*symlink) (struct inode *,struct dentry *,const char *);
1199 int (*mkdir) (struct inode *,struct dentry *,int);
1200 int (*rmdir) (struct inode *,struct dentry *);
1201 int (*mknod) (struct inode *,struct dentry *,int,dev_t);
1202 int (*rename) (struct inode *, struct dentry *,
1203 struct inode *, struct dentry *);
1204 int (*readlink) (struct dentry *, char __user *,int);
1205 void * (*follow_link) (struct dentry *, struct nameidata *);
1206 void (*put_link) (struct dentry *, struct nameidata *, void *);
1207 void (*truncate) (struct inode *);
1208 int (*permission) (struct inode *, int, struct nameidata *);
1209 int (*setattr) (struct dentry *, struct iattr *);
1210 int (*getattr) (struct vfsmount *mnt, struct dentry *, struct kstat *);
1211 int (*setxattr) (struct dentry *, const char *,const void *,size_t,int);
1212 ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t);
1213 ssize_t (*listxattr) (struct dentry *, char *, size_t);
1214 int (*removexattr) (struct dentry *, const char *);
1215 void (*truncate_range)(struct inode *, loff_t, loff_t);
1216 long (*fallocate)(struct inode *inode, int mode, loff_t offset,
1217 loff_t len);
1218};
1219
1220struct seq_file;
1221
1222ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector,
1223 unsigned long nr_segs, unsigned long fast_segs,
1224 struct iovec *fast_pointer,
1225 struct iovec **ret_pointer);
1226
1227extern ssize_t vfs_read(struct file *, char __user *, size_t, loff_t *);
1228extern ssize_t vfs_write(struct file *, const char __user *, size_t, loff_t *);
1229extern ssize_t vfs_readv(struct file *, const struct iovec __user *,
1230 unsigned long, loff_t *);
1231extern ssize_t vfs_writev(struct file *, const struct iovec __user *,
1232 unsigned long, loff_t *);
1233
1234
1235
1236
1237
1238struct super_operations {
1239 struct inode *(*alloc_inode)(struct super_block *sb);
1240 void (*destroy_inode)(struct inode *);
1241
1242 void (*read_inode) (struct inode *);
1243
1244 void (*dirty_inode) (struct inode *);
1245 int (*write_inode) (struct inode *, int);
1246 void (*put_inode) (struct inode *);
1247 void (*drop_inode) (struct inode *);
1248 void (*delete_inode) (struct inode *);
1249 void (*put_super) (struct super_block *);
1250 void (*write_super) (struct super_block *);
1251 int (*sync_fs)(struct super_block *sb, int wait);
1252 void (*write_super_lockfs) (struct super_block *);
1253 void (*unlockfs) (struct super_block *);
1254 int (*statfs) (struct dentry *, struct kstatfs *);
1255 int (*remount_fs) (struct super_block *, int *, char *);
1256 void (*clear_inode) (struct inode *);
1257 void (*umount_begin) (struct vfsmount *, int);
1258
1259 int (*show_options)(struct seq_file *, struct vfsmount *);
1260 int (*show_stats)(struct seq_file *, struct vfsmount *);
1261#ifdef CONFIG_QUOTA
1262 ssize_t (*quota_read)(struct super_block *, int, char *, size_t, loff_t);
1263 ssize_t (*quota_write)(struct super_block *, int, const char *, size_t, loff_t);
1264#endif
1265};
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318#define I_DIRTY_SYNC 1
1319#define I_DIRTY_DATASYNC 2
1320#define I_DIRTY_PAGES 4
1321#define I_NEW 8
1322#define I_WILL_FREE 16
1323#define I_FREEING 32
1324#define I_CLEAR 64
1325#define __I_LOCK 7
1326#define I_LOCK (1 << __I_LOCK)
1327#define __I_SYNC 8
1328#define I_SYNC (1 << __I_SYNC)
1329
1330#define I_DIRTY (I_DIRTY_SYNC | I_DIRTY_DATASYNC | I_DIRTY_PAGES)
1331
1332extern void __mark_inode_dirty(struct inode *, int);
1333static inline void mark_inode_dirty(struct inode *inode)
1334{
1335 __mark_inode_dirty(inode, I_DIRTY);
1336}
1337
1338static inline void mark_inode_dirty_sync(struct inode *inode)
1339{
1340 __mark_inode_dirty(inode, I_DIRTY_SYNC);
1341}
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351static inline void inc_nlink(struct inode *inode)
1352{
1353 inode->i_nlink++;
1354}
1355
1356static inline void inode_inc_link_count(struct inode *inode)
1357{
1358 inc_nlink(inode);
1359 mark_inode_dirty(inode);
1360}
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373static inline void drop_nlink(struct inode *inode)
1374{
1375 inode->i_nlink--;
1376}
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386static inline void clear_nlink(struct inode *inode)
1387{
1388 inode->i_nlink = 0;
1389}
1390
1391static inline void inode_dec_link_count(struct inode *inode)
1392{
1393 drop_nlink(inode);
1394 mark_inode_dirty(inode);
1395}
1396
1397extern void touch_atime(struct vfsmount *mnt, struct dentry *dentry);
1398static inline void file_accessed(struct file *file)
1399{
1400 if (!(file->f_flags & O_NOATIME))
1401 touch_atime(file->f_path.mnt, file->f_path.dentry);
1402}
1403
1404int sync_inode(struct inode *inode, struct writeback_control *wbc);
1405
1406struct file_system_type {
1407 const char *name;
1408 int fs_flags;
1409 int (*get_sb) (struct file_system_type *, int,
1410 const char *, void *, struct vfsmount *);
1411 void (*kill_sb) (struct super_block *);
1412 struct module *owner;
1413 struct file_system_type * next;
1414 struct list_head fs_supers;
1415
1416 struct lock_class_key s_lock_key;
1417 struct lock_class_key s_umount_key;
1418
1419 struct lock_class_key i_lock_key;
1420 struct lock_class_key i_mutex_key;
1421 struct lock_class_key i_mutex_dir_key;
1422 struct lock_class_key i_alloc_sem_key;
1423};
1424
1425extern int get_sb_bdev(struct file_system_type *fs_type,
1426 int flags, const char *dev_name, void *data,
1427 int (*fill_super)(struct super_block *, void *, int),
1428 struct vfsmount *mnt);
1429extern int get_sb_single(struct file_system_type *fs_type,
1430 int flags, void *data,
1431 int (*fill_super)(struct super_block *, void *, int),
1432 struct vfsmount *mnt);
1433extern int get_sb_nodev(struct file_system_type *fs_type,
1434 int flags, void *data,
1435 int (*fill_super)(struct super_block *, void *, int),
1436 struct vfsmount *mnt);
1437void generic_shutdown_super(struct super_block *sb);
1438void kill_block_super(struct super_block *sb);
1439void kill_anon_super(struct super_block *sb);
1440void kill_litter_super(struct super_block *sb);
1441void deactivate_super(struct super_block *sb);
1442int set_anon_super(struct super_block *s, void *data);
1443struct super_block *sget(struct file_system_type *type,
1444 int (*test)(struct super_block *,void *),
1445 int (*set)(struct super_block *,void *),
1446 void *data);
1447extern int get_sb_pseudo(struct file_system_type *, char *,
1448 const struct super_operations *ops, unsigned long,
1449 struct vfsmount *mnt);
1450extern int simple_set_mnt(struct vfsmount *mnt, struct super_block *sb);
1451int __put_super(struct super_block *sb);
1452int __put_super_and_need_restart(struct super_block *sb);
1453void unnamed_dev_init(void);
1454
1455
1456#define fops_get(fops) \
1457 (((fops) && try_module_get((fops)->owner) ? (fops) : NULL))
1458#define fops_put(fops) \
1459 do { if (fops) module_put((fops)->owner); } while(0)
1460
1461extern int register_filesystem(struct file_system_type *);
1462extern int unregister_filesystem(struct file_system_type *);
1463extern struct vfsmount *kern_mount_data(struct file_system_type *, void *data);
1464#define kern_mount(type) kern_mount_data(type, NULL)
1465extern int may_umount_tree(struct vfsmount *);
1466extern int may_umount(struct vfsmount *);
1467extern void umount_tree(struct vfsmount *, int, struct list_head *);
1468extern void release_mounts(struct list_head *);
1469extern long do_mount(char *, char *, char *, unsigned long, void *);
1470extern struct vfsmount *copy_tree(struct vfsmount *, struct dentry *, int);
1471extern void mnt_set_mountpoint(struct vfsmount *, struct dentry *,
1472 struct vfsmount *);
1473extern struct vfsmount *collect_mounts(struct vfsmount *, struct dentry *);
1474extern void drop_collected_mounts(struct vfsmount *);
1475
1476extern int vfs_statfs(struct dentry *, struct kstatfs *);
1477
1478
1479extern struct kset fs_subsys;
1480
1481#define FLOCK_VERIFY_READ 1
1482#define FLOCK_VERIFY_WRITE 2
1483
1484extern int locks_mandatory_locked(struct inode *);
1485extern int locks_mandatory_area(int, struct inode *, struct file *, loff_t, size_t);
1486
1487
1488
1489
1490
1491
1492static inline int __mandatory_lock(struct inode *ino)
1493{
1494 return (ino->i_mode & (S_ISGID | S_IXGRP)) == S_ISGID;
1495}
1496
1497
1498
1499
1500
1501
1502static inline int mandatory_lock(struct inode *ino)
1503{
1504 return IS_MANDLOCK(ino) && __mandatory_lock(ino);
1505}
1506
1507static inline int locks_verify_locked(struct inode *inode)
1508{
1509 if (mandatory_lock(inode))
1510 return locks_mandatory_locked(inode);
1511 return 0;
1512}
1513
1514extern int rw_verify_area(int, struct file *, loff_t *, size_t);
1515
1516static inline int locks_verify_truncate(struct inode *inode,
1517 struct file *filp,
1518 loff_t size)
1519{
1520 if (inode->i_flock && mandatory_lock(inode))
1521 return locks_mandatory_area(
1522 FLOCK_VERIFY_WRITE, inode, filp,
1523 size < inode->i_size ? size : inode->i_size,
1524 (size < inode->i_size ? inode->i_size - size
1525 : size - inode->i_size)
1526 );
1527 return 0;
1528}
1529
1530static inline int break_lease(struct inode *inode, unsigned int mode)
1531{
1532 if (inode->i_flock)
1533 return __break_lease(inode, mode);
1534 return 0;
1535}
1536
1537
1538
1539extern int do_truncate(struct dentry *, loff_t start, unsigned int time_attrs,
1540 struct file *filp);
1541extern long do_sys_open(int dfd, const char __user *filename, int flags,
1542 int mode);
1543extern struct file *filp_open(const char *, int, int);
1544extern struct file * dentry_open(struct dentry *, struct vfsmount *, int);
1545extern int filp_close(struct file *, fl_owner_t id);
1546extern char * getname(const char __user *);
1547
1548
1549extern void __init vfs_caches_init_early(void);
1550extern void __init vfs_caches_init(unsigned long);
1551
1552extern struct kmem_cache *names_cachep;
1553
1554#define __getname() kmem_cache_alloc(names_cachep, GFP_KERNEL)
1555#define __putname(name) kmem_cache_free(names_cachep, (void *)(name))
1556#ifndef CONFIG_AUDITSYSCALL
1557#define putname(name) __putname(name)
1558#else
1559extern void putname(const char *name);
1560#endif
1561
1562#ifdef CONFIG_BLOCK
1563extern int register_blkdev(unsigned int, const char *);
1564extern void unregister_blkdev(unsigned int, const char *);
1565extern struct block_device *bdget(dev_t);
1566extern void bd_set_size(struct block_device *, loff_t size);
1567extern void bd_forget(struct inode *inode);
1568extern void bdput(struct block_device *);
1569extern struct block_device *open_by_devnum(dev_t, unsigned);
1570extern const struct address_space_operations def_blk_aops;
1571#else
1572static inline void bd_forget(struct inode *inode) {}
1573#endif
1574extern const struct file_operations def_blk_fops;
1575extern const struct file_operations def_chr_fops;
1576extern const struct file_operations bad_sock_fops;
1577extern const struct file_operations def_fifo_fops;
1578#ifdef CONFIG_BLOCK
1579extern int ioctl_by_bdev(struct block_device *, unsigned, unsigned long);
1580extern int blkdev_ioctl(struct inode *, struct file *, unsigned, unsigned long);
1581extern int blkdev_driver_ioctl(struct inode *inode, struct file *file,
1582 struct gendisk *disk, unsigned cmd,
1583 unsigned long arg);
1584extern long compat_blkdev_ioctl(struct file *, unsigned, unsigned long);
1585extern int blkdev_get(struct block_device *, mode_t, unsigned);
1586extern int blkdev_put(struct block_device *);
1587extern int bd_claim(struct block_device *, void *);
1588extern void bd_release(struct block_device *);
1589#ifdef CONFIG_SYSFS
1590extern int bd_claim_by_disk(struct block_device *, void *, struct gendisk *);
1591extern void bd_release_from_disk(struct block_device *, struct gendisk *);
1592#else
1593#define bd_claim_by_disk(bdev, holder, disk) bd_claim(bdev, holder)
1594#define bd_release_from_disk(bdev, disk) bd_release(bdev)
1595#endif
1596#endif
1597
1598
1599#define CHRDEV_MAJOR_HASH_SIZE 255
1600extern int alloc_chrdev_region(dev_t *, unsigned, unsigned, const char *);
1601extern int register_chrdev_region(dev_t, unsigned, const char *);
1602extern int register_chrdev(unsigned int, const char *,
1603 const struct file_operations *);
1604extern void unregister_chrdev(unsigned int, const char *);
1605extern void unregister_chrdev_region(dev_t, unsigned);
1606extern int chrdev_open(struct inode *, struct file *);
1607extern void chrdev_show(struct seq_file *,off_t);
1608
1609
1610#define BDEVNAME_SIZE 32
1611
1612#ifdef CONFIG_BLOCK
1613#define BLKDEV_MAJOR_HASH_SIZE 255
1614extern const char *__bdevname(dev_t, char *buffer);
1615extern const char *bdevname(struct block_device *bdev, char *buffer);
1616extern struct block_device *lookup_bdev(const char *);
1617extern struct block_device *open_bdev_excl(const char *, int, void *);
1618extern void close_bdev_excl(struct block_device *);
1619extern void blkdev_show(struct seq_file *,off_t);
1620#else
1621#define BLKDEV_MAJOR_HASH_SIZE 0
1622#endif
1623
1624extern void init_special_inode(struct inode *, umode_t, dev_t);
1625
1626
1627extern void make_bad_inode(struct inode *);
1628extern int is_bad_inode(struct inode *);
1629
1630extern const struct file_operations read_fifo_fops;
1631extern const struct file_operations write_fifo_fops;
1632extern const struct file_operations rdwr_fifo_fops;
1633
1634extern int fs_may_remount_ro(struct super_block *);
1635
1636#ifdef CONFIG_BLOCK
1637
1638
1639
1640#define bio_rw(bio) ((bio)->bi_rw & (RW_MASK | RWA_MASK))
1641
1642
1643
1644
1645#define bio_data_dir(bio) ((bio)->bi_rw & 1)
1646
1647extern int check_disk_change(struct block_device *);
1648extern int __invalidate_device(struct block_device *);
1649extern int invalidate_partition(struct gendisk *, int);
1650#endif
1651extern int invalidate_inodes(struct super_block *);
1652unsigned long __invalidate_mapping_pages(struct address_space *mapping,
1653 pgoff_t start, pgoff_t end,
1654 bool be_atomic);
1655unsigned long invalidate_mapping_pages(struct address_space *mapping,
1656 pgoff_t start, pgoff_t end);
1657
1658static inline unsigned long __deprecated
1659invalidate_inode_pages(struct address_space *mapping)
1660{
1661 return invalidate_mapping_pages(mapping, 0, ~0UL);
1662}
1663
1664static inline void invalidate_remote_inode(struct inode *inode)
1665{
1666 if (S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) ||
1667 S_ISLNK(inode->i_mode))
1668 invalidate_mapping_pages(inode->i_mapping, 0, -1);
1669}
1670extern int invalidate_inode_pages2(struct address_space *mapping);
1671extern int invalidate_inode_pages2_range(struct address_space *mapping,
1672 pgoff_t start, pgoff_t end);
1673extern int write_inode_now(struct inode *, int);
1674extern int filemap_fdatawrite(struct address_space *);
1675extern int filemap_flush(struct address_space *);
1676extern int filemap_fdatawait(struct address_space *);
1677extern int filemap_write_and_wait(struct address_space *mapping);
1678extern int filemap_write_and_wait_range(struct address_space *mapping,
1679 loff_t lstart, loff_t lend);
1680extern int wait_on_page_writeback_range(struct address_space *mapping,
1681 pgoff_t start, pgoff_t end);
1682extern int __filemap_fdatawrite_range(struct address_space *mapping,
1683 loff_t start, loff_t end, int sync_mode);
1684
1685extern long do_fsync(struct file *file, int datasync);
1686extern void sync_supers(void);
1687extern void sync_filesystems(int wait);
1688extern void __fsync_super(struct super_block *sb);
1689extern void emergency_sync(void);
1690extern void emergency_remount(void);
1691extern int do_remount_sb(struct super_block *sb, int flags,
1692 void *data, int force);
1693#ifdef CONFIG_BLOCK
1694extern sector_t bmap(struct inode *, sector_t);
1695#endif
1696extern int notify_change(struct dentry *, struct iattr *);
1697extern int permission(struct inode *, int, struct nameidata *);
1698extern int generic_permission(struct inode *, int,
1699 int (*check_acl)(struct inode *, int));
1700
1701extern int get_write_access(struct inode *);
1702extern int deny_write_access(struct file *);
1703static inline void put_write_access(struct inode * inode)
1704{
1705 atomic_dec(&inode->i_writecount);
1706}
1707static inline void allow_write_access(struct file *file)
1708{
1709 if (file)
1710 atomic_inc(&file->f_path.dentry->d_inode->i_writecount);
1711}
1712extern int do_pipe(int *);
1713extern struct file *create_read_pipe(struct file *f);
1714extern struct file *create_write_pipe(void);
1715extern void free_write_pipe(struct file *);
1716
1717extern int open_namei(int dfd, const char *, int, int, struct nameidata *);
1718extern int may_open(struct nameidata *, int, int);
1719
1720extern int kernel_read(struct file *, unsigned long, char *, unsigned long);
1721extern struct file * open_exec(const char *);
1722
1723
1724extern int is_subdir(struct dentry *, struct dentry *);
1725extern ino_t find_inode_number(struct dentry *, struct qstr *);
1726
1727#include <linux/err.h>
1728
1729
1730extern loff_t default_llseek(struct file *file, loff_t offset, int origin);
1731
1732extern loff_t vfs_llseek(struct file *file, loff_t offset, int origin);
1733
1734extern void inode_init_once(struct inode *);
1735extern void iput(struct inode *);
1736extern struct inode * igrab(struct inode *);
1737extern ino_t iunique(struct super_block *, ino_t);
1738extern int inode_needs_sync(struct inode *inode);
1739extern void generic_delete_inode(struct inode *inode);
1740extern void generic_drop_inode(struct inode *inode);
1741
1742extern struct inode *ilookup5_nowait(struct super_block *sb,
1743 unsigned long hashval, int (*test)(struct inode *, void *),
1744 void *data);
1745extern struct inode *ilookup5(struct super_block *sb, unsigned long hashval,
1746 int (*test)(struct inode *, void *), void *data);
1747extern struct inode *ilookup(struct super_block *sb, unsigned long ino);
1748
1749extern struct inode * iget5_locked(struct super_block *, unsigned long, int (*test)(struct inode *, void *), int (*set)(struct inode *, void *), void *);
1750extern struct inode * iget_locked(struct super_block *, unsigned long);
1751extern void unlock_new_inode(struct inode *);
1752
1753static inline struct inode *iget(struct super_block *sb, unsigned long ino)
1754{
1755 struct inode *inode = iget_locked(sb, ino);
1756
1757 if (inode && (inode->i_state & I_NEW)) {
1758 sb->s_op->read_inode(inode);
1759 unlock_new_inode(inode);
1760 }
1761
1762 return inode;
1763}
1764
1765extern void __iget(struct inode * inode);
1766extern void clear_inode(struct inode *);
1767extern void destroy_inode(struct inode *);
1768extern struct inode *new_inode(struct super_block *);
1769extern int __remove_suid(struct dentry *, int);
1770extern int should_remove_suid(struct dentry *);
1771extern int remove_suid(struct dentry *);
1772
1773extern void __insert_inode_hash(struct inode *, unsigned long hashval);
1774extern void remove_inode_hash(struct inode *);
1775static inline void insert_inode_hash(struct inode *inode) {
1776 __insert_inode_hash(inode, inode->i_ino);
1777}
1778
1779extern struct file * get_empty_filp(void);
1780extern void file_move(struct file *f, struct list_head *list);
1781extern void file_kill(struct file *f);
1782#ifdef CONFIG_BLOCK
1783struct bio;
1784extern void submit_bio(int, struct bio *);
1785extern int bdev_read_only(struct block_device *);
1786#endif
1787extern int set_blocksize(struct block_device *, int);
1788extern int sb_set_blocksize(struct super_block *, int);
1789extern int sb_min_blocksize(struct super_block *, int);
1790extern int sb_has_dirty_inodes(struct super_block *);
1791
1792extern int generic_file_mmap(struct file *, struct vm_area_struct *);
1793extern int generic_file_readonly_mmap(struct file *, struct vm_area_struct *);
1794extern int file_read_actor(read_descriptor_t * desc, struct page *page, unsigned long offset, unsigned long size);
1795int generic_write_checks(struct file *file, loff_t *pos, size_t *count, int isblk);
1796extern ssize_t generic_file_aio_read(struct kiocb *, const struct iovec *, unsigned long, loff_t);
1797extern ssize_t generic_file_aio_write(struct kiocb *, const struct iovec *, unsigned long, loff_t);
1798extern ssize_t generic_file_aio_write_nolock(struct kiocb *, const struct iovec *,
1799 unsigned long, loff_t);
1800extern ssize_t generic_file_direct_write(struct kiocb *, const struct iovec *,
1801 unsigned long *, loff_t, loff_t *, size_t, size_t);
1802extern ssize_t generic_file_buffered_write(struct kiocb *, const struct iovec *,
1803 unsigned long, loff_t, loff_t *, size_t, ssize_t);
1804extern ssize_t do_sync_read(struct file *filp, char __user *buf, size_t len, loff_t *ppos);
1805extern ssize_t do_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos);
1806extern void do_generic_mapping_read(struct address_space *mapping,
1807 struct file_ra_state *, struct file *,
1808 loff_t *, read_descriptor_t *, read_actor_t);
1809extern int generic_segment_checks(const struct iovec *iov,
1810 unsigned long *nr_segs, size_t *count, int access_flags);
1811
1812
1813extern ssize_t generic_file_splice_read(struct file *, loff_t *,
1814 struct pipe_inode_info *, size_t, unsigned int);
1815extern ssize_t generic_file_splice_write(struct pipe_inode_info *,
1816 struct file *, loff_t *, size_t, unsigned int);
1817extern ssize_t generic_file_splice_write_nolock(struct pipe_inode_info *,
1818 struct file *, loff_t *, size_t, unsigned int);
1819extern ssize_t generic_splice_sendpage(struct pipe_inode_info *pipe,
1820 struct file *out, loff_t *, size_t len, unsigned int flags);
1821extern long do_splice_direct(struct file *in, loff_t *ppos, struct file *out,
1822 size_t len, unsigned int flags);
1823
1824extern void
1825file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping);
1826extern loff_t no_llseek(struct file *file, loff_t offset, int origin);
1827extern loff_t generic_file_llseek(struct file *file, loff_t offset, int origin);
1828extern loff_t remote_llseek(struct file *file, loff_t offset, int origin);
1829extern int generic_file_open(struct inode * inode, struct file * filp);
1830extern int nonseekable_open(struct inode * inode, struct file * filp);
1831
1832#ifdef CONFIG_FS_XIP
1833extern ssize_t xip_file_read(struct file *filp, char __user *buf, size_t len,
1834 loff_t *ppos);
1835extern int xip_file_mmap(struct file * file, struct vm_area_struct * vma);
1836extern ssize_t xip_file_write(struct file *filp, const char __user *buf,
1837 size_t len, loff_t *ppos);
1838extern int xip_truncate_page(struct address_space *mapping, loff_t from);
1839#else
1840static inline int xip_truncate_page(struct address_space *mapping, loff_t from)
1841{
1842 return 0;
1843}
1844#endif
1845
1846static inline void do_generic_file_read(struct file * filp, loff_t *ppos,
1847 read_descriptor_t * desc,
1848 read_actor_t actor)
1849{
1850 do_generic_mapping_read(filp->f_mapping,
1851 &filp->f_ra,
1852 filp,
1853 ppos,
1854 desc,
1855 actor);
1856}
1857
1858#ifdef CONFIG_BLOCK
1859ssize_t __blockdev_direct_IO(int rw, struct kiocb *iocb, struct inode *inode,
1860 struct block_device *bdev, const struct iovec *iov, loff_t offset,
1861 unsigned long nr_segs, get_block_t get_block, dio_iodone_t end_io,
1862 int lock_type);
1863
1864enum {
1865 DIO_LOCKING = 1,
1866 DIO_NO_LOCKING,
1867 DIO_OWN_LOCKING,
1868};
1869
1870static inline ssize_t blockdev_direct_IO(int rw, struct kiocb *iocb,
1871 struct inode *inode, struct block_device *bdev, const struct iovec *iov,
1872 loff_t offset, unsigned long nr_segs, get_block_t get_block,
1873 dio_iodone_t end_io)
1874{
1875 return __blockdev_direct_IO(rw, iocb, inode, bdev, iov, offset,
1876 nr_segs, get_block, end_io, DIO_LOCKING);
1877}
1878
1879static inline ssize_t blockdev_direct_IO_no_locking(int rw, struct kiocb *iocb,
1880 struct inode *inode, struct block_device *bdev, const struct iovec *iov,
1881 loff_t offset, unsigned long nr_segs, get_block_t get_block,
1882 dio_iodone_t end_io)
1883{
1884 return __blockdev_direct_IO(rw, iocb, inode, bdev, iov, offset,
1885 nr_segs, get_block, end_io, DIO_NO_LOCKING);
1886}
1887
1888static inline ssize_t blockdev_direct_IO_own_locking(int rw, struct kiocb *iocb,
1889 struct inode *inode, struct block_device *bdev, const struct iovec *iov,
1890 loff_t offset, unsigned long nr_segs, get_block_t get_block,
1891 dio_iodone_t end_io)
1892{
1893 return __blockdev_direct_IO(rw, iocb, inode, bdev, iov, offset,
1894 nr_segs, get_block, end_io, DIO_OWN_LOCKING);
1895}
1896#endif
1897
1898extern const struct file_operations generic_ro_fops;
1899
1900#define special_file(m) (S_ISCHR(m)||S_ISBLK(m)||S_ISFIFO(m)||S_ISSOCK(m))
1901
1902extern int vfs_readlink(struct dentry *, char __user *, int, const char *);
1903extern int vfs_follow_link(struct nameidata *, const char *);
1904extern int page_readlink(struct dentry *, char __user *, int);
1905extern void *page_follow_link_light(struct dentry *, struct nameidata *);
1906extern void page_put_link(struct dentry *, struct nameidata *, void *);
1907extern int __page_symlink(struct inode *inode, const char *symname, int len,
1908 gfp_t gfp_mask);
1909extern int page_symlink(struct inode *inode, const char *symname, int len);
1910extern const struct inode_operations page_symlink_inode_operations;
1911extern int generic_readlink(struct dentry *, char __user *, int);
1912extern void generic_fillattr(struct inode *, struct kstat *);
1913extern int vfs_getattr(struct vfsmount *, struct dentry *, struct kstat *);
1914void inode_add_bytes(struct inode *inode, loff_t bytes);
1915void inode_sub_bytes(struct inode *inode, loff_t bytes);
1916loff_t inode_get_bytes(struct inode *inode);
1917void inode_set_bytes(struct inode *inode, loff_t bytes);
1918
1919extern int vfs_readdir(struct file *, filldir_t, void *);
1920
1921extern int vfs_stat(char __user *, struct kstat *);
1922extern int vfs_lstat(char __user *, struct kstat *);
1923extern int vfs_stat_fd(int dfd, char __user *, struct kstat *);
1924extern int vfs_lstat_fd(int dfd, char __user *, struct kstat *);
1925extern int vfs_fstat(unsigned int, struct kstat *);
1926
1927extern int vfs_ioctl(struct file *, unsigned int, unsigned int, unsigned long);
1928
1929extern void get_filesystem(struct file_system_type *fs);
1930extern void put_filesystem(struct file_system_type *fs);
1931extern struct file_system_type *get_fs_type(const char *name);
1932extern struct super_block *get_super(struct block_device *);
1933extern struct super_block *user_get_super(dev_t);
1934extern void drop_super(struct super_block *sb);
1935
1936extern int dcache_dir_open(struct inode *, struct file *);
1937extern int dcache_dir_close(struct inode *, struct file *);
1938extern loff_t dcache_dir_lseek(struct file *, loff_t, int);
1939extern int dcache_readdir(struct file *, void *, filldir_t);
1940extern int simple_getattr(struct vfsmount *, struct dentry *, struct kstat *);
1941extern int simple_statfs(struct dentry *, struct kstatfs *);
1942extern int simple_link(struct dentry *, struct inode *, struct dentry *);
1943extern int simple_unlink(struct inode *, struct dentry *);
1944extern int simple_rmdir(struct inode *, struct dentry *);
1945extern int simple_rename(struct inode *, struct dentry *, struct inode *, struct dentry *);
1946extern int simple_sync_file(struct file *, struct dentry *, int);
1947extern int simple_empty(struct dentry *);
1948extern int simple_readpage(struct file *file, struct page *page);
1949extern int simple_prepare_write(struct file *file, struct page *page,
1950 unsigned offset, unsigned to);
1951extern int simple_write_begin(struct file *file, struct address_space *mapping,
1952 loff_t pos, unsigned len, unsigned flags,
1953 struct page **pagep, void **fsdata);
1954extern int simple_write_end(struct file *file, struct address_space *mapping,
1955 loff_t pos, unsigned len, unsigned copied,
1956 struct page *page, void *fsdata);
1957
1958extern struct dentry *simple_lookup(struct inode *, struct dentry *, struct nameidata *);
1959extern ssize_t generic_read_dir(struct file *, char __user *, size_t, loff_t *);
1960extern const struct file_operations simple_dir_operations;
1961extern const struct inode_operations simple_dir_inode_operations;
1962struct tree_descr { char *name; const struct file_operations *ops; int mode; };
1963struct dentry *d_alloc_name(struct dentry *, const char *);
1964extern int simple_fill_super(struct super_block *, int, struct tree_descr *);
1965extern int simple_pin_fs(struct file_system_type *, struct vfsmount **mount, int *count);
1966extern void simple_release_fs(struct vfsmount **mount, int *count);
1967
1968extern ssize_t simple_read_from_buffer(void __user *, size_t, loff_t *, const void *, size_t);
1969
1970#ifdef CONFIG_MIGRATION
1971extern int buffer_migrate_page(struct address_space *,
1972 struct page *, struct page *);
1973#else
1974#define buffer_migrate_page NULL
1975#endif
1976
1977extern int inode_change_ok(struct inode *, struct iattr *);
1978extern int __must_check inode_setattr(struct inode *, struct iattr *);
1979
1980extern void file_update_time(struct file *file);
1981
1982static inline ino_t parent_ino(struct dentry *dentry)
1983{
1984 ino_t res;
1985
1986 spin_lock(&dentry->d_lock);
1987 res = dentry->d_parent->d_inode->i_ino;
1988 spin_unlock(&dentry->d_lock);
1989 return res;
1990}
1991
1992
1993extern int unshare_files(void);
1994
1995
1996
1997
1998
1999
2000
2001struct simple_transaction_argresp {
2002 ssize_t size;
2003 char data[0];
2004};
2005
2006#define SIMPLE_TRANSACTION_LIMIT (PAGE_SIZE - sizeof(struct simple_transaction_argresp))
2007
2008char *simple_transaction_get(struct file *file, const char __user *buf,
2009 size_t size);
2010ssize_t simple_transaction_read(struct file *file, char __user *buf,
2011 size_t size, loff_t *pos);
2012int simple_transaction_release(struct inode *inode, struct file *file);
2013
2014static inline void simple_transaction_set(struct file *file, size_t n)
2015{
2016 struct simple_transaction_argresp *ar = file->private_data;
2017
2018 BUG_ON(n > SIMPLE_TRANSACTION_LIMIT);
2019
2020
2021
2022
2023
2024 smp_mb();
2025 ar->size = n;
2026}
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044#define DEFINE_SIMPLE_ATTRIBUTE(__fops, __get, __set, __fmt) \
2045static int __fops ## _open(struct inode *inode, struct file *file) \
2046{ \
2047 __simple_attr_check_format(__fmt, 0ull); \
2048 return simple_attr_open(inode, file, __get, __set, __fmt); \
2049} \
2050static struct file_operations __fops = { \
2051 .owner = THIS_MODULE, \
2052 .open = __fops ## _open, \
2053 .release = simple_attr_close, \
2054 .read = simple_attr_read, \
2055 .write = simple_attr_write, \
2056};
2057
2058static inline void __attribute__((format(printf, 1, 2)))
2059__simple_attr_check_format(const char *fmt, ...)
2060{
2061
2062}
2063
2064int simple_attr_open(struct inode *inode, struct file *file,
2065 u64 (*get)(void *), void (*set)(void *, u64),
2066 const char *fmt);
2067int simple_attr_close(struct inode *inode, struct file *file);
2068ssize_t simple_attr_read(struct file *file, char __user *buf,
2069 size_t len, loff_t *ppos);
2070ssize_t simple_attr_write(struct file *file, const char __user *buf,
2071 size_t len, loff_t *ppos);
2072
2073
2074#ifdef CONFIG_SECURITY
2075static inline char *alloc_secdata(void)
2076{
2077 return (char *)get_zeroed_page(GFP_KERNEL);
2078}
2079
2080static inline void free_secdata(void *secdata)
2081{
2082 free_page((unsigned long)secdata);
2083}
2084#else
2085static inline char *alloc_secdata(void)
2086{
2087 return (char *)1;
2088}
2089
2090static inline void free_secdata(void *secdata)
2091{ }
2092#endif
2093
2094struct ctl_table;
2095int proc_nr_files(struct ctl_table *table, int write, struct file *filp,
2096 void __user *buffer, size_t *lenp, loff_t *ppos);
2097
2098
2099#endif
2100#endif
2101