/*************************************************************************** * * Copyright (C) 2001 International Business Machines * All rights reserved. * * This file is part of the GPFS mmfslinux kernel module. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * *************************************************************************** */ /* @(#)67 1.90.1.4 src/avs/fs/mmfs/ts/kernext/ibm-kxi/cxi2gpfs.h, mmfs, avs_rgpfs24, rgpfs24s012a 5/1/07 08:31:35 */ /* * Interface definitions for gpfs kernel services, platform independent version * * Contents: * vfs services: */ #ifndef _h_cxi2gpfs #define _h_cxi2gpfs #ifdef _KERNEL /* Describes the entry points into the OS independent portion of * GPFS from the dependent virtual file system layer. */ struct gpfsVfsData_t; struct ext_cred_t; struct MMFSVInfo; struct cxiUio_t; struct cxiIOBufferAttachment_t; #ifdef SMB_LOCKS struct SMBTokenDescription; #endif struct KernelOperation; /* GPFS OS independent entry point prototypes */ IntRC gpfsFsync(struct gpfsVfsData_t *, struct MMFSVInfo *, cxiNode_t *, int, struct ext_cred_t *); IntRC gpfsSyncNFS(struct gpfsVfsData_t *, cxiNode_t *, int, struct ext_cred_t *); IntRC gpfsMkdir(struct gpfsVfsData_t *, cxiNode_t *cnDirP, void **vPP, cxiNode_t **cnPP, cxiIno_t *iNumP, void *dentryP, caddr_t nameP, int, cxiMode_t mode, struct ext_cred_t *); IntRC gpfsLink(struct gpfsVfsData_t *, cxiNode_t *, cxiNode_t *, void *, char *, struct ext_cred_t *); IntRC gpfsOpen(struct gpfsVfsData_t *, cxiNode_t *, int, int, int, struct MMFSVInfo **, struct ext_cred_t *); IntRC gpfsInodeRead(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, cxiIno_t ino, void *opaque); IntRC gpfsInodeDelete(struct gpfsVfsData_t *, cxiNode_t *, Boolean isGPFS, struct ext_cred_t *); int gpfsInodeFindActor(cxiNode_t *, cxiIno_t, void *); int gpfsGetSnapIdPair(cxiNode_t *, UInt32 *, UInt32 *); IntRC gpfsRemove(struct gpfsVfsData_t *, cxiNode_t *, cxiNode_t *, char *, struct ext_cred_t *); IntRC gpfsRename(struct gpfsVfsData_t *, cxiNode_t *, cxiNode_t *, caddr_t, cxiNode_t *, cxiNode_t *, caddr_t, struct ext_cred_t *); IntRC gpfsRmdir(struct gpfsVfsData_t *, cxiNode_t *, cxiNode_t *, char *, struct ext_cred_t *); IntRC gpfsSetattr(struct gpfsVfsData_t *, cxiNode_t *, long, long, long, long, struct ext_cred_t *); IntRC gpfsSymlink(struct gpfsVfsData_t *, cxiNode_t *dcnP, void **vPP, cxiNode_t **cnPP, cxiIno_t *iNumP, void *dentryP, caddr_t nameP, char *symlinkTargetP, struct ext_cred_t *); IntRC gpfsFsyncRange(struct gpfsVfsData_t *, cxiNode_t *, int, offset_t, offset_t, struct ext_cred_t *); IntRC gpfsClose(struct gpfsVfsData_t *, cxiNode_t *, int, struct MMFSVInfo *, Boolean dmEvents); IntRC gpfsUnmap(struct gpfsVfsData_t *, cxiNode_t *, int); IntRC gpfsFattr(struct gpfsVfsData_t *, cxiNode_t *, struct MMFSVInfo *, int, int, void *, void *, struct ext_cred_t *); IntRC gpfsFsAttr(int, void *); IntRC gpfsFclear(struct gpfsVfsData_t *, cxiNode_t *, int, offset_t, offset_t, struct MMFSVInfo *, struct ext_cred_t *); IntRC gpfsFtrunc(struct gpfsVfsData_t *, cxiNode_t *, int, offset_t, struct MMFSVInfo *, struct ext_cred_t *, Boolean dmEvents); IntRC gpfsRead(struct gpfsVfsData_t *, struct KernelOperation *, cxiNode_t *, int, struct cxiUio_t *, struct MMFSVInfo *, cxiVattr_t *, cxiVattr_t *, struct ext_cred_t *, int, int); IntRC gpfsWrite(struct gpfsVfsData_t *, struct KernelOperation *, cxiNode_t *, int, struct cxiUio_t *, struct MMFSVInfo *, cxiVattr_t *, cxiVattr_t *, struct ext_cred_t *, int, int); IntRC gpfsGetattr(struct gpfsVfsData_t *, cxiNode_t *, cxiVattr_t *, Boolean exactStat); IntRC gpfsAccess(struct gpfsVfsData_t *, cxiNode_t *, int, int, struct ext_cred_t *); IntRC gpfsReaddir(struct gpfsVfsData_t *, cxiNode_t *, void *, cxiFillDir_t, offset_t *, cxiContext_t, struct KernelOperation *kopP); IntRC gpfsReadlink(struct gpfsVfsData_t *, cxiNode_t *, struct cxiUio_t *); IntRC gpfsCreate(struct gpfsVfsData_t *privVfsP, cxiNode_t *dcnP, void **vPP, cxiNode_t **cnPP, cxiIno_t *iNumP, int gen, int flags, void *dentryP, caddr_t nameP, cxiMode_t mode, cxiMode_t umask, caddr_t *infoPP, struct ext_cred_t *); IntRC gpfsMknod(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnDirP, void **vPP, cxiNode_t **cnPP, cxiIno_t *iNumP, void *dentryP, caddr_t nameP, cxiMode_t mode, cxiMode_t umask, cxiDev_t dev, struct ext_cred_t *credP); IntRC gpfsRele(struct gpfsVfsData_t *, cxiNode_t *, void *, cxiContext_t); IntRC gpfsLookup(struct gpfsVfsData_t *, void *dvP, cxiNode_t *cnDirP, void *dentryP, char *nameP, void **vPP, cxiNode_t **cnPP, cxiIno_t *iNumP, cxiVattr_t *, cxiMode_t *, struct ext_cred_t *, void **dentryPP); IntRC gpfsMount(void *, int, char *, char *, char *, struct gpfsVfsData_t **, cxiNode_t **, cxiIno_t *iNumP, struct gpfsVfsData_t *, pid_t, unsigned int mountId, Boolean, Boolean); IntRC gpfsStatfs(struct gpfsVfsData_t *, cxiStatfs_t *); IntRC gpfsSyncfs(struct gpfsVfsData_t *); void gpfsQueueBufs(cxibuf_t *bufP); void gpfsMmapFlushLock(cxiNode_t *cnP); void gpfsMmapFlushUnlock(cxiNode_t *cnP); IntRC gpfsUncache(struct gpfsVfsData_t *privVfsP); IntRC gpfsUnmount(struct gpfsVfsData_t *privVfsP, Boolean forced); void gpfsFinishUnmount(struct gpfsVfsData_t *privVfsP); #ifdef NFS4_CLUSTER IntRC gpfsFsLocations(struct gpfsVfsData_t *privVfsP, char **bufP, int *buf_size); #endif IntRC gpfsFcntl(void *vkopP, struct gpfsVfsData_t *privVfsP, void *vP, // struct vnode* or NULL void *advObjP, // struct gnode* or struct file* void *flP, // NULL or struct file_lock* cxiNode_t *cnP, offset_t offset, eflock_t *lckdatP, int cmd, // F_SETLK, F_SETLKW, F_GETLK int(*retry_fcn)(), ulong *retry_idP, struct ext_cred_t *credP); IntRC gpfsFcntlReset(void *advObjP, cxiPid_t mmfsd); IntRC gpfsGetAcl(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, int flags, void *aclP, struct ext_cred_t *credP); IntRC gpfsPutAcl(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, int flags, void *aclP, struct ext_cred_t *credP); #ifdef GPFS_QUOTACTL IntRC gpfsQuotactl(struct gpfsVfsData_t *privVfsP, int cmd, int qid, void *bufferP, struct ext_cred_t *credP); #endif IntRC gpfsGetNFS(void *, struct MMFSVInfo **, int *); IntRC gpfsReleaseNFS(void *); int gpfsReady(); IntRC gpfsMmap(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, void *vP, struct ext_cred_t *credP, void *kopP, Boolean writeAccess, Boolean explicit_mmap,long long offset, long long length); #ifdef SMB_LOCKS IntRC SMBOpenLockControl(int command, int lockmode, int inode_n, struct MMFSVInfo * vinfoP, struct gpfsVfsData_t *privVfsP); int SMBGetOplockState(void *fileArgP); int SMBGetOplockStateV(struct MMFSVInfo * vinfoP); IntRC gpfsSetSMBOplock(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, struct MMFSVInfo *vinfoP, int accessWant, int oplockWant, void *breakArgP, int *oplockGrantedP, Boolean isAsync); IntRC gpfsReserveShare(void *vP, void *infoP, struct gpfsVfsData_t *privVfsP, int flags, int share, cxiNode_t *cnP, ext_cred_t *credP); IntRC gpfsReserveDelegation(void *vp, void *infoP, struct gpfsVfsData_t *privVfsP, int oplockWant, int flags, void *cb_token, void *cookie); #endif //SMB_LOCKS IntRC callDaemonToDie(char *srcFileName, UInt32 srcLineNumber, Int32 retCode, Int32 reasonCode, char *dataStr, char *failingExpr); IntRC gpfsCleanup(); #ifdef UIDREMAP int UIDremapOn(); #endif void gpfsSwapdEnqueue(cxiNode_t *cnP); void gpfsSwapdDequeue(cxiNode_t *cnP); void gpfsGrace(int on_off); #ifdef P_NFS4 IntRC gpfsGetOpenState(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, int nodeId, void *p, int len, struct ext_cred_t *credP); IntRC gpfsLayoutRetrun(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, void *p, int len); IntRC gpfsGetDeviceInfo(struct gpfsVfsData_t *privVfsP, void *p); IntRC gpfsGetLayout(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, void *p, struct ext_cred_t *credP); IntRC gpfsGetDeviceList(struct gpfsVfsData_t *privVfsP, void *p); int gpfsGetMyDevID(struct gpfsVfsData_t *privVfsP); void gpfsGetVerifier(struct gpfsVfsData_t *privVfsP, UInt32 *p); #endif #ifdef DMAPI IntRC gpfsDmUnmountEvent(Boolean preunmount, Boolean force, struct gpfsVfsData_t *privVfsP, cxiNode_t *rootCNP, Boolean *dmDoUnmountEventP, void **sgUidP, void **eventlistP, void **sessLocP, int vnoprc); #endif IntRC gpfsNFSIget(struct gpfsVfsData_t *privVfsP, struct cxiIGetArg_t *argP, UInt32 generation, void **vPP); IntRC gpfsOpenNFS(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, int flags, struct MMFSVInfo *vinfoP, struct ext_cred_t *credP); struct gpfs_operations { IntRC (*mmfs)(int cmd); IntRC (*gpfsMount)(void *, int, char *, char *, char *, struct gpfsVfsData_t **, cxiNode_t **, cxiIno_t *iNumP, struct gpfsVfsData_t *, pid_t, unsigned int, Boolean, Boolean); IntRC (*gpfsStatfs)(struct gpfsVfsData_t *, cxiStatfs_t *); IntRC (*gpfsSyncfs)(struct gpfsVfsData_t *); void (*gpfsQueueBufs)(cxibuf_t *bufP); void (*gpfsMmapFlushLock)(cxiNode_t *cnP); void (*gpfsMmapFlushUnlock)(cxiNode_t *cnP); IntRC (*gpfsFsync)(struct gpfsVfsData_t *, struct MMFSVInfo *, cxiNode_t *, int, struct ext_cred_t *credP); IntRC (*gpfsSyncNFS)(struct gpfsVfsData_t *, cxiNode_t *, int, struct ext_cred_t *credP); IntRC (*gpfsMkdir)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnDirP, void **vPP, cxiNode_t **cnPP, cxiIno_t *iNumP, void *dentryP, char *dirNameP, int mode, cxiMode_t umask, struct ext_cred_t *credP); IntRC (*gpfsLink)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, cxiNode_t *dcnP, void *dentryP, char *name, struct ext_cred_t *credP); IntRC (*gpfsOpen)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, int flags, int iflags, int ext, struct MMFSVInfo **infoPP, struct ext_cred_t *credP); IntRC (*gpfsInodeRead)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, cxiIno_t ino, void *opaque); IntRC (*gpfsInodeDelete)(struct gpfsVfsData_t *, cxiNode_t *, Boolean isGPFS, struct ext_cred_t *); int (*gpfsInodeFindActor)(cxiNode_t *, cxiIno_t, void *); int (*gpfsGetSnapIdPair)(cxiNode_t *, UInt32 *, UInt32 *); IntRC (*gpfsRemove)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, cxiNode_t *dcnP, char *nameP, struct ext_cred_t *credP); IntRC (*gpfsRename)(struct gpfsVfsData_t *privVfsP, cxiNode_t *sourceCNP, cxiNode_t *sourceDirCNP, caddr_t oldNameP, cxiNode_t *targetCNP, cxiNode_t *targetDirCNP, caddr_t newNameP, struct ext_cred_t *credP); IntRC (*gpfsRmdir)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, cxiNode_t *dcnP, char *nameP, struct ext_cred_t *credP); IntRC (*gpfsSetattr)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, long cmd, long arg1, long arg2, long arg3, struct ext_cred_t *credP); IntRC (*gpfsSymlink)(struct gpfsVfsData_t *privVfsP, cxiNode_t *dcnP, void **vPP, cxiNode_t **cnPP, cxiIno_t *iNumP, void *dentryP, caddr_t nameP, char *symlinkTargetP, struct ext_cred_t *credP); IntRC (*gpfsFsyncRange)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, int flags, offset_t offset, offset_t length, struct ext_cred_t *credP); IntRC (*gpfsClose)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, int flags, struct MMFSVInfo *vinfoP, Boolean dmEvents); IntRC (*gpfsUnmap)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, int flag); IntRC (*gpfsFattr)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, struct MMFSVInfo *vinfoP, int rwflag, int command, void *argP, void *rCodeP, struct ext_cred_t *credP); IntRC (*gpfsFsAttr)(int command, void *argP); IntRC (*gpfsFclear)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, int flags, offset_t offset, offset_t len, struct MMFSVInfo *vinfoP, struct ext_cred_t *credP); IntRC (*gpfsFtrunc)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, int flags, offset_t offset, struct MMFSVInfo *vinfoP, struct ext_cred_t *credP, Boolean dmEvents); IntRC (*gpfsRead)(struct gpfsVfsData_t *privVfsP, struct KernelOperation *, cxiNode_t *cnP, int flags, struct cxiUio_t* uioP, struct MMFSVInfo *vinfoP, cxiVattr_t *vpreP, cxiVattr_t *vattrP, struct ext_cred_t *credP, int, int); IntRC (*gpfsWrite)(struct gpfsVfsData_t *privVfsP, struct KernelOperation *, cxiNode_t *cnP, int flags, struct cxiUio_t* uioP, struct MMFSVInfo *vinfoP, cxiVattr_t *vpreP, cxiVattr_t *vattrP, struct ext_cred_t *credP, int, int); IntRC (*gpfsGetattr)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, cxiVattr_t *vattrP, Boolean exactStat); IntRC (*gpfsAccess)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, int mode, int who, struct ext_cred_t *credP); IntRC (*gpfsReaddir)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, void *fillDirArgP, cxiFillDir_t fillDirP, offset_t *offsetP, cxiContext_t opcontext, struct KernelOperation *kopP); IntRC (*gpfsReadlink)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, struct cxiUio_t* uioP); IntRC (*gpfsCreate)(struct gpfsVfsData_t *privVfsP, cxiNode_t *dcnP, void **vPP, cxiNode_t **cnPP, cxiIno_t *iNumP, int gen, int flags, void *dentryP, caddr_t nameP, cxiMode_t mode, cxiMode_t umask, caddr_t *infoPP, struct ext_cred_t *credP); IntRC (*gpfsMknod)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnDirP, void **vPP, cxiNode_t **cnPP, cxiIno_t *iNumP, void *dentryP, caddr_t nameP, cxiMode_t mode, cxiMode_t umask, cxiDev_t dev, struct ext_cred_t *credP); IntRC (*gpfsRele)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, void *vP, cxiContext_t opContext); IntRC (*gpfsLookup)(struct gpfsVfsData_t *privVfsP, void *dvP, cxiNode_t *dcnP, void *dentryP, char *nameP, void **vPP, cxiNode_t **cnPP, cxiIno_t *iNumP, cxiVattr_t *vattrP, cxiMode_t *modeP, struct ext_cred_t *credP, void **dentryPP); IntRC (*gpfsFcntl)(void *vkopP, struct gpfsVfsData_t *privVfsP, void *vP, // struct vnode* or NULL void *advObjP, // struct gnode* or struct file* void *flP, // NULL or struct file_lock* cxiNode_t *cnP, offset_t offset, eflock_t *lckdatP, int cmd, // F_SETLK, F_SETLKW, F_GETLK int(*retry_fcn)(), ulong *retry_idP, struct ext_cred_t *credP); IntRC (*gpfsFcntlReset)(void *advObjP, cxiPid_t mmfsd); IntRC (*gpfsUncache)(struct gpfsVfsData_t *privVfsP); IntRC (*gpfsUnmount)(struct gpfsVfsData_t *privVfsP, Boolean forced); void (*gpfsFinishUnmount)(struct gpfsVfsData_t *privVfsP); #ifdef NFS4_CLUSTER IntRC (*gpfsFsLocations) (struct gpfsVfsData_t *privVfsP, char **bufP, int *buf_size); #endif IntRC (*gpfsGetAcl)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, int flags, void *aclP, struct ext_cred_t *credP); IntRC (*gpfsPutAcl)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, int flags, void *aclP, struct ext_cred_t *credP); IntRC (*gpfsGetNFS)(void *vP, struct MMFSVInfo **vinfoPP, int *flagsP); IntRC (*gpfsReleaseNFS)(void *vP); int (*gpfsReady)(); IntRC (*gpfsMmap)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, void * vP, struct ext_cred_t *credP, void *koP, Boolean writeAccess, Boolean explicit_mmap,long long offset,long long length); #ifdef SMB_LOCKS IntRC (*SMBOpenLockControl)(int command, int lockmode, int inode_n, struct MMFSVInfo * vinfoP, struct gpfsVfsData_t *privVfsP); int (*SMBGetOplockState)(void *fileArgP); int (*SMBGetOplockStateV)(struct MMFSVInfo * vinfoP); IntRC (*gpfsSetSMBOplock)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, struct MMFSVInfo *vinfoP, int accessWant, int oplockWant, void *breakArgP, int *oplockGrantedP, Boolean isAsync); IntRC (*gpfsReserveShare)(void *, void *, struct gpfsVfsData_t *, int, int, cxiNode_t *cnP, ext_cred_t *credP); IntRC (*gpfsReserveDelegation)(void *vp, void *infoP, struct gpfsVfsData_t *privVfsP, int oplockWant, int, void *cb_token, void *cookie); #endif IntRC (*gpfsDaemonToDie)(char *srcFileName, UInt32 srcLineNumber, Int32 retCode, Int32 reasonCode, char *dataStr, char *failingExpr); IntRC (*gpfsCleanup)(); #ifdef UIDREMAP int (*UIDremapOn)(); #endif void (*gpfsSwapdEnqueue)(cxiNode_t *cnP); #ifdef DMAPI IntRC (*gpfsDmUnmountEvent)(Boolean preunmount, Boolean force, struct gpfsVfsData_t *privVfsP, cxiNode_t *rootCNP, Boolean *dmDoUnmountEventP, void **sgUidPP, void **eventlistPP, void **sessLocPP, int vnoprc); #endif IntRC (*gpfsNFSIget)(struct gpfsVfsData_t *privVfsP, struct cxiIGetArg_t *argP, UInt32 generation, void **vPP); IntRC (*gpfsOpenNFS)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, int flags, struct MMFSVInfo *vinfoP, struct ext_cred_t *credP); void (*gpfsGrace)(int on_off); #ifdef P_NFS4 IntRC (*gpfsGetOpenState)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, int nodeId, void *p, int len, struct ext_cred_t *credP); IntRC (*gpfsLayoutRetrun)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, void *p, int len); IntRC (*gpfsGetDeviceInfo)(struct gpfsVfsData_t *privVfsP, void *p); IntRC (*gpfsGetLayout)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, void *buf, struct ext_cred_t *credP); IntRC (*gpfsGetDeviceList)(struct gpfsVfsData_t *privVfsP, void *buf); int (*gpfsGetMyDevID)(struct gpfsVfsData_t *privVfsP); void (*gpfsGetVerifier)(struct gpfsVfsData_t *privVfsP, UInt32 *p); #endif #ifdef GPFS_QUOTACTL IntRC (*gpfsQuotactl)(struct gpfsVfsData_t *privVfsP, int cmd, int qid, void *bufferP, struct ext_cred_t *credP); #endif /* GPFS_QUOTACTL */ }; extern struct gpfs_operations gpfs_ops; #endif /* _KERNEL */ #endif /* _h_cxi2gpfs */