tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Add operation vcache_rekey



   Date: Wed, 25 Jun 2014 11:24:16 +0200
   From: "J. Hannken-Illjes" <hannken%eis.cs.tu-bs.de@localhost>

   The attached diff adds a new vcache operation

           void
           vcache_rekey(struct mount *mp, void *old_key, size_t old_key_len,
               void *new_key, size_t new_key_len)

   to atomically change the key of a cached vnode.  As the key is no longer
   constant remove "const" from all key arguments.

   Comments or objections anyone?

I assume you're doing this in preparation for replacing the msdosfs
ihash without breaking msdosfs_rename, yes?

I'm not sure all the const removal is sensible.  For example, it's not
clear to me why vcache_get(mp, &ino, sizeof ino, &vp) should ever
modify ino.  I think the only place in the API you really want to
remove const is in the loadvnode prototype:

int     xyzfs_loadvnode(struct mount *mp, struct vnode *vp,
            const void *key, size_t key_len, void **new_key);
                                             ^^^^^^^^^^^^^^
And I think vcache_rekey should take const pointers too.  (This may
require a little judicious __UNCONST in the implementation of the API
as an artefact of the dual use of struct vcache_key.)

But I may be missing something here.  If I'm barking up the wrong tree
with this, could you show how you plan to use vcache_rekey with
msdosfs or whatever else needs it?

Also, I wonder whether any file systems will ever change the length of
the key for a vnode.  Probably not.


Home | Main Index | Thread Index | Old Index