source: gpfs_3.1_ker2.6.20/lpp/mmfs/src/ibm-kxi/cxi2gpfs.h @ 16

Last change on this file since 16 was 16, checked in by rock, 16 years ago
File size: 21.5 KB
Line 
1/***************************************************************************
2 *
3 * Copyright (C) 2001 International Business Machines
4 * All rights reserved.
5 *
6 * This file is part of the GPFS mmfslinux kernel module.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 *
12 *  1. Redistributions of source code must retain the above copyright notice,
13 *     this list of conditions and the following disclaimer.
14 *  2. Redistributions in binary form must reproduce the above copyright
15 *     notice, this list of conditions and the following disclaimer in the
16 *     documentation and/or other materials provided with the distribution.
17 *  3. The name of the author may not be used to endorse or promote products
18 *     derived from this software without specific prior written
19 *     permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
22 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
23 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
24 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
30 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 *
32 *************************************************************************** */
33/* @(#)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 */
34/*
35 * Interface definitions for gpfs kernel services, platform independent version
36 *
37 * Contents:
38 *   vfs services:
39 */
40
41#ifndef _h_cxi2gpfs
42#define _h_cxi2gpfs
43
44#ifdef _KERNEL
45
46/* Describes the entry points into the OS independent portion of
47 * GPFS from the dependent virtual file system layer.
48 */
49struct gpfsVfsData_t;
50struct ext_cred_t;
51struct MMFSVInfo;
52struct cxiUio_t;
53struct cxiIOBufferAttachment_t;
54#ifdef SMB_LOCKS
55struct SMBTokenDescription;
56#endif
57struct KernelOperation;
58
59/* GPFS OS independent entry point prototypes */
60IntRC gpfsFsync(struct gpfsVfsData_t *, struct MMFSVInfo *, cxiNode_t *, int, struct ext_cred_t *);
61IntRC gpfsSyncNFS(struct gpfsVfsData_t *, cxiNode_t *, int, struct ext_cred_t *);
62IntRC gpfsMkdir(struct gpfsVfsData_t *, cxiNode_t *cnDirP,
63                void **vPP, cxiNode_t **cnPP, cxiIno_t *iNumP,
64                void *dentryP, caddr_t nameP, int, cxiMode_t mode,
65                struct ext_cred_t *);
66IntRC gpfsLink(struct gpfsVfsData_t *, cxiNode_t *, cxiNode_t *,
67               void *, char *, struct ext_cred_t *);
68IntRC gpfsOpen(struct gpfsVfsData_t *, cxiNode_t *, int, int, int,
69               struct MMFSVInfo **, struct ext_cred_t *);
70IntRC gpfsInodeRead(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP,
71                    cxiIno_t ino, void *opaque);
72IntRC gpfsInodeDelete(struct gpfsVfsData_t *, cxiNode_t *, Boolean isGPFS,
73                      struct ext_cred_t *);
74int gpfsInodeFindActor(cxiNode_t *, cxiIno_t, void *);
75int gpfsGetSnapIdPair(cxiNode_t *, UInt32 *, UInt32 *);
76IntRC gpfsRemove(struct gpfsVfsData_t *, cxiNode_t *, cxiNode_t *,
77                 char *, struct ext_cred_t *);
78IntRC gpfsRename(struct gpfsVfsData_t *, cxiNode_t *, cxiNode_t *,
79                 caddr_t, cxiNode_t *, cxiNode_t *, caddr_t,
80                 struct ext_cred_t *);
81IntRC gpfsRmdir(struct gpfsVfsData_t *, cxiNode_t *, cxiNode_t *,
82                char *, struct ext_cred_t *);
83IntRC gpfsSetattr(struct gpfsVfsData_t *, cxiNode_t *, long, long, long,
84                  long, struct ext_cred_t *);
85IntRC gpfsSymlink(struct gpfsVfsData_t *, cxiNode_t *dcnP, void **vPP,
86                  cxiNode_t **cnPP, cxiIno_t *iNumP, void *dentryP, caddr_t nameP,
87                  char *symlinkTargetP, struct ext_cred_t *);
88IntRC gpfsFsyncRange(struct gpfsVfsData_t *, cxiNode_t *, int, offset_t,
89                     offset_t, struct ext_cred_t *);
90IntRC gpfsClose(struct gpfsVfsData_t *, cxiNode_t *, int,
91                struct MMFSVInfo *, Boolean dmEvents);
92IntRC gpfsUnmap(struct gpfsVfsData_t *, cxiNode_t *, int);
93IntRC gpfsFattr(struct gpfsVfsData_t *, cxiNode_t *, struct MMFSVInfo *,
94                int, int, void *, void *, struct ext_cred_t *);
95IntRC gpfsFsAttr(int, void *);
96IntRC gpfsFclear(struct gpfsVfsData_t *, cxiNode_t *,
97                 int, offset_t, offset_t, struct MMFSVInfo *, struct ext_cred_t *);
98IntRC gpfsFtrunc(struct gpfsVfsData_t *, cxiNode_t *, int, offset_t,
99                 struct MMFSVInfo *, struct ext_cred_t *, Boolean dmEvents);
100IntRC gpfsRead(struct gpfsVfsData_t *, struct KernelOperation *, cxiNode_t *, int,
101               struct cxiUio_t *, struct MMFSVInfo *, cxiVattr_t *, cxiVattr_t *,
102               struct ext_cred_t *, int, int);
103IntRC gpfsWrite(struct gpfsVfsData_t *, struct KernelOperation *, cxiNode_t *, int,
104                struct cxiUio_t *, struct MMFSVInfo *, cxiVattr_t *, cxiVattr_t *,
105                struct ext_cred_t *, int, int);
106IntRC gpfsGetattr(struct gpfsVfsData_t *, cxiNode_t *, cxiVattr_t *, Boolean exactStat);
107IntRC gpfsAccess(struct gpfsVfsData_t *, cxiNode_t *, int, int,
108                 struct ext_cred_t *);
109IntRC gpfsReaddir(struct gpfsVfsData_t *, cxiNode_t *, void *, cxiFillDir_t,
110                  offset_t *, cxiContext_t, struct KernelOperation *kopP);
111IntRC gpfsReadlink(struct gpfsVfsData_t *, cxiNode_t *, struct cxiUio_t *);
112IntRC gpfsCreate(struct gpfsVfsData_t *privVfsP, cxiNode_t *dcnP,
113                 void **vPP, cxiNode_t **cnPP, cxiIno_t *iNumP, int gen,
114                 int flags, void *dentryP, caddr_t nameP, cxiMode_t mode,
115                 cxiMode_t umask, caddr_t *infoPP, struct ext_cred_t *);
116IntRC gpfsMknod(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnDirP,
117                void **vPP, cxiNode_t **cnPP, cxiIno_t *iNumP,
118                void *dentryP, caddr_t nameP, cxiMode_t mode, cxiMode_t umask,
119                cxiDev_t dev, struct ext_cred_t *credP);
120IntRC gpfsRele(struct gpfsVfsData_t *, cxiNode_t *,
121               void *, cxiContext_t);
122IntRC gpfsLookup(struct gpfsVfsData_t *, void *dvP, cxiNode_t *cnDirP,
123                 void *dentryP, char *nameP,
124                 void **vPP, cxiNode_t **cnPP, cxiIno_t *iNumP, cxiVattr_t *,
125                 cxiMode_t *, struct ext_cred_t *, void **dentryPP);
126IntRC gpfsMount(void *, int, char *, char *, char *, struct gpfsVfsData_t **,
127                cxiNode_t **, cxiIno_t *iNumP, struct gpfsVfsData_t *, pid_t,
128                unsigned int mountId, Boolean, Boolean);
129IntRC gpfsStatfs(struct gpfsVfsData_t *, cxiStatfs_t *);
130IntRC gpfsSyncfs(struct gpfsVfsData_t *);
131void gpfsQueueBufs(cxibuf_t *bufP);
132void gpfsMmapFlushLock(cxiNode_t *cnP);
133void gpfsMmapFlushUnlock(cxiNode_t *cnP);
134
135IntRC gpfsUncache(struct gpfsVfsData_t *privVfsP);
136
137IntRC gpfsUnmount(struct gpfsVfsData_t *privVfsP, Boolean forced);
138void gpfsFinishUnmount(struct gpfsVfsData_t *privVfsP);
139#ifdef NFS4_CLUSTER
140IntRC gpfsFsLocations(struct gpfsVfsData_t *privVfsP, char **bufP, int *buf_size);
141#endif
142IntRC gpfsFcntl(void *vkopP,
143                struct gpfsVfsData_t *privVfsP,
144                void *vP,               // struct vnode* or NULL
145                void *advObjP,          // struct gnode* or struct file*
146                void *flP,              // NULL or struct file_lock*
147                cxiNode_t *cnP,
148                offset_t offset,
149                eflock_t *lckdatP,
150                int cmd,                // F_SETLK, F_SETLKW, F_GETLK
151                int(*retry_fcn)(),
152                ulong *retry_idP,
153                struct ext_cred_t *credP);
154IntRC gpfsFcntlReset(void *advObjP, cxiPid_t mmfsd);
155
156IntRC gpfsGetAcl(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, int flags,
157                 void *aclP, struct ext_cred_t *credP);
158IntRC gpfsPutAcl(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, int flags,
159                 void *aclP, struct ext_cred_t *credP);
160
161#ifdef GPFS_QUOTACTL
162IntRC gpfsQuotactl(struct gpfsVfsData_t *privVfsP, int cmd, int qid, 
163                   void *bufferP, struct ext_cred_t *credP);
164#endif
165
166IntRC gpfsGetNFS(void *, struct MMFSVInfo **, int *);
167IntRC gpfsReleaseNFS(void *);
168int gpfsReady();
169IntRC gpfsMmap(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, void *vP,
170               struct ext_cred_t *credP, void *kopP, Boolean writeAccess,
171               Boolean explicit_mmap,long long offset, long long length);
172
173#ifdef SMB_LOCKS
174IntRC SMBOpenLockControl(int command, int lockmode,
175                         int inode_n, struct MMFSVInfo * vinfoP,
176                         struct gpfsVfsData_t *privVfsP);
177int SMBGetOplockState(void *fileArgP);
178int SMBGetOplockStateV(struct MMFSVInfo * vinfoP);
179IntRC gpfsSetSMBOplock(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP,
180                       struct MMFSVInfo *vinfoP, int accessWant,
181                       int oplockWant, void *breakArgP,
182                       int *oplockGrantedP, Boolean isAsync);
183IntRC gpfsReserveShare(void *vP, void *infoP, 
184                       struct gpfsVfsData_t *privVfsP, int flags, int share,
185                       cxiNode_t *cnP, ext_cred_t *credP);
186IntRC gpfsReserveDelegation(void *vp, void *infoP, 
187                            struct gpfsVfsData_t *privVfsP, int oplockWant,
188                            int flags, void *cb_token, void *cookie);
189#endif  //SMB_LOCKS
190IntRC callDaemonToDie(char  *srcFileName, UInt32 srcLineNumber,
191                      Int32 retCode, Int32 reasonCode, char  *dataStr,
192                      char  *failingExpr);
193IntRC gpfsCleanup();
194#ifdef UIDREMAP
195int UIDremapOn();
196#endif
197void gpfsSwapdEnqueue(cxiNode_t *cnP);
198void gpfsSwapdDequeue(cxiNode_t *cnP);
199void gpfsGrace(int on_off);
200#ifdef P_NFS4
201IntRC gpfsGetOpenState(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP,
202                       int nodeId, void *p, int len, struct ext_cred_t *credP);
203IntRC gpfsLayoutRetrun(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP,
204                       void *p, int len);
205IntRC gpfsGetDeviceInfo(struct gpfsVfsData_t *privVfsP, void *p);
206IntRC gpfsGetLayout(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP,
207                    void *p, struct ext_cred_t *credP);
208IntRC gpfsGetDeviceList(struct gpfsVfsData_t *privVfsP, void *p);
209int gpfsGetMyDevID(struct gpfsVfsData_t *privVfsP);
210void gpfsGetVerifier(struct gpfsVfsData_t *privVfsP, UInt32 *p);
211#endif
212
213#ifdef DMAPI
214IntRC gpfsDmUnmountEvent(Boolean preunmount, Boolean force,
215                         struct gpfsVfsData_t *privVfsP, cxiNode_t *rootCNP,
216                         Boolean *dmDoUnmountEventP, void **sgUidP,
217                         void **eventlistP, void **sessLocP, int vnoprc);
218#endif
219
220IntRC gpfsNFSIget(struct gpfsVfsData_t *privVfsP, struct cxiIGetArg_t *argP,
221                  UInt32 generation, void **vPP);
222IntRC gpfsOpenNFS(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, int flags,
223                  struct MMFSVInfo *vinfoP, struct ext_cred_t *credP);
224
225struct gpfs_operations
226{
227  IntRC (*mmfs)(int cmd);
228  IntRC (*gpfsMount)(void *, int, char *, char *, char *, struct gpfsVfsData_t **,
229                     cxiNode_t **, cxiIno_t *iNumP, struct gpfsVfsData_t *, pid_t,
230                     unsigned int, Boolean, Boolean);
231  IntRC (*gpfsStatfs)(struct gpfsVfsData_t *, cxiStatfs_t *);
232  IntRC (*gpfsSyncfs)(struct gpfsVfsData_t *);
233  void (*gpfsQueueBufs)(cxibuf_t *bufP);
234  void (*gpfsMmapFlushLock)(cxiNode_t *cnP);
235  void (*gpfsMmapFlushUnlock)(cxiNode_t *cnP);
236  IntRC (*gpfsFsync)(struct gpfsVfsData_t *, struct MMFSVInfo *, cxiNode_t *, int,
237                     struct ext_cred_t *credP);
238  IntRC (*gpfsSyncNFS)(struct gpfsVfsData_t *, cxiNode_t *, int,
239                       struct ext_cred_t *credP);
240  IntRC (*gpfsMkdir)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnDirP,
241                     void **vPP, cxiNode_t **cnPP, cxiIno_t *iNumP,
242                     void *dentryP, char *dirNameP, int mode, cxiMode_t umask,
243                     struct ext_cred_t *credP);
244  IntRC (*gpfsLink)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP,
245                    cxiNode_t *dcnP, void *dentryP, char *name,
246                    struct ext_cred_t *credP);
247  IntRC (*gpfsOpen)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP,
248                    int flags, int iflags, int ext, struct MMFSVInfo **infoPP,
249                    struct ext_cred_t *credP);
250  IntRC (*gpfsInodeRead)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP,
251                         cxiIno_t ino, void *opaque);
252  IntRC (*gpfsInodeDelete)(struct gpfsVfsData_t *, cxiNode_t *, Boolean isGPFS,
253                           struct ext_cred_t *);
254  int (*gpfsInodeFindActor)(cxiNode_t *, cxiIno_t, void *);
255  int (*gpfsGetSnapIdPair)(cxiNode_t *, UInt32 *, UInt32 *);
256  IntRC (*gpfsRemove)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP,
257                      cxiNode_t *dcnP, char *nameP, struct ext_cred_t *credP);
258  IntRC (*gpfsRename)(struct gpfsVfsData_t *privVfsP, cxiNode_t *sourceCNP,
259                      cxiNode_t *sourceDirCNP, caddr_t oldNameP,
260                      cxiNode_t *targetCNP, cxiNode_t *targetDirCNP,
261                      caddr_t newNameP, struct ext_cred_t *credP);
262  IntRC (*gpfsRmdir)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP,
263                     cxiNode_t *dcnP, char *nameP, struct ext_cred_t *credP);
264  IntRC (*gpfsSetattr)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP,
265                       long cmd, long arg1, long arg2, long arg3,
266                       struct ext_cred_t *credP);
267  IntRC (*gpfsSymlink)(struct gpfsVfsData_t *privVfsP, cxiNode_t *dcnP, void **vPP,
268                       cxiNode_t **cnPP, cxiIno_t *iNumP,
269                       void *dentryP, caddr_t nameP,
270                       char *symlinkTargetP, struct ext_cred_t *credP);
271  IntRC (*gpfsFsyncRange)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP,
272                          int flags, offset_t offset, offset_t length,
273                          struct ext_cred_t *credP);
274  IntRC (*gpfsClose)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP,
275                     int flags, struct MMFSVInfo *vinfoP,
276                     Boolean dmEvents);
277  IntRC (*gpfsUnmap)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP,
278                     int flag);
279  IntRC (*gpfsFattr)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP,
280                     struct MMFSVInfo *vinfoP, int rwflag, int command,
281                     void *argP, void *rCodeP, struct ext_cred_t *credP);
282  IntRC (*gpfsFsAttr)(int command, void *argP);
283  IntRC (*gpfsFclear)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP,
284                      int flags, offset_t offset, offset_t len,
285                      struct MMFSVInfo *vinfoP, struct ext_cred_t *credP);
286  IntRC (*gpfsFtrunc)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP,
287                      int flags, offset_t offset, struct MMFSVInfo *vinfoP,
288                      struct ext_cred_t *credP, Boolean dmEvents);
289  IntRC (*gpfsRead)(struct gpfsVfsData_t *privVfsP, struct KernelOperation *,
290                    cxiNode_t *cnP, int flags, struct cxiUio_t* uioP, 
291                    struct MMFSVInfo *vinfoP, cxiVattr_t *vpreP, 
292                    cxiVattr_t *vattrP, struct ext_cred_t *credP, int, int);
293  IntRC (*gpfsWrite)(struct gpfsVfsData_t *privVfsP, struct KernelOperation *,
294                     cxiNode_t *cnP, int flags, struct cxiUio_t* uioP, 
295                     struct MMFSVInfo *vinfoP, cxiVattr_t *vpreP, 
296                     cxiVattr_t *vattrP, struct ext_cred_t *credP, int, int);
297  IntRC (*gpfsGetattr)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP,
298                       cxiVattr_t *vattrP, Boolean exactStat);
299  IntRC (*gpfsAccess)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP,
300                      int mode, int who, struct ext_cred_t *credP);
301  IntRC (*gpfsReaddir)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP,
302                       void *fillDirArgP, cxiFillDir_t fillDirP,
303                       offset_t *offsetP, cxiContext_t opcontext,
304                       struct KernelOperation *kopP);
305  IntRC (*gpfsReadlink)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP,
306                        struct cxiUio_t* uioP);
307  IntRC (*gpfsCreate)(struct gpfsVfsData_t *privVfsP, cxiNode_t *dcnP,
308                      void **vPP, cxiNode_t **cnPP, cxiIno_t *iNumP, int gen,
309                      int flags, void *dentryP, caddr_t nameP, cxiMode_t mode,
310                      cxiMode_t umask, caddr_t *infoPP, struct ext_cred_t *credP);
311  IntRC (*gpfsMknod)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnDirP,
312                     void **vPP, cxiNode_t **cnPP, cxiIno_t *iNumP,
313                     void *dentryP, caddr_t nameP, cxiMode_t mode, cxiMode_t umask,
314                     cxiDev_t dev, struct ext_cred_t *credP);
315  IntRC (*gpfsRele)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP,
316                    void *vP, cxiContext_t opContext);
317  IntRC (*gpfsLookup)(struct gpfsVfsData_t *privVfsP, void *dvP, cxiNode_t *dcnP,
318                      void *dentryP, char *nameP,
319                      void **vPP, cxiNode_t **cnPP, cxiIno_t *iNumP,
320                      cxiVattr_t *vattrP, cxiMode_t *modeP,
321                      struct ext_cred_t *credP, void **dentryPP);
322  IntRC (*gpfsFcntl)(void *vkopP,
323                     struct gpfsVfsData_t *privVfsP,
324                     void *vP,                  // struct vnode* or NULL
325                     void *advObjP,             // struct gnode* or struct file*
326                     void *flP,                 // NULL or struct file_lock*
327                     cxiNode_t *cnP,
328                     offset_t offset,
329                     eflock_t *lckdatP,
330                     int cmd,                   // F_SETLK, F_SETLKW, F_GETLK
331                     int(*retry_fcn)(),
332                     ulong *retry_idP,
333                     struct ext_cred_t *credP);
334  IntRC (*gpfsFcntlReset)(void *advObjP, cxiPid_t mmfsd);
335  IntRC (*gpfsUncache)(struct gpfsVfsData_t *privVfsP);
336  IntRC (*gpfsUnmount)(struct gpfsVfsData_t *privVfsP, Boolean forced);
337  void (*gpfsFinishUnmount)(struct gpfsVfsData_t *privVfsP);
338#ifdef NFS4_CLUSTER
339  IntRC (*gpfsFsLocations) (struct gpfsVfsData_t *privVfsP, char **bufP, int *buf_size);
340#endif
341 
342  IntRC (*gpfsGetAcl)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, int flags,
343                      void *aclP, struct ext_cred_t *credP);
344  IntRC (*gpfsPutAcl)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, int flags,
345                      void *aclP, struct ext_cred_t *credP);
346 
347  IntRC (*gpfsGetNFS)(void *vP, struct MMFSVInfo **vinfoPP, int *flagsP);
348  IntRC (*gpfsReleaseNFS)(void *vP);
349  int (*gpfsReady)();
350  IntRC (*gpfsMmap)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP, void * vP,
351                    struct ext_cred_t *credP, void *koP, Boolean writeAccess,
352                    Boolean explicit_mmap,long long offset,long long length);
353#ifdef SMB_LOCKS
354  IntRC (*SMBOpenLockControl)(int command, int lockmode,
355                              int inode_n, struct MMFSVInfo * vinfoP,
356                              struct gpfsVfsData_t *privVfsP);
357  int (*SMBGetOplockState)(void *fileArgP);
358  int (*SMBGetOplockStateV)(struct MMFSVInfo * vinfoP);
359  IntRC (*gpfsSetSMBOplock)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP,
360                            struct MMFSVInfo *vinfoP, int accessWant,
361                            int oplockWant, void *breakArgP,
362                            int *oplockGrantedP, Boolean isAsync);
363  IntRC (*gpfsReserveShare)(void *, void *, struct gpfsVfsData_t *, int, int,
364                            cxiNode_t *cnP, ext_cred_t *credP);
365  IntRC (*gpfsReserveDelegation)(void *vp, void *infoP, 
366                                 struct gpfsVfsData_t *privVfsP, int oplockWant,
367                                 int, void *cb_token, void *cookie);
368#endif
369  IntRC (*gpfsDaemonToDie)(char  *srcFileName, UInt32 srcLineNumber,
370                           Int32 retCode, Int32 reasonCode, char  *dataStr,
371                           char  *failingExpr);
372  IntRC (*gpfsCleanup)();
373#ifdef UIDREMAP
374  int (*UIDremapOn)();
375#endif
376  void (*gpfsSwapdEnqueue)(cxiNode_t *cnP);
377#ifdef DMAPI
378  IntRC (*gpfsDmUnmountEvent)(Boolean preunmount, Boolean force,
379                              struct gpfsVfsData_t *privVfsP, cxiNode_t *rootCNP,
380                              Boolean *dmDoUnmountEventP, void **sgUidPP, 
381                              void **eventlistPP, void **sessLocPP, int vnoprc);
382#endif
383  IntRC (*gpfsNFSIget)(struct gpfsVfsData_t *privVfsP, struct cxiIGetArg_t *argP,
384                       UInt32 generation, void **vPP);
385  IntRC (*gpfsOpenNFS)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP,
386                       int flags, struct MMFSVInfo *vinfoP, struct ext_cred_t *credP);
387  void (*gpfsGrace)(int on_off);
388#ifdef P_NFS4
389  IntRC (*gpfsGetOpenState)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP,
390                            int nodeId, void *p, int len, struct ext_cred_t *credP);
391  IntRC (*gpfsLayoutRetrun)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP,
392                            void *p, int len);
393  IntRC (*gpfsGetDeviceInfo)(struct gpfsVfsData_t *privVfsP, void *p);
394  IntRC (*gpfsGetLayout)(struct gpfsVfsData_t *privVfsP, cxiNode_t *cnP,
395                         void *buf, struct ext_cred_t *credP);
396  IntRC (*gpfsGetDeviceList)(struct gpfsVfsData_t *privVfsP, void *buf);
397  int (*gpfsGetMyDevID)(struct gpfsVfsData_t *privVfsP);
398  void (*gpfsGetVerifier)(struct gpfsVfsData_t *privVfsP, UInt32 *p);
399#endif
400#ifdef GPFS_QUOTACTL
401  IntRC (*gpfsQuotactl)(struct gpfsVfsData_t *privVfsP, 
402                        int cmd, int qid, void *bufferP, 
403                        struct ext_cred_t *credP);
404#endif /* GPFS_QUOTACTL */
405};
406extern struct gpfs_operations gpfs_ops;
407
408#endif  /* _KERNEL */
409
410#endif  /* _h_cxi2gpfs */
411
Note: See TracBrowser for help on using the repository browser.