Re: [PATCH] nfs: add 'noextend' option for lock-less 'lost writes' prevention

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 18/06/2024 21:59, Trond Myklebust wrote:
Hi Dan,

On Tue, 2024-06-18 at 18:33 +0300, Dan Aloni wrote:
There are some applications that write to predefined non-overlapping
file offsets from multiple clients and therefore don't need to rely
on
file locking. However, NFS file system behavior of extending writes
to
to deal with write fragmentation, causes those clients to corrupt
each
other's data.

To help these applications, this change adds the `noextend` parameter
to
the mount options, and handles this case in `nfs_can_extend_write`.

Clients can additionally add the 'noac' option to ensure page cache
flush on read for modified files.
I'm not overly enamoured of the name "noextend". To me that sounds like
it might have something to do with preventing appends. Can we find
something that is a bit more descriptive?

nopbw (No page boundary writes) ?


That said, and given your last comment about reads. Wouldn't it be
better to have the application use O_DIRECT for these workloads?
Turning off attribute caching is both racy and an inefficient way to
manage page cache consistency. It forces the client to bombard the
server with GETATTR requests in order to check that the page cache is
in synch, whereas your description of the workload appears to suggest
that the correct assumption should be that it is not in synch.

IOW: I'm asking if the better solution might not be to rather implement
something akin to Solaris' "forcedirectio"?

This access pattern represents a common case in HPC where different workers
write records to a shared output file which do not necessarily align to a page boundary.

This is not everything that the app is doing nor the only file it is accessing, so IMO forcing
directio universally is may penalize the application.




[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux