patch that makes d_fileno 64bits

Rick Macklem rmacklem at uoguelph.ca
Sat Dec 27 23:32:56 UTC 2014


Hi,

Kirk and Gleb Kurtsou (plus some others) are working through
the difficult job of changing ino_t to 64bits. (Changes to syscalls,
libraries, etc.)

This patch:
http://people.freebsd.org/~rmacklem/64bitfileno.patch

is somewhat tangential to the above, in that it changes the
d_fileno field of "struct dirent" and va_fileid to uint64_t.
It also includes adding a field called d_cookie to "struct dirent",
which is the position of the next directory entry in the underlying
file system. A majority of this patch are changes to the NFS code,
but it includes a simple "new struct dirent"->"old struct dirent32"
copy routine for getdirentries(2) and small changes to all the
file systems so they fill in the "new struct dirent".

This patch can be applied to head/current and the resultant kernel
should work fine, although I've only been able to test some of the
file systems. However, DO NOT propagate the changes to sys/sys/dirent.h
out to userland (/usr/include/sys/dirent.h) and build a userland from
it or things will get badly broken.

I don't know if Kirk and/or Gleb will find some of this useful for
their updates to project/ino64, but it will allow people to test
these changes. (It modifies the NFS server so that it no longer uses
the "cookie" args to VOP_READDIR(), but that part can easily
be removed from the patch.)

If folks can test this patch, I think it would be helpful for
the effort of changing ino_t to 64bits.

Have fun with it, rick


More information about the freebsd-fs mailing list