Okay, thanks for that help! It made reading the code easier.
But I continue with my doubts:
In lines in file src/afs/VNOPS/afs_vnop_read.c or
src/afs/VNOPS/afs_vnop_write.c I am unable to track the macros for VNOP_READ
and VNOP_WRITE. I do find some traces in IRIX/osi_vfs.h but that does not
really helps.
----------------------------------
#ifdef AFS_SUN510_ENV
{
caller_context_t ct;
VOP_RWLOCK(tfile->vnode, 1, &ct);
code = VOP_WRITE(tfile->vnode, &tuio, 0, afs_osi_credp, &ct);
VOP_RWUNLOCK(tfile->vnode, 1, &ct);
}
-----------------------------------
>From what I undestand this part does the OS dependent read from cache to
memory and write to cache from memory.
Cheers
Sanket
On Sat, May 22, 2010 at 9:27 PM, Andrew Deason <[email protected]>wrote:
> On Sat, 22 May 2010 12:34:06 -0400 (EDT)
> "Matt W. Benjamin" <[email protected]> wrote:
>
> > ----- "Sanket Agarwal" <[email protected]> wrote:
> >
> > > I am looking into the core data structures of OpenAFS kernel module
> > > for clients, of which I find that struct dcache and struct fcache
> > > will be most important. I wish to ask you a few questions here:
> >
> > struct vcache
>
> I found this a bit confusing when I first looked at it, so a little more
> info... a vnode is the OS' filesystem-agnostic in-memory representation
> of a file. A vcache is the OpenAFS module's in-memory representation of
> a file. You can get a vnode from a vcache and a vcache from an AFS vnode
> a couple of different ways, depending on what the client OS is. That's
> what AFSTOV and VTOAFS are for.
>
> > > and is this chunk size same as that of Page size of pages in the
> > > memory(which the kernel will ultimately load as pages in the
> > > memory).
> >
> > no, typically a chunk is 64k, but you can set an alternate chunk size
> > when the cm is started, see AFSD(8)
>
> Default chunk sizes for a disk cache ranges from 256K to 1M, depending
> on the size of the cache. For caches smaller than around 500M, the
> chunksize is 256K; smaller than 1G and it's 512K. Larger and it's 1M.
>
> For memcache the default is 8k.
>
> > > 3. What is the role played by the structure struct fcache, what does
> > > it point to ?
> >
> > I'm not a dcache expert, but cribbing from the code, it looks as if
> > an fcache is involved with representing chunks in the cm's persistent
> > file cache
> >
> > > 4. I see that dcache is stored in the memory but fcache is disk
> > > saved on disk( where , along with the afs cache ?) And why such a
> > > decision.
>
> The CacheItems file is made up of a bunch of 'struct fcache's (each one
> representing a chunk, as Matt says). We need to save some information
> about each chunk to disk, so we can find them again. So when a client
> restarts and asks for file X chunk Y, we can find where that chunk is in
> the cache.
>
> --
> Andrew Deason
> [email protected]
>
> _______________________________________________
> OpenAFS-devel mailing list
> [email protected]
> https://lists.openafs.org/mailman/listinfo/openafs-devel
>