windows-pcache-20050310
[openafs.git] / src / WINNT / afsd / cm_dcache.h
1 /*
2  * Copyright 2000, International Business Machines Corporation and others.
3  * All Rights Reserved.
4  * 
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
8  */
9
10 #ifndef __CM_DCACHE_ENV__
11 #define __CM_DCACHE_ENV__ 1
12
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? */
19         
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 */
23 } cm_bulkIO_t;
24
25 extern long cm_StoreMini(cm_scache_t *scp, cm_user_t *userp, cm_req_t *reqp);
26
27 extern int cm_InitDCache(int newFile, long chunkSize, long nbuffers);
28
29 extern int cm_HaveBuffer(struct cm_scache *, struct cm_buf *, int haveBufLocked);
30
31 extern long cm_GetBuffer(struct cm_scache *, struct cm_buf *, int *,
32         struct cm_user *, struct cm_req *);
33
34 extern long cm_CheckFetchRange(cm_scache_t *scp, osi_hyper_t *startBasep,
35         long length, cm_user_t *up, cm_req_t *reqp, osi_hyper_t *realBasep);
36
37 extern long cm_SetupFetchBIOD(cm_scache_t *scp, osi_hyper_t *offsetp,
38         cm_bulkIO_t *biop, cm_user_t *up, cm_req_t *reqp);
39
40 extern void cm_ReleaseBIOD(cm_bulkIO_t *biop, int isStore);
41
42 extern long cm_SetupStoreBIOD(cm_scache_t *scp, osi_hyper_t *inOffsetp,
43         long inSize, cm_bulkIO_t *biop, cm_user_t *userp, cm_req_t *reqp);
44
45 extern void cm_BkgPrefetch(cm_scache_t *scp, long p1, long p2, long p3, long p4,
46         struct cm_user *userp);
47
48 extern void cm_BkgStore(cm_scache_t *scp, long p1, long p2, long p3, long p4,
49         struct cm_user *userp);
50
51 extern void cm_ConsiderPrefetch(cm_scache_t *scp, osi_hyper_t *offsetp,
52         cm_user_t *userp, cm_req_t *reqp);
53
54 extern long cm_ValidateDCache(void);
55
56 extern long cm_ShutdownDCache(void);
57
58 #endif /*  __CM_DCACHE_ENV__ */