RFC: patch to make d_fileno 64bits

Rick Macklem rmacklem at uoguelph.ca
Fri Nov 21 03:20:24 UTC 2014


The attached patch covers the basics of a way to
convert the d_fileno field of "struct dirent" to
64bits. This patch is incomplete and won't even
build, but I thought I'd post it in case anyone
wanted to take a look and comment on the approach
it uses.

- renames the old/current one "struct dirent32"
- changes d_fileno to 64bits and adds a 64bit
  d_off field for the offset of the underlying
  file system
- defines a new VOP_READDIR() that will return
  the new "struct dirent" that is used as the
  default one for a new getdirentries(2).
- the old/current getdirentries(2) uses the old
  VOP_READDIR32() by default.

For the case of a file system that supports both
the new and old VOP_READDIR(), they are used by
the corresponding new and old getdirentries(2)
syscalls.

For a file system that only supports one of
the VOP_READDIR()s, the "struct dirent32"
is copied to "struct dirent" (or vice versa).

At this point, all file systems would support
the old VOP_READDIR() and I think the new
VOP_READDIR() can easily be added for NFS,
ZFS. (OpenBSD already has UFS code for
essentially a new struct dirent and hopefully
that code could be ported easily, too.)

Anyhow, any comments on this approach? rick
-------------- next part --------------
A non-text attachment was scrubbed...
Name: fileno.patch
Type: text/x-patch
Size: 12372 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/freebsd-fs/attachments/20141120/6e7fd039/attachment.bin>


More information about the freebsd-fs mailing list