Linux NFS development
 help / color / mirror / Atom feed
* close(2) behavior when client holds a write delegation
@ 2015-01-07 20:04 Chuck Lever
  2015-01-08  0:05 ` Trond Myklebust
  0 siblings, 1 reply; 6+ messages in thread
From: Chuck Lever @ 2015-01-07 20:04 UTC (permalink / raw)
  To: Linux NFS Mailing List; +Cc: Dai Ngo

Hi-

Dai noticed that when a 3.17 Linux NFS client is granted a
write delegation, it neglects to flush dirty data synchronously
with close(2). The data is flushed asynchronously, and close(2)
completes immediately. Normally that’s OK. But Dai observed that:

1. If the server can’t accommodate the dirty data (eg ENOSPC or
   EIO) the application is not notified, even via close(2) return
   code.

2. If the server is down, the application does not hang, but it
   can leave dirty data in the client’s page cache with no
   indication to applications or administrators.

   The disposition of that data remains unknown even if a umount
   is attempted. While the server is down, the umount will hang
   trying to flush that data without giving an indication of why.

3. If a shutdown is attempted while the server is down and there
   is a pending flush, the shutdown will hang, even though there
   are no running applications with open files.

4. The behavior is non-deterministic from the application’s
   perspective. It occurs only if the server has granted a write
   delegation for that file; otherwise close(2) behaves like it
   does for NFSv2/3 or NFSv4 without a delegation present
   (close(2) waits synchronously for the flush to complete).

Should close(2) wait synchronously for a data flush even in the
presence of a write delegation?

It’s certainly reasonable for umount to try hard to flush pinned
data, but that makes shutdown unreliable.

Thanks for any thoughts!

--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com




^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2015-01-08 15:46 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-01-07 20:04 close(2) behavior when client holds a write delegation Chuck Lever
2015-01-08  0:05 ` Trond Myklebust
2015-01-08  1:11   ` Tom Haynes
2015-01-08  2:58     ` Trond Myklebust
2015-01-08  3:11     ` Dai Ngo
2015-01-08 15:32     ` [nfsv4] " Rick Macklem

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox