Page MenuHomeFreeBSD

Complete support for IO_APPEND flag in fuse
ClosedPublic

Authored by cem on Jun 25 2017, 2:27 AM.
Tags
None
Referenced Files
Unknown Object (File)
Wed, Nov 20, 5:57 PM
Unknown Object (File)
Wed, Nov 20, 11:07 AM
Unknown Object (File)
Wed, Nov 20, 11:07 AM
Unknown Object (File)
Wed, Nov 20, 11:07 AM
Unknown Object (File)
Fri, Nov 15, 3:49 AM
Unknown Object (File)
Sun, Nov 10, 9:14 AM
Unknown Object (File)
Sun, Nov 10, 9:08 AM
Unknown Object (File)
Sun, Nov 10, 5:49 AM
Subscribers
None

Details

Summary

This finishes what r245164 started and makes open(..., O_APPEND) work again
after r299753.

  • Pass ioflags, incl. IO_APPEND, down to the direct write backend (r245164 added it to only the bio backend).
  • (r299753 changed the WRONLY backend from bio to direct.)

PR: 220185
Reported by: Ben RUBSON <ben.rubson at gmail.com>

Diff Detail

Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 10112
Build 10535: arc lint + arc unit

Event Timeline

Fix looks good to me. I didn't realize that direct I/O could be happening on
multiple descriptors concurrently, so this would be needed.

Good catch.

This revision is now accepted and ready to land.Jun 25 2017, 12:35 PM

direct I/O could be happening on
multiple descriptors concurrently, so this would be needed.

It's not a race condition; it happens even with a single descriptor. Just a logic bug where IO_APPEND wasn't getting passed into and handled by the direct write path.

Ok, yes. I was assuming that direct I/O of a single thread would be sequentially
increasing writes that would remain in order (ie. all would grow/append to the
file).

This revision was automatically updated to reflect the committed changes.