Linux NFS development
 help / color / mirror / Atom feed
From: Chuck Lever <chuck.lever@oracle.com>
To: NeilBrown <neilb@suse.de>
Cc: Jeff Layton <jlayton@kernel.org>, Dai Ngo <dai.ngo@oracle.com>,
	Olga Kornievskaia <okorniev@redhat.com>,
	Tom Talpey <tom@talpey.com>,
	Linux NFS Mailing List <linux-nfs@vger.kernel.org>
Subject: Re: NFSD automatically releases all states when underlying file system is unmounted
Date: Thu, 20 Mar 2025 13:53:18 -0400	[thread overview]
Message-ID: <0750ef11-f189-4937-b893-a3edd2ef1afb@oracle.com> (raw)
In-Reply-To: <174242076022.9342.12166225816627715170@noble.neil.brown.name>

On 3/19/25 5:46 PM, NeilBrown wrote:
> On Thu, 20 Mar 2025, Dai Ngo wrote:
>> Hi,
>>
>> Currently when the local file system needs to be unmounted for maintenance
>> the admin needs to make sure all the NFS clients have stopped using any files
>> on the NFS shares before the umount(8) can succeed.
> 
> This is easily achieved with
>   echo /path/to/filesystem > /proc/fs/nfsd/unlock_filesystem
> 
> Do this after unexporting and before unmounting.

Seems like administrators would expect that a filesystem can be
unmounted immediately after unexporting it. Should "exportfs" be changed
to handle this extra step under the covers? Doesn't seem like it would
be hard to do, and I can't think of a use case where it would be
harmful.


> All state for NFSv4 exports, and all NLM locks for NFSv2/3 exports, will
> be invalidated and files closed.  NFSv4 clients will get
> NFS4ERR_ADMIN_REVOKED when they attempt to use any state that was on
> that filesystem.

I'm wondering if this mechanism also flushes courtesy client state for
the file system that is about to be exported... it should, if it does
not already take care of that.


> (I don't think this flushes the NFSv3 file cache, so a short delay might
>  be needed before the unmount when v3 is used.  That should be fixed)
> 
> NeilBrown
> 
> 
>>
>> In an environment where there are thousands of clients this manual process
>> seems almost impossible or impractical. The only option available now is to
>> restart the NFS server which would works since the NFS client can recover its
>> state but it seems like this is a big hammer approach.
>>
>> Ideally, when the umount command is run there is a callback from the VFS layer
>> to notify the upper protocols; NFS and SMB, to release its states on this file
>> system for the umount to complete.
>>
>> Is there any existing mechanism to allow NFSD to release its states automatically
>> on unmount?
>>
>> Unmount is not a frequent operation. Is it justifiable to add a bunch of complex
>> code for something is not frequently needed?
>>
>> I appreciate any opinions on this issue.
>>
>> Thanks,
>> -Dai
>>
>>
>>
>>
>>    
>>
>>
> 


-- 
Chuck Lever

  parent reply	other threads:[~2025-03-20 17:53 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-19 18:22 NFSD automatically releases all states when underlying file system is unmounted Dai Ngo
2025-03-19 18:28 ` Chuck Lever
2025-03-19 19:00   ` Dai Ngo
2025-03-19 19:24     ` Chuck Lever
2025-03-19 19:44       ` Dai Ngo
2025-03-19 21:46 ` NeilBrown
2025-03-19 22:12   ` Dai Ngo
2025-03-20 17:53   ` Chuck Lever [this message]
2025-03-21 14:36     ` Benjamin Coddington
2025-03-21 14:43       ` Jeff Layton
2025-03-21 15:07         ` Benjamin Coddington
2025-03-21 15:18           ` Chuck Lever
2025-03-21 15:51             ` Benjamin Coddington
2025-03-21 14:44       ` Chuck Lever
2025-03-26  0:23         ` NeilBrown
2025-03-26  3:20           ` Dai Ngo
2025-03-26  3:41             ` NeilBrown
2025-03-26 13:15               ` Chuck Lever
2025-03-27 22:47                 ` NeilBrown
2025-04-09 21:00               ` Dai Ngo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0750ef11-f189-4937-b893-a3edd2ef1afb@oracle.com \
    --to=chuck.lever@oracle.com \
    --cc=dai.ngo@oracle.com \
    --cc=jlayton@kernel.org \
    --cc=linux-nfs@vger.kernel.org \
    --cc=neilb@suse.de \
    --cc=okorniev@redhat.com \
    --cc=tom@talpey.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox