diff options
-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) | |||
430 | */ | 430 | */ |
431 | static void nfs_umount_begin(struct vfsmount *vfsmnt, int flags) | 431 | static void nfs_umount_begin(struct vfsmount *vfsmnt, int flags) |
432 | { | 432 | { |
433 | struct nfs_server *server = NFS_SB(vfsmnt->mnt_sb); | ||
434 | struct rpc_clnt *rpc; | ||
435 | |||
433 | shrink_submounts(vfsmnt, &nfs_automount_list); | 436 | shrink_submounts(vfsmnt, &nfs_automount_list); |
437 | |||
438 | if (!(flags & MNT_FORCE)) | ||
439 | return; | ||
440 | /* -EIO all pending I/O */ | ||
441 | rpc = server->client_acl; | ||
442 | if (!IS_ERR(rpc)) | ||
443 | rpc_killall_tasks(rpc); | ||
444 | rpc = server->client; | ||
445 | if (!IS_ERR(rpc)) | ||
446 | rpc_killall_tasks(rpc); | ||
434 | } | 447 | } |
435 | 448 | ||
436 | /* | 449 | /* |