summaryrefslogtreecommitdiffstats
path: root/fs/nfs/inode.c
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>1998-08-25 09:12:35 +0000
committerRalf Baechle <ralf@linux-mips.org>1998-08-25 09:12:35 +0000
commitc7fc24dc4420057f103afe8fc64524ebc25c5d37 (patch)
tree3682407a599b8f9f03fc096298134cafba1c9b2f /fs/nfs/inode.c
parent1d793fade8b063fde3cf275bf1a5c2d381292cd9 (diff)
o Merge with Linux 2.1.116.
o New Newport console code. o New G364 console code.
Diffstat (limited to 'fs/nfs/inode.c')
-rw-r--r--fs/nfs/inode.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c
index d56e4e7e6..e89abdbce 100644
--- a/fs/nfs/inode.c
+++ b/fs/nfs/inode.c
@@ -43,6 +43,7 @@ static void nfs_put_inode(struct inode *);
static void nfs_delete_inode(struct inode *);
static int nfs_notify_change(struct dentry *, struct iattr *);
static void nfs_put_super(struct super_block *);
+static void nfs_umount_begin(struct super_block *);
static int nfs_statfs(struct super_block *, struct statfs *, int);
static struct super_operations nfs_sops = {
@@ -54,7 +55,9 @@ static struct super_operations nfs_sops = {
nfs_put_super, /* put superblock */
NULL, /* write superblock */
nfs_statfs, /* stat filesystem */
- NULL
+ NULL, /* no remount */
+ NULL, /* no clear inode */
+ nfs_umount_begin /* umount attempt begin */
};
struct rpc_stat nfs_rpcstat = { &nfs_program };
@@ -142,6 +145,17 @@ nfs_put_super(struct super_block *sb)
MOD_DEC_USE_COUNT;
}
+void
+nfs_umount_begin(struct super_block *sb)
+{
+ struct nfs_server *server = &sb->u.nfs_sb.s_server;
+ struct rpc_clnt *rpc;
+
+ /* -EIO all pending I/O */
+ if ((rpc = server->client) != NULL)
+ rpc_killall_tasks(rpc);
+}
+
/*
* Compute and set NFS server blocksize
*/
@@ -448,7 +462,7 @@ nfs_fhget(struct dentry *dentry, struct nfs_fh *fhandle,
dentry->d_parent->d_name.name, dentry->d_name.name,
fattr->fileid);
- /* Install the filehandle in the dentry */
+ /* Install the file handle in the dentry */
*((struct nfs_fh *) dentry->d_fsdata) = *fhandle;
#ifdef CONFIG_NFS_SNAPSHOT
@@ -464,6 +478,7 @@ nfs_fhget(struct dentry *dentry, struct nfs_fh *fhandle,
goto out;
inode->i_sb = sb;
inode->i_dev = sb->s_dev;
+ inode->i_flags = sb->s_flags;
inode->i_ino = fattr->fileid;
nfs_read_inode(inode);
nfs_fill_inode(inode, fattr);