~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/fs/9p/v9fs_vfs.h

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0-only */
  2 /*
  3  * V9FS VFS extensions.
  4  *
  5  *  Copyright (C) 2004 by Eric Van Hensbergen <ericvh@gmail.com>
  6  *  Copyright (C) 2002 by Ron Minnich <rminnich@lanl.gov>
  7  */
  8 #ifndef FS_9P_V9FS_VFS_H
  9 #define FS_9P_V9FS_VFS_H
 10 
 11 /* plan9 semantics are that created files are implicitly opened.
 12  * But linux semantics are that you call create, then open.
 13  * the plan9 approach is superior as it provides an atomic
 14  * open.
 15  * we track the create fid here. When the file is opened, if fidopen is
 16  * non-zero, we use the fid and can skip some steps.
 17  * there may be a better way to do this, but I don't know it.
 18  * one BAD way is to clunk the fid on create, then open it again:
 19  * you lose the atomicity of file open
 20  */
 21 
 22 /* special case:
 23  * unlink calls remove, which is an implicit clunk. So we have to track
 24  * that kind of thing so that we don't try to clunk a dead fid.
 25  */
 26 #define P9_LOCK_TIMEOUT (30*HZ)
 27 
 28 /* flags for v9fs_stat2inode() & v9fs_stat2inode_dotl() */
 29 #define V9FS_STAT2INODE_KEEP_ISIZE 1
 30 
 31 extern struct file_system_type v9fs_fs_type;
 32 extern const struct address_space_operations v9fs_addr_operations;
 33 extern const struct file_operations v9fs_file_operations;
 34 extern const struct file_operations v9fs_file_operations_dotl;
 35 extern const struct file_operations v9fs_dir_operations;
 36 extern const struct file_operations v9fs_dir_operations_dotl;
 37 extern const struct dentry_operations v9fs_dentry_operations;
 38 extern const struct dentry_operations v9fs_cached_dentry_operations;
 39 extern struct kmem_cache *v9fs_inode_cache;
 40 
 41 struct inode *v9fs_alloc_inode(struct super_block *sb);
 42 void v9fs_free_inode(struct inode *inode);
 43 void v9fs_set_netfs_context(struct inode *inode);
 44 int v9fs_init_inode(struct v9fs_session_info *v9ses,
 45                     struct inode *inode, struct p9_qid *qid, umode_t mode, dev_t rdev);
 46 void v9fs_evict_inode(struct inode *inode);
 47 #if (BITS_PER_LONG == 32)
 48 #define QID2INO(q) ((ino_t) (((q)->path+2) ^ (((q)->path) >> 32)))
 49 #else
 50 #define QID2INO(q) ((ino_t) ((q)->path+2))
 51 #endif
 52 
 53 void v9fs_stat2inode(struct p9_wstat *stat, struct inode *inode,
 54                       struct super_block *sb, unsigned int flags);
 55 void v9fs_stat2inode_dotl(struct p9_stat_dotl *stat, struct inode *inode,
 56                            unsigned int flags);
 57 int v9fs_dir_release(struct inode *inode, struct file *filp);
 58 int v9fs_file_open(struct inode *inode, struct file *file);
 59 int v9fs_uflags2omode(int uflags, int extended);
 60 
 61 void v9fs_blank_wstat(struct p9_wstat *wstat);
 62 int v9fs_vfs_setattr_dotl(struct mnt_idmap *idmap,
 63                           struct dentry *dentry, struct iattr *iattr);
 64 int v9fs_file_fsync_dotl(struct file *filp, loff_t start, loff_t end,
 65                          int datasync);
 66 int v9fs_refresh_inode(struct p9_fid *fid, struct inode *inode);
 67 int v9fs_refresh_inode_dotl(struct p9_fid *fid, struct inode *inode);
 68 static inline void v9fs_invalidate_inode_attr(struct inode *inode)
 69 {
 70         struct v9fs_inode *v9inode;
 71 
 72         v9inode = V9FS_I(inode);
 73         v9inode->cache_validity |= V9FS_INO_INVALID_ATTR;
 74 }
 75 
 76 int v9fs_open_to_dotl_flags(int flags);
 77 
 78 static inline void v9fs_i_size_write(struct inode *inode, loff_t i_size)
 79 {
 80         /*
 81          * 32-bit need the lock, concurrent updates could break the
 82          * sequences and make i_size_read() loop forever.
 83          * 64-bit updates are atomic and can skip the locking.
 84          */
 85         if (sizeof(i_size) > sizeof(long))
 86                 spin_lock(&inode->i_lock);
 87         i_size_write(inode, i_size);
 88         if (sizeof(i_size) > sizeof(long))
 89                 spin_unlock(&inode->i_lock);
 90 }
 91 #endif
 92 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php