Re: f_ops flag to speed up compatible ioctls in linux kernel

Roland Dreier
2004-09-01T21:15:25Z

Chris> You forgot a driver specific filesystem which exposes
Chris> requests in a file per request type style. Also, there's a
Chris> simple_transaction type of file which can allow you
Chris> send/recv data and should eliminate the need for tagging.
Chris> Example, look at nfsd fs (fs/nfsd/nfsctl.c).

Thanks for the pointer -- I had a look at this stuff. It seems that
using the simple_transaction stuff is fairly heavyweight -- if I
understand correctly, every operation requires userspace to do
open()-write()-read()-close(), and also uses a page of lowmem. I'm
not sure if this is the best fit for our requirements with InfiniBand
drivers: although the user->kernel calls are not in the data path,
there can still be quite a few of them.

On the other hand, ioctl() holds the BKL through the whole operation
so that's suboptimal as well.

Thanks,
Roland