[OpenAFS] Solaris 10u6: ZFS cache?
Douglas E. Engert
Wed, 12 Nov 2008 10:58:05 -0600
Derrick Brashear wrote:
>>>> o The ois_DisableAtime routine was trying to update
>>>> the inode. I skipped that part of the code. Is this
>>>> OK or not? Is there another way to update the flag?
>> What is this code trying to do? Is it trying to say don't
>> update the atime of the cache file as this improves performance?
> That's the goal. The atime on cache inodes is meaningless. They aren't
> real files.
>>> Perhaps we should use values just shy of 0xffffffff.
>> Yes that would work.
>> It also looks like ZFS is storing the object ID as the
>> inode which can be obtained from a stat() with -D_FILE_OFFSET_BITS=64
> Can we leverage that? Actually, if we do, we have the issue that we
> can no longer use tmpfs as cache, which I assume with your first patch
> we can.
The first patch in effect does not use inodes at all, all operations
on the cache files are done via vn_ or VOP_* operations using the the vnode.
I tried creating a /tmp/afscache where /tmp in in swap. and it works!
The /etd/init.d/afs script needs to create the /tmp/afscache directory.
So are you leaning to using the AFS_CACHE_VNODE_PATH approach
in all cases?
One of the trade offs is that I had to use the pn_get_buf, lookuppnvp
to get the vnode, so it could pass the afs_osi_cred.
With the vfs_vget or tmp_vget approach one has to now how
to build the fid_t from the inode as returned by stat.
I have been looking at the Open Solaris code for all this...
>> And it looks like the vnode associated with an object can be obtained
>> via a vfs_vget(vfs, vnode **, fid)
>> The fid can have the object ID.
>> So it looks like if there was a ZfsSOpen much like there is a
>> XvfsOpen, if could get constructe an fid, and called VFS_VGET
>> to get the vnode. In this case then the AFS_CACHE_VNODE_PATH
>> would not be needed.
> OpenAFS-info mailing list
Douglas E. Engert <DEEngert@anl.gov>
Argonne National Laboratory
9700 South Cass Avenue
Argonne, Illinois 60439