2007/456 Vnode Specific Data
james wahlig
James.Wahlig at sun.com
Thu Aug 9 08:48:21 PDT 2007
Rob Gittins wrote:
>
> Hi Jim,
>
> Would it be possible to extend vsd_create to take a key as well as
> create and return a key? This way a FS can have predefined key values
> for specific data elements. This might simplify the usage in some cases.
>
> Thanks,
> Rob
>
I don't think so. Of course, anything is possible in software, but what
I mean is that the keys are system wide. Once a vsd_create() is done,
that key is gone until it is destroyed. There isn't a way to reserve a
key. The key is only an index into the array of vsd's, starting at zero
and incrementing for each vsd that is created The array grows
dynamically with the key, there are no preinitialized entries.
The user of VSD should not care what their key is. It should be opaque
to the user, that is, the user of vsd doesn't need to know the value of
the key or the order (or number) of vsd elements.
Having a "predefined key" is no different than just using the key
returned by vsd_create(). All the calls will be the same, having:
uint_t MyFSvsdKey = 0;
vsd_create(&MyFSvsdKey, NULL);
is no different than
#define MyFSvsdKey 1 (or some number)
Also, you want the key to be the smallest available, since it determines
how big of a vsd array needs to be allocated. You wouldn't want to use
a big number because it may be the only vsd being used and we would be
wasting space by allocating a large array. Lastly, how would the
"reservation" of keys be managed? Who would control that so two
different groups/projects don't claim the same key?
Again, it is doable, but I don't think it is the right thing to do. Let
me know if you still have questions. I could give you a pointer to the
code, which may help in understanding how it works.
Jim
More information about the opensolaris-arc
mailing list