1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 231a203dfSAl Viro /* 331a203dfSAl Viro * coda_fs_i.h 431a203dfSAl Viro * 531a203dfSAl Viro * Copyright (C) 1998 Carnegie Mellon University 631a203dfSAl Viro * 731a203dfSAl Viro */ 831a203dfSAl Viro 931a203dfSAl Viro #ifndef _LINUX_CODA_FS_I 1031a203dfSAl Viro #define _LINUX_CODA_FS_I 1131a203dfSAl Viro 1231a203dfSAl Viro #include <linux/types.h> 1331a203dfSAl Viro #include <linux/list.h> 1431a203dfSAl Viro #include <linux/spinlock.h> 1531a203dfSAl Viro #include <linux/coda.h> 1631a203dfSAl Viro 1731a203dfSAl Viro /* 1831a203dfSAl Viro * coda fs inode data 1931a203dfSAl Viro * c_lock protects accesses to c_flags, c_mapcount, c_cached_epoch, c_uid and 2031a203dfSAl Viro * c_cached_perm. 2131a203dfSAl Viro * vfs_inode is set only when the inode is created and never changes. 2231a203dfSAl Viro * c_fid is set when the inode is created and should be considered immutable. 2331a203dfSAl Viro */ 2431a203dfSAl Viro struct coda_inode_info { 2531a203dfSAl Viro struct CodaFid c_fid; /* Coda identifier */ 2631a203dfSAl Viro u_short c_flags; /* flags (see below) */ 2731a203dfSAl Viro unsigned int c_mapcount; /* nr of times this inode is mapped */ 2831a203dfSAl Viro unsigned int c_cached_epoch; /* epoch for cached permissions */ 2917499e33SEric W. Biederman kuid_t c_uid; /* fsuid for cached permissions */ 3031a203dfSAl Viro unsigned int c_cached_perm; /* cached access permissions */ 3131a203dfSAl Viro spinlock_t c_lock; 3231a203dfSAl Viro struct inode vfs_inode; 3331a203dfSAl Viro }; 3431a203dfSAl Viro 3531a203dfSAl Viro /* 3631a203dfSAl Viro * coda fs file private data 3731a203dfSAl Viro */ 3831a203dfSAl Viro #define CODA_MAGIC 0xC0DAC0DA 3931a203dfSAl Viro struct coda_file_info { 4031a203dfSAl Viro int cfi_magic; /* magic number */ 4131a203dfSAl Viro struct file *cfi_container; /* container file for this cnode */ 4231a203dfSAl Viro unsigned int cfi_mapcount; /* nr of times this file is mapped */ 43a9fba24cSPedro Cuadra bool cfi_access_intent; /* is access intent supported */ 4431a203dfSAl Viro }; 4531a203dfSAl Viro 4631a203dfSAl Viro /* flags */ 4731a203dfSAl Viro #define C_VATTR 0x1 /* Validity of vattr in inode */ 4831a203dfSAl Viro #define C_FLUSH 0x2 /* used after a flush */ 4931a203dfSAl Viro #define C_DYING 0x4 /* from venus (which died) */ 5031a203dfSAl Viro #define C_PURGE 0x8 5131a203dfSAl Viro 52f4947fbcSAl Viro struct inode *coda_cnode_make(struct CodaFid *, struct super_block *); 5331a203dfSAl Viro struct inode *coda_iget(struct super_block *sb, struct CodaFid *fid, struct coda_vattr *attr); 540b2c4e39SAl Viro struct inode *coda_cnode_makectl(struct super_block *sb); 5531a203dfSAl Viro struct inode *coda_fid_to_inode(struct CodaFid *fid, struct super_block *sb); 565bb44810SFabian Frederick struct coda_file_info *coda_ftoc(struct file *file); 5731a203dfSAl Viro void coda_replace_fid(struct inode *, struct CodaFid *, struct CodaFid *); 5831a203dfSAl Viro 5931a203dfSAl Viro #endif 60