diff options
author | Ralf Baechle <ralf@linux-mips.org> | 1998-08-25 09:12:35 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 1998-08-25 09:12:35 +0000 |
commit | c7fc24dc4420057f103afe8fc64524ebc25c5d37 (patch) | |
tree | 3682407a599b8f9f03fc096298134cafba1c9b2f /fs/nfs/inode.c | |
parent | 1d793fade8b063fde3cf275bf1a5c2d381292cd9 (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.c | 19 |
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); |