internal.h 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. /* SPDX-License-Identifier: GPL-2.0-or-later */
  2. /* fs/ internal definitions
  3. *
  4. * Copyright (C) 2006 Red Hat, Inc. All Rights Reserved.
  5. * Written by David Howells (dhowells@redhat.com)
  6. */
  7. struct super_block;
  8. struct file_system_type;
  9. struct iomap;
  10. struct iomap_ops;
  11. struct linux_binprm;
  12. struct path;
  13. struct mount;
  14. struct shrink_control;
  15. struct fs_context;
  16. struct user_namespace;
  17. /*
  18. * block_dev.c
  19. */
  20. #ifdef CONFIG_BLOCK
  21. extern void __init bdev_cache_init(void);
  22. extern int __sync_blockdev(struct block_device *bdev, int wait);
  23. void iterate_bdevs(void (*)(struct block_device *, void *), void *);
  24. void emergency_thaw_bdev(struct super_block *sb);
  25. void bd_forget(struct inode *inode);
  26. #else
  27. static inline void bdev_cache_init(void)
  28. {
  29. }
  30. static inline int __sync_blockdev(struct block_device *bdev, int wait)
  31. {
  32. return 0;
  33. }
  34. static inline void iterate_bdevs(void (*f)(struct block_device *, void *),
  35. void *arg)
  36. {
  37. }
  38. static inline int emergency_thaw_bdev(struct super_block *sb)
  39. {
  40. return 0;
  41. }
  42. static inline void bd_forget(struct inode *inode)
  43. {
  44. }
  45. #endif /* CONFIG_BLOCK */
  46. /*
  47. * buffer.c
  48. */
  49. extern int __block_write_begin_int(struct page *page, loff_t pos, unsigned len,
  50. get_block_t *get_block, struct iomap *iomap);
  51. /*
  52. * char_dev.c
  53. */
  54. extern void __init chrdev_init(void);
  55. /*
  56. * fs_context.c
  57. */
  58. extern const struct fs_context_operations legacy_fs_context_ops;
  59. extern int parse_monolithic_mount_data(struct fs_context *, void *);
  60. extern void fc_drop_locked(struct fs_context *);
  61. extern void vfs_clean_context(struct fs_context *fc);
  62. extern int finish_clean_context(struct fs_context *fc);
  63. /*
  64. * namei.c
  65. */
  66. extern int filename_lookup(int dfd, struct filename *name, unsigned flags,
  67. struct path *path, struct path *root);
  68. extern int vfs_path_lookup(struct dentry *, struct vfsmount *,
  69. const char *, unsigned int, struct path *);
  70. long do_rmdir(int dfd, struct filename *name);
  71. long do_unlinkat(int dfd, struct filename *name);
  72. int may_linkat(struct path *link);
  73. /*
  74. * namespace.c
  75. */
  76. extern void *copy_mount_options(const void __user *);
  77. extern char *copy_mount_string(const void __user *);
  78. extern struct vfsmount *lookup_mnt(const struct path *);
  79. extern int finish_automount(struct vfsmount *, struct path *);
  80. extern int sb_prepare_remount_readonly(struct super_block *);
  81. extern void __init mnt_init(void);
  82. extern int __mnt_want_write_file(struct file *);
  83. extern void __mnt_drop_write_file(struct file *);
  84. extern void dissolve_on_fput(struct vfsmount *);
  85. int path_mount(const char *dev_name, struct path *path,
  86. const char *type_page, unsigned long flags, void *data_page);
  87. int path_umount(struct path *path, int flags);
  88. /*
  89. * fs_struct.c
  90. */
  91. extern void chroot_fs_refs(const struct path *, const struct path *);
  92. /*
  93. * file_table.c
  94. */
  95. extern struct file *alloc_empty_file(int, const struct cred *);
  96. extern struct file *alloc_empty_file_noaccount(int, const struct cred *);
  97. /*
  98. * super.c
  99. */
  100. extern int reconfigure_super(struct fs_context *);
  101. extern bool trylock_super(struct super_block *sb);
  102. extern struct super_block *user_get_super(dev_t);
  103. extern bool mount_capable(struct fs_context *);
  104. /*
  105. * open.c
  106. */
  107. struct open_flags {
  108. int open_flag;
  109. umode_t mode;
  110. int acc_mode;
  111. int intent;
  112. int lookup_flags;
  113. };
  114. extern struct file *do_filp_open(int dfd, struct filename *pathname,
  115. const struct open_flags *op);
  116. extern struct file *do_file_open_root(struct dentry *, struct vfsmount *,
  117. const char *, const struct open_flags *);
  118. extern struct open_how build_open_how(int flags, umode_t mode);
  119. extern int build_open_flags(const struct open_how *how, struct open_flags *op);
  120. long do_sys_ftruncate(unsigned int fd, loff_t length, int small);
  121. int chmod_common(const struct path *path, umode_t mode);
  122. int do_fchownat(int dfd, const char __user *filename, uid_t user, gid_t group,
  123. int flag);
  124. int chown_common(const struct path *path, uid_t user, gid_t group);
  125. extern int vfs_open(const struct path *, struct file *);
  126. /*
  127. * inode.c
  128. */
  129. extern long prune_icache_sb(struct super_block *sb, struct shrink_control *sc);
  130. extern void inode_add_lru(struct inode *inode);
  131. extern int dentry_needs_remove_privs(struct dentry *dentry);
  132. /*
  133. * fs-writeback.c
  134. */
  135. extern long get_nr_dirty_inodes(void);
  136. extern int invalidate_inodes(struct super_block *, bool);
  137. /*
  138. * dcache.c
  139. */
  140. extern int d_set_mounted(struct dentry *dentry);
  141. extern long prune_dcache_sb(struct super_block *sb, struct shrink_control *sc);
  142. extern struct dentry *d_alloc_cursor(struct dentry *);
  143. extern struct dentry * d_alloc_pseudo(struct super_block *, const struct qstr *);
  144. extern char *simple_dname(struct dentry *, char *, int);
  145. extern void dput_to_list(struct dentry *, struct list_head *);
  146. extern void shrink_dentry_list(struct list_head *);
  147. /*
  148. * read_write.c
  149. */
  150. extern int rw_verify_area(int, struct file *, const loff_t *, size_t);
  151. /*
  152. * pipe.c
  153. */
  154. extern const struct file_operations pipefifo_fops;
  155. /*
  156. * fs_pin.c
  157. */
  158. extern void group_pin_kill(struct hlist_head *p);
  159. extern void mnt_pin_kill(struct mount *m);
  160. /*
  161. * fs/nsfs.c
  162. */
  163. extern const struct dentry_operations ns_dentry_operations;
  164. /* direct-io.c: */
  165. int sb_init_dio_done_wq(struct super_block *sb);
  166. /*
  167. * fs/stat.c:
  168. */
  169. int do_statx(int dfd, const char __user *filename, unsigned flags,
  170. unsigned int mask, struct statx __user *buffer);