diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2007-06-05 19:13:47 -0400 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2007-07-10 23:40:25 -0400 |
commit | fc6ae3cf482c385a6fe87ba119d399bb85aa670b (patch) | |
tree | 0bd1f3392f1e4d2a902eb0e23a4978cfe91f1843 /fs/nfs/super.c | |
parent | 83d93f2229348837bf988a1048f7f38789474471 (diff) |
NFS: Re-enable forced umounts
They disappeared some time around 2.6.18.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/super.c')
-rw-r--r-- | fs/nfs/super.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/fs/nfs/super.c b/fs/nfs/super.c index ca20d3cc2609..14c7923697d2 100644 --- a/fs/nfs/super.c +++ b/fs/nfs/super.c @@ -430,7 +430,20 @@ static int nfs_show_stats(struct seq_file *m, struct vfsmount *mnt) */ static void nfs_umount_begin(struct vfsmount *vfsmnt, int flags) { + struct nfs_server *server = NFS_SB(vfsmnt->mnt_sb); + struct rpc_clnt *rpc; + shrink_submounts(vfsmnt, &nfs_automount_list); + + if (!(flags & MNT_FORCE)) + return; + /* -EIO all pending I/O */ + rpc = server->client_acl; + if (!IS_ERR(rpc)) + rpc_killall_tasks(rpc); + rpc = server->client; + if (!IS_ERR(rpc)) + rpc_killall_tasks(rpc); } /* |