Page MenuHomeFreeBSD

dirent is now 8-byte aligned after ino64.
AcceptedPublic

Authored by bdrewery on Jun 21 2018, 10:22 PM.
Tags
None
Referenced Files
Unknown Object (File)
Sun, Sep 13, 5:10 PM
Unknown Object (File)
Fri, Sep 11, 2:23 PM
Unknown Object (File)
Sat, Sep 5, 4:07 PM
Unknown Object (File)
Sat, Sep 5, 3:09 PM
Unknown Object (File)
Sat, Sep 5, 10:04 AM
Unknown Object (File)
Fri, Sep 4, 10:11 PM
Unknown Object (File)
Fri, Sep 4, 10:20 AM
Unknown Object (File)
Fri, Sep 4, 9:22 AM
Subscribers
None

Details

Reviewers
kib
jhb

Diff Detail

Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 17526
Build 17349: arc lint + arc unit

Event Timeline

This is fine.

Since you are changing the line, I believe two additional bugs should be fixed. long is the wrong type to use, uintptr_t is correct. Also please do the explicit comparision with 0, since the result of and is not boolean:

if (((uintptr_t)dp & 0x7) != 0)
   break;

address findings and add a comment as it is otherwise somewhat obscure.

As I said I believe it is fine functionally.

One note I have about it is that the change makes libc incompatible with pre-ino64 kernel. IMO this is fine, but note that other people do not agree. In particular, I think that imp' forward-compat shims for the ino64-changed syscalls are now less useful.

If you consider this important enough, you can do something like this:

	... & (__getosreldate() >= INO64_FIRST ? 0x7 : 0x3)) != 0)
This revision is now accepted and ready to land.Jun 22 2018, 8:56 AM