LCOV - code coverage report
Current view: top level - fs - internal.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 7 0.0 %
Date: 2023-07-19 18:55:55 Functions: 0 1 0.0 %

          Line data    Source code
       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             : 
       8             : struct super_block;
       9             : struct file_system_type;
      10             : struct iomap;
      11             : struct iomap_ops;
      12             : struct linux_binprm;
      13             : struct path;
      14             : struct mount;
      15             : struct shrink_control;
      16             : struct fs_context;
      17             : struct pipe_inode_info;
      18             : struct iov_iter;
      19             : struct mnt_idmap;
      20             : 
      21             : /*
      22             :  * block/bdev.c
      23             :  */
      24             : #ifdef CONFIG_BLOCK
      25             : extern void __init bdev_cache_init(void);
      26             : 
      27             : void emergency_thaw_bdev(struct super_block *sb);
      28             : #else
      29             : static inline void bdev_cache_init(void)
      30             : {
      31             : }
      32             : static inline int emergency_thaw_bdev(struct super_block *sb)
      33             : {
      34             :         return 0;
      35             : }
      36             : #endif /* CONFIG_BLOCK */
      37             : 
      38             : /*
      39             :  * buffer.c
      40             :  */
      41             : int __block_write_begin_int(struct folio *folio, loff_t pos, unsigned len,
      42             :                 get_block_t *get_block, const struct iomap *iomap);
      43             : 
      44             : /*
      45             :  * char_dev.c
      46             :  */
      47             : extern void __init chrdev_init(void);
      48             : 
      49             : /*
      50             :  * fs_context.c
      51             :  */
      52             : extern const struct fs_context_operations legacy_fs_context_ops;
      53             : extern int parse_monolithic_mount_data(struct fs_context *, void *);
      54             : extern void vfs_clean_context(struct fs_context *fc);
      55             : extern int finish_clean_context(struct fs_context *fc);
      56             : 
      57             : /*
      58             :  * namei.c
      59             :  */
      60             : extern int filename_lookup(int dfd, struct filename *name, unsigned flags,
      61             :                            struct path *path, struct path *root);
      62             : int do_rmdir(int dfd, struct filename *name);
      63             : int do_unlinkat(int dfd, struct filename *name);
      64             : int may_linkat(struct mnt_idmap *idmap, const struct path *link);
      65             : int do_renameat2(int olddfd, struct filename *oldname, int newdfd,
      66             :                  struct filename *newname, unsigned int flags);
      67             : int do_mkdirat(int dfd, struct filename *name, umode_t mode);
      68             : int do_symlinkat(struct filename *from, int newdfd, struct filename *to);
      69             : int do_linkat(int olddfd, struct filename *old, int newdfd,
      70             :                         struct filename *new, int flags);
      71             : 
      72             : /*
      73             :  * namespace.c
      74             :  */
      75             : extern struct vfsmount *lookup_mnt(const struct path *);
      76             : extern int finish_automount(struct vfsmount *, const struct path *);
      77             : 
      78             : extern int sb_prepare_remount_readonly(struct super_block *);
      79             : 
      80             : extern void __init mnt_init(void);
      81             : 
      82             : extern int __mnt_want_write_file(struct file *);
      83             : extern void __mnt_drop_write_file(struct file *);
      84             : 
      85             : extern void dissolve_on_fput(struct vfsmount *);
      86             : extern bool may_mount(void);
      87             : 
      88             : int path_mount(const char *dev_name, struct path *path,
      89             :                 const char *type_page, unsigned long flags, void *data_page);
      90             : int path_umount(struct path *path, int flags);
      91             : 
      92             : /*
      93             :  * fs_struct.c
      94             :  */
      95             : extern void chroot_fs_refs(const struct path *, const struct path *);
      96             : 
      97             : /*
      98             :  * file_table.c
      99             :  */
     100             : extern struct file *alloc_empty_file(int, const struct cred *);
     101             : extern struct file *alloc_empty_file_noaccount(int, const struct cred *);
     102             : 
     103           0 : static inline void put_file_access(struct file *file)
     104             : {
     105           0 :         if ((file->f_mode & (FMODE_READ | FMODE_WRITE)) == FMODE_READ) {
     106           0 :                 i_readcount_dec(file->f_inode);
     107           0 :         } else if (file->f_mode & FMODE_WRITER) {
     108           0 :                 put_write_access(file->f_inode);
     109           0 :                 __mnt_drop_write(file->f_path.mnt);
     110             :         }
     111           0 : }
     112             : 
     113             : /*
     114             :  * super.c
     115             :  */
     116             : extern int reconfigure_super(struct fs_context *);
     117             : extern bool trylock_super(struct super_block *sb);
     118             : struct super_block *user_get_super(dev_t, bool excl);
     119             : void put_super(struct super_block *sb);
     120             : extern bool mount_capable(struct fs_context *);
     121             : int sb_init_dio_done_wq(struct super_block *sb);
     122             : 
     123             : /*
     124             :  * open.c
     125             :  */
     126             : struct open_flags {
     127             :         int open_flag;
     128             :         umode_t mode;
     129             :         int acc_mode;
     130             :         int intent;
     131             :         int lookup_flags;
     132             : };
     133             : extern struct file *do_filp_open(int dfd, struct filename *pathname,
     134             :                 const struct open_flags *op);
     135             : extern struct file *do_file_open_root(const struct path *,
     136             :                 const char *, const struct open_flags *);
     137             : extern struct open_how build_open_how(int flags, umode_t mode);
     138             : extern int build_open_flags(const struct open_how *how, struct open_flags *op);
     139             : extern struct file *__close_fd_get_file(unsigned int fd);
     140             : 
     141             : long do_sys_ftruncate(unsigned int fd, loff_t length, int small);
     142             : int chmod_common(const struct path *path, umode_t mode);
     143             : int do_fchownat(int dfd, const char __user *filename, uid_t user, gid_t group,
     144             :                 int flag);
     145             : int chown_common(const struct path *path, uid_t user, gid_t group);
     146             : extern int vfs_open(const struct path *, struct file *);
     147             : 
     148             : /*
     149             :  * inode.c
     150             :  */
     151             : extern long prune_icache_sb(struct super_block *sb, struct shrink_control *sc);
     152             : int dentry_needs_remove_privs(struct mnt_idmap *, struct dentry *dentry);
     153             : bool in_group_or_capable(struct mnt_idmap *idmap,
     154             :                          const struct inode *inode, vfsgid_t vfsgid);
     155             : 
     156             : /*
     157             :  * fs-writeback.c
     158             :  */
     159             : extern long get_nr_dirty_inodes(void);
     160             : extern int invalidate_inodes(struct super_block *, bool);
     161             : 
     162             : /*
     163             :  * dcache.c
     164             :  */
     165             : extern int d_set_mounted(struct dentry *dentry);
     166             : extern long prune_dcache_sb(struct super_block *sb, struct shrink_control *sc);
     167             : extern struct dentry *d_alloc_cursor(struct dentry *);
     168             : extern struct dentry * d_alloc_pseudo(struct super_block *, const struct qstr *);
     169             : extern char *simple_dname(struct dentry *, char *, int);
     170             : extern void dput_to_list(struct dentry *, struct list_head *);
     171             : extern void shrink_dentry_list(struct list_head *);
     172             : 
     173             : /*
     174             :  * pipe.c
     175             :  */
     176             : extern const struct file_operations pipefifo_fops;
     177             : 
     178             : /*
     179             :  * fs_pin.c
     180             :  */
     181             : extern void group_pin_kill(struct hlist_head *p);
     182             : extern void mnt_pin_kill(struct mount *m);
     183             : 
     184             : /*
     185             :  * fs/nsfs.c
     186             :  */
     187             : extern const struct dentry_operations ns_dentry_operations;
     188             : 
     189             : /*
     190             :  * fs/stat.c:
     191             :  */
     192             : 
     193             : int getname_statx_lookup_flags(int flags);
     194             : int do_statx(int dfd, struct filename *filename, unsigned int flags,
     195             :              unsigned int mask, struct statx __user *buffer);
     196             : 
     197             : /*
     198             :  * fs/splice.c:
     199             :  */
     200             : long splice_file_to_pipe(struct file *in,
     201             :                          struct pipe_inode_info *opipe,
     202             :                          loff_t *offset,
     203             :                          size_t len, unsigned int flags);
     204             : 
     205             : /*
     206             :  * fs/xattr.c:
     207             :  */
     208             : struct xattr_name {
     209             :         char name[XATTR_NAME_MAX + 1];
     210             : };
     211             : 
     212             : struct xattr_ctx {
     213             :         /* Value of attribute */
     214             :         union {
     215             :                 const void __user *cvalue;
     216             :                 void __user *value;
     217             :         };
     218             :         void *kvalue;
     219             :         size_t size;
     220             :         /* Attribute name */
     221             :         struct xattr_name *kname;
     222             :         unsigned int flags;
     223             : };
     224             : 
     225             : 
     226             : ssize_t do_getxattr(struct mnt_idmap *idmap,
     227             :                     struct dentry *d,
     228             :                     struct xattr_ctx *ctx);
     229             : 
     230             : int setxattr_copy(const char __user *name, struct xattr_ctx *ctx);
     231             : int do_setxattr(struct mnt_idmap *idmap, struct dentry *dentry,
     232             :                 struct xattr_ctx *ctx);
     233             : int may_write_xattr(struct mnt_idmap *idmap, struct inode *inode);
     234             : 
     235             : #ifdef CONFIG_FS_POSIX_ACL
     236             : int do_set_acl(struct mnt_idmap *idmap, struct dentry *dentry,
     237             :                const char *acl_name, const void *kvalue, size_t size);
     238             : ssize_t do_get_acl(struct mnt_idmap *idmap, struct dentry *dentry,
     239             :                    const char *acl_name, void *kvalue, size_t size);
     240             : #else
     241             : static inline int do_set_acl(struct mnt_idmap *idmap,
     242             :                              struct dentry *dentry, const char *acl_name,
     243             :                              const void *kvalue, size_t size)
     244             : {
     245             :         return -EOPNOTSUPP;
     246             : }
     247             : static inline ssize_t do_get_acl(struct mnt_idmap *idmap,
     248             :                                  struct dentry *dentry, const char *acl_name,
     249             :                                  void *kvalue, size_t size)
     250             : {
     251             :         return -EOPNOTSUPP;
     252             : }
     253             : #endif
     254             : 
     255             : ssize_t __kernel_write_iter(struct file *file, struct iov_iter *from, loff_t *pos);
     256             : 
     257             : /*
     258             :  * fs/attr.c
     259             :  */
     260             : struct mnt_idmap *alloc_mnt_idmap(struct user_namespace *mnt_userns);
     261             : struct mnt_idmap *mnt_idmap_get(struct mnt_idmap *idmap);
     262             : void mnt_idmap_put(struct mnt_idmap *idmap);

Generated by: LCOV version 1.14