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

Generated by: LCOV version 1.14