On Wed, Jun 29, 2011 at 09:31:33AM +0000, Emmanuel Dreyfus wrote:
 > The conversion is easy to do, but the right place to do it is
 > tricky.  VOP_LISTEXTATTR() writes its output to the userland
 > buffer, therefore if I convert in src/sys/ufs/ufs/ufs_extattr.c, I
 > have to copyin/convert/copyout, and that does not looks good
 > perfromance-wise.

That would be totally wrong anyway; if this becomes necessary, teach
the filesystems that have extended attributes (which is only ffs,
right?) to issue the data by uiomove, which they should have been
doing anyway, and then they can dump to a kernel or user buffer as
needed transparently.

 > Converting in libc is another option,

That is by far the sanest way to do it.

 > and we can also add a flavor flag to VOP_LISTEXTATTR so that we can
 > require the filesystem to output the data in the appropriate
 > format.

Please don't.

That said, even if you don't like the suggestion of using struct
dirent, ISTM that the preferred user API for listing extended
attributes should be something more like opendir/readdir.

-- 
David A. Holland
dholl...@netbsd.org

Reply via email to