git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git]
/
fs
/
nfs
/
super.c
diff --git
a/fs/nfs/super.c
b/fs/nfs/super.c
index
97a9375
..
b1ddca9
100644
(file)
--- a/
fs/nfs/super.c
+++ b/
fs/nfs/super.c
@@
-44,7
+44,7
@@
#include <linux/vfs.h>
#include <linux/inet.h>
#include <linux/nfs_xdr.h>
#include <linux/vfs.h>
#include <linux/inet.h>
#include <linux/nfs_xdr.h>
-#include <linux/vs
erver/xid
.h>
+#include <linux/vs
_tag
.h>
#include <asm/system.h>
#include <asm/uaccess.h>
#include <asm/system.h>
#include <asm/uaccess.h>
@@
-71,7
+71,7
@@
static struct file_system_type nfs_fs_type = {
.name = "nfs",
.get_sb = nfs_get_sb,
.kill_sb = nfs_kill_super,
.name = "nfs",
.get_sb = nfs_get_sb,
.kill_sb = nfs_kill_super,
- .fs_flags = FS_
ODD_RENAM
E|FS_REVAL_DOT|FS_BINARY_MOUNTDATA,
+ .fs_flags = FS_
RENAME_DOES_D_MOV
E|FS_REVAL_DOT|FS_BINARY_MOUNTDATA,
};
struct file_system_type nfs_xdev_fs_type = {
};
struct file_system_type nfs_xdev_fs_type = {
@@
-79,7
+79,7
@@
struct file_system_type nfs_xdev_fs_type = {
.name = "nfs",
.get_sb = nfs_xdev_get_sb,
.kill_sb = nfs_kill_super,
.name = "nfs",
.get_sb = nfs_xdev_get_sb,
.kill_sb = nfs_kill_super,
- .fs_flags = FS_
ODD_RENAM
E|FS_REVAL_DOT|FS_BINARY_MOUNTDATA,
+ .fs_flags = FS_
RENAME_DOES_D_MOV
E|FS_REVAL_DOT|FS_BINARY_MOUNTDATA,
};
static struct super_operations nfs_sops = {
};
static struct super_operations nfs_sops = {
@@
-107,7
+107,7
@@
static struct file_system_type nfs4_fs_type = {
.name = "nfs4",
.get_sb = nfs4_get_sb,
.kill_sb = nfs4_kill_super,
.name = "nfs4",
.get_sb = nfs4_get_sb,
.kill_sb = nfs4_kill_super,
- .fs_flags = FS_
ODD_RENAM
E|FS_REVAL_DOT|FS_BINARY_MOUNTDATA,
+ .fs_flags = FS_
RENAME_DOES_D_MOV
E|FS_REVAL_DOT|FS_BINARY_MOUNTDATA,
};
struct file_system_type nfs4_xdev_fs_type = {
};
struct file_system_type nfs4_xdev_fs_type = {
@@
-115,7
+115,7
@@
struct file_system_type nfs4_xdev_fs_type = {
.name = "nfs4",
.get_sb = nfs4_xdev_get_sb,
.kill_sb = nfs4_kill_super,
.name = "nfs4",
.get_sb = nfs4_xdev_get_sb,
.kill_sb = nfs4_kill_super,
- .fs_flags = FS_
ODD_RENAM
E|FS_REVAL_DOT|FS_BINARY_MOUNTDATA,
+ .fs_flags = FS_
RENAME_DOES_D_MOV
E|FS_REVAL_DOT|FS_BINARY_MOUNTDATA,
};
struct file_system_type nfs4_referral_fs_type = {
};
struct file_system_type nfs4_referral_fs_type = {
@@
-123,7
+123,7
@@
struct file_system_type nfs4_referral_fs_type = {
.name = "nfs4",
.get_sb = nfs4_referral_get_sb,
.kill_sb = nfs4_kill_super,
.name = "nfs4",
.get_sb = nfs4_referral_get_sb,
.kill_sb = nfs4_kill_super,
- .fs_flags = FS_
ODD_RENAM
E|FS_REVAL_DOT|FS_BINARY_MOUNTDATA,
+ .fs_flags = FS_
RENAME_DOES_D_MOV
E|FS_REVAL_DOT|FS_BINARY_MOUNTDATA,
};
static struct super_operations nfs4_sops = {
};
static struct super_operations nfs4_sops = {
@@
-138,6
+138,8
@@
static struct super_operations nfs4_sops = {
};
#endif
};
#endif
+static struct shrinker *acl_shrinker;
+
/*
* Register the NFS filesystems
*/
/*
* Register the NFS filesystems
*/
@@
-157,6
+159,7
@@
int __init register_nfs_fs(void)
if (ret < 0)
goto error_2;
#endif
if (ret < 0)
goto error_2;
#endif
+ acl_shrinker = set_shrinker(DEFAULT_SEEKS, nfs_access_cache_shrinker);
return 0;
#ifdef CONFIG_NFS_V4
return 0;
#ifdef CONFIG_NFS_V4
@@
-174,6
+177,8
@@
error_0:
*/
void __exit unregister_nfs_fs(void)
{
*/
void __exit unregister_nfs_fs(void)
{
+ if (acl_shrinker != NULL)
+ remove_shrinker(acl_shrinker);
#ifdef CONFIG_NFS_V4
unregister_filesystem(&nfs4_fs_type);
nfs_unregister_sysctl();
#ifdef CONFIG_NFS_V4
unregister_filesystem(&nfs4_fs_type);
nfs_unregister_sysctl();
@@
-286,8
+291,7
@@
static void nfs_show_mount_options(struct seq_file *m, struct nfs_server *nfss,
{ NFS_MOUNT_NOAC, ",noac", "" },
{ NFS_MOUNT_NONLM, ",nolock", "" },
{ NFS_MOUNT_NOACL, ",noacl", "" },
{ NFS_MOUNT_NOAC, ",noac", "" },
{ NFS_MOUNT_NONLM, ",nolock", "" },
{ NFS_MOUNT_NOACL, ",noacl", "" },
- { NFS_MOUNT_FSCACHE, ",fsc", "" },
- { NFS_MOUNT_TAGXID, ",tagxid", ""},
+ { NFS_MOUNT_TAGGED, ",tag", "" },
{ 0, NULL, NULL }
};
const struct proc_nfs_info *nfs_infop;
{ 0, NULL, NULL }
};
const struct proc_nfs_info *nfs_infop;
@@
-468,12
+472,14
@@
static int nfs_validate_mount_data(struct nfs_mount_data *data,
data->version);
return -EINVAL;
}
data->version);
return -EINVAL;
}
- /* Fill in pseudoflavor for mount version < 5 */
- data->pseudoflavor = RPC_AUTH_UNIX;
case 5:
memset(data->context, 0, sizeof(data->context));
}
case 5:
memset(data->context, 0, sizeof(data->context));
}
+ /* Set the pseudoflavor */
+ if (!(data->flags & NFS_MOUNT_SECFLAVOUR))
+ data->pseudoflavor = RPC_AUTH_UNIX;
+
#ifndef CONFIG_NFS_V3
/* If NFSv3 is not compiled in, return -EPROTONOSUPPORT */
if (data->flags & NFS_MOUNT_VER3) {
#ifndef CONFIG_NFS_V3
/* If NFSv3 is not compiled in, return -EPROTONOSUPPORT */
if (data->flags & NFS_MOUNT_VER3) {
@@
-528,9
+534,6
@@
static inline void nfs_initialise_sb(struct super_block *sb)
if (server->flags & NFS_MOUNT_NOAC)
sb->s_flags |= MS_SYNCHRONOUS;
if (server->flags & NFS_MOUNT_NOAC)
sb->s_flags |= MS_SYNCHRONOUS;
- if (server->flags & NFS_MOUNT_TAGXID)
- sb->s_flags |= MS_TAGXID;
-
nfs_super_set_maxbytes(sb, server->maxfilesize);
}
nfs_super_set_maxbytes(sb, server->maxfilesize);
}
@@
-831,6
+834,9
@@
static int nfs4_get_sb(struct file_system_type *fs_type,
__FUNCTION__);
return -EINVAL;
}
__FUNCTION__);
return -EINVAL;
}
+ /* RFC3530: The default port for NFS is 2049 */
+ if (addr.sin_port == 0)
+ addr.sin_port = htons(NFS_PORT);
/* Grab the authentication type */
authflavour = RPC_AUTH_UNIX;
/* Grab the authentication type */
authflavour = RPC_AUTH_UNIX;