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