On 04 Sep 2001 at 10:36 (+0200), Poul-Henning Kamp wrote:
| The v_tag element in struct vnode is a debugging aid, but unfortunately
| it is implemented in a way which means that adding a filesystem means
| modifying the definition in <sys/vnode.h>.
| Convert the v_tag to an "const char *" and have the filesystems put
| their name in there instead.
| The v_tag has been abused a few places, easily recognizable by the fact
| that the kernel should never inspect the value of v_tag.
| These places should be easily changeable to use the new representation.
| Please mark them with a big fat "/*XXX: ABUSE OF v_tag */" comment.
I've done a /cursory/ look over how this v_tag is used. I'm not sure
this is a simple/clean as you propose, since this is used in the
IS_LOCKING_VFS macro, as well as in union_subr.c...
These uses /seem/ fairly significant due to the fact that the v_tag
is being used to determine capabilities of the vnode in question.
How should this be worked around? It would be fairly trivial to
change v_tag to v_feature (or similar) then add the v_tag as you
propose. I suggest this since those _tests_ for features should
IMO not be done with a char operation, since that would (in my
ignorant estimation) have a very negative effect on fs performance.
Of course, my suggested v_feature hack would again require changing
vnode.h for new features, but this is (assumedly) less frequent
than modifying for file systems.
I'll work on this this weekend, and (hopefully) follow thru with
"Develop your talent, man, and leave the world something. Records are
really gifts from people. To think that an artist would love you enough
to share his music with anyone is a beautiful thing." -- Duane Allman
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message