2 * Copyright 2000, International Business Machines Corporation and others.
5 * This software has been released under the terms of the IBM Public
6 * License. For details, see the LICENSE file in the top-level source
7 * directory or online at http://www.openafs.org/dl/license10.html
10 #ifndef __CM_DCACHE_ENV__
11 #define __CM_DCACHE_ENV__ 1
13 /* bulk I/O descriptor */
14 typedef struct cm_bulkIO {
15 struct cm_scache *scp; /* typically unheld vnode ptr */
16 osi_hyper_t offset; /* offset of buffers */
17 long length; /* # of bytes to be transferred */
18 int reserved; /* did we reserve multiple buffers? */
20 /* all of these buffers are held */
21 osi_queueData_t *bufListp; /* list of buffers involved in I/O */
22 osi_queueData_t *bufListEndp; /* list of buffers involved in I/O */
25 extern long cm_StoreMini(cm_scache_t *scp, cm_user_t *userp, cm_req_t *reqp);
27 extern int cm_InitDCache(int newFile, long chunkSize, afs_uint64 nbuffers);
29 extern int cm_HaveBuffer(struct cm_scache *, struct cm_buf *, int haveBufLocked);
31 extern long cm_GetBuffer(struct cm_scache *, struct cm_buf *, int *,
32 struct cm_user *, struct cm_req *);
34 extern long cm_CheckFetchRange(cm_scache_t *scp, osi_hyper_t *startBasep,
35 osi_hyper_t *length, cm_user_t *up,
36 cm_req_t *reqp, osi_hyper_t *realBasep);
38 extern long cm_SetupFetchBIOD(cm_scache_t *scp, osi_hyper_t *offsetp,
39 cm_bulkIO_t *biop, cm_user_t *up, cm_req_t *reqp);
41 extern void cm_ReleaseBIOD(cm_bulkIO_t *biop, int isStore, int failed, int scp_locked);
43 extern long cm_SetupStoreBIOD(cm_scache_t *scp, osi_hyper_t *inOffsetp,
44 long inSize, cm_bulkIO_t *biop, cm_user_t *userp, cm_req_t *reqp);
46 extern afs_int32 cm_BkgPrefetch(cm_scache_t *scp, afs_uint32 p1, afs_uint32 p2, afs_uint32 p3, afs_uint32 p4,
47 struct cm_user *userp);
49 extern afs_int32 cm_BkgStore(cm_scache_t *scp, afs_uint32 p1, afs_uint32 p2, afs_uint32 p3, afs_uint32 p4,
50 struct cm_user *userp);
52 extern void cm_ConsiderPrefetch(cm_scache_t *scp, osi_hyper_t *offsetp,
54 cm_user_t *userp, cm_req_t *reqp);
56 extern long cm_ValidateDCache(void);
58 extern long cm_ShutdownDCache(void);
60 extern long cm_BufWrite(void *vscp, osi_hyper_t *offsetp, long length, long flags,
61 cm_user_t *userp, cm_req_t *reqp);
63 #endif /* __CM_DCACHE_ENV__ */