internal.h 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  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 vfs_clean_context(struct fs_context *fc);
  61. extern int finish_clean_context(struct fs_context *fc);
  62. /*
  63. * namei.c
  64. */
  65. extern int filename_lookup(int dfd, struct filename *name, unsigned flags,
  66. struct path *path, struct path *root);
  67. extern int vfs_path_lookup(struct dentry *, struct vfsmount *,
  68. const char *, unsigned int, struct path *);
  69. long do_rmdir(int dfd, struct filename *name);
  70. long do_unlinkat(int dfd, struct filename *name);
  71. int may_linkat(struct path *link);
  72. /*
  73. * namespace.c
  74. */
  75. extern struct vfsmount *lookup_mnt(const struct path *);
  76. extern int finish_automount(struct vfsmount *, struct path *);
  77. extern int sb_prepare_remount_readonly(struct super_block *);
  78. extern void __init mnt_init(void);
  79. extern int __mnt_want_write_file(struct file *);
  80. extern void __mnt_drop_write_file(struct file *);
  81. extern void dissolve_on_fput(struct vfsmount *);
  82. int path_mount(const char *dev_name, struct path *path,
  83. const char *type_page, unsigned long flags, void *data_page);
  84. int path_umount(struct path *path, int flags);
  85. /*
  86. * fs_struct.c
  87. */
  88. extern void chroot_fs_refs(const struct path *, const struct path *);
  89. /*
  90. * file_table.c
  91. */
  92. extern struct file *alloc_empty_file(int, const struct cred *);
  93. extern struct file *alloc_empty_file_noaccount(int, const struct cred *);
  94. /*
  95. * super.c
  96. */
  97. extern int reconfigure_super(struct fs_context *);
  98. extern bool trylock_super(struct super_block *sb);
  99. extern struct super_block *user_get_super(dev_t);
  100. extern bool mount_capable(struct fs_context *);
  101. /*
  102. * open.c
  103. */
  104. struct open_flags {
  105. int open_flag;
  106. umode_t mode;
  107. int acc_mode;
  108. int intent;
  109. int lookup_flags;
  110. };
  111. extern struct file *do_filp_open(int dfd, struct filename *pathname,
  112. const struct open_flags *op);
  113. extern struct file *do_file_open_root(struct dentry *, struct vfsmount *,
  114. const char *, const struct open_flags *);
  115. extern struct open_how build_open_how(int flags, umode_t mode);
  116. extern int build_open_flags(const struct open_how *how, struct open_flags *op);
  117. long do_sys_ftruncate(unsigned int fd, loff_t length, int small);
  118. int chmod_common(const struct path *path, umode_t mode);
  119. int do_fchownat(int dfd, const char __user *filename, uid_t user, gid_t group,
  120. int flag);
  121. int chown_common(const struct path *path, uid_t user, gid_t group);
  122. extern int vfs_open(const struct path *, struct file *);
  123. /*
  124. * inode.c
  125. */
  126. extern long prune_icache_sb(struct super_block *sb, struct shrink_control *sc);
  127. extern void inode_add_lru(struct inode *inode);
  128. extern int dentry_needs_remove_privs(struct dentry *dentry);
  129. /*
  130. * fs-writeback.c
  131. */
  132. extern long get_nr_dirty_inodes(void);
  133. extern int invalidate_inodes(struct super_block *, bool);
  134. /*
  135. * dcache.c
  136. */
  137. extern int d_set_mounted(struct dentry *dentry);
  138. extern long prune_dcache_sb(struct super_block *sb, struct shrink_control *sc);
  139. extern struct dentry *d_alloc_cursor(struct dentry *);
  140. extern struct dentry * d_alloc_pseudo(struct super_block *, const struct qstr *);
  141. extern char *simple_dname(struct dentry *, char *, int);
  142. extern void dput_to_list(struct dentry *, struct list_head *);
  143. extern void shrink_dentry_list(struct list_head *);
  144. /*
  145. * read_write.c
  146. */
  147. extern int rw_verify_area(int, struct file *, const loff_t *, size_t);
  148. /*
  149. * pipe.c
  150. */
  151. extern const struct file_operations pipefifo_fops;
  152. /*
  153. * fs_pin.c
  154. */
  155. extern void group_pin_kill(struct hlist_head *p);
  156. extern void mnt_pin_kill(struct mount *m);
  157. /*
  158. * fs/nsfs.c
  159. */
  160. extern const struct dentry_operations ns_dentry_operations;
  161. /* direct-io.c: */
  162. int sb_init_dio_done_wq(struct super_block *sb);
  163. /*
  164. * fs/stat.c:
  165. */
  166. int do_statx(int dfd, const char __user *filename, unsigned flags,
  167. unsigned int mask, struct statx __user *buffer);