Merge branch 'for-2.6.30' of git://linux-nfs.org/~bfields/linux
* 'for-2.6.30' of git://linux-nfs.org/~bfields/linux: (81 commits) nfsd41: define nfsd4_set_statp as noop for !CONFIG_NFSD_V4 nfsd41: define NFSD_DRC_SIZE_SHIFT in set_max_drc nfsd41: Documentation/filesystems/nfs41-server.txt nfsd41: CREATE_EXCLUSIVE4_1 nfsd41: SUPPATTR_EXCLCREAT attribute nfsd41: support for 3-word long attribute bitmask nfsd: dynamically skip encoded fattr bitmap in _nfsd4_verify nfsd41: pass writable attrs mask to nfsd4_decode_fattr nfsd41: provide support for minor version 1 at rpc level nfsd41: control nfsv4.1 svc via /proc/fs/nfsd/versions nfsd41: add OPEN4_SHARE_ACCESS_WANT nfs4_stateid bmap nfsd41: access_valid nfsd41: clientid handling nfsd41: check encode size for sessions maxresponse cached nfsd41: stateid handling nfsd: pass nfsd4_compound_state* to nfs4_preprocess_{state,seq}id_op nfsd41: destroy_session operation nfsd41: non-page DRC for solo sequence responses nfsd41: Add a create session replay cache nfsd41: create_session operation ...
This commit is contained in:
@@ -60,6 +60,7 @@ enum {
|
||||
NFSD_FO_UnlockFS,
|
||||
NFSD_Threads,
|
||||
NFSD_Pool_Threads,
|
||||
NFSD_Pool_Stats,
|
||||
NFSD_Versions,
|
||||
NFSD_Ports,
|
||||
NFSD_MaxBlkSize,
|
||||
@@ -172,6 +173,16 @@ static const struct file_operations exports_operations = {
|
||||
.owner = THIS_MODULE,
|
||||
};
|
||||
|
||||
extern int nfsd_pool_stats_open(struct inode *inode, struct file *file);
|
||||
|
||||
static struct file_operations pool_stats_operations = {
|
||||
.open = nfsd_pool_stats_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
.owner = THIS_MODULE,
|
||||
};
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/*
|
||||
* payload - write methods
|
||||
@@ -781,8 +792,9 @@ out_free:
|
||||
static ssize_t __write_versions(struct file *file, char *buf, size_t size)
|
||||
{
|
||||
char *mesg = buf;
|
||||
char *vers, sign;
|
||||
char *vers, *minorp, sign;
|
||||
int len, num;
|
||||
unsigned minor;
|
||||
ssize_t tlen = 0;
|
||||
char *sep;
|
||||
|
||||
@@ -803,9 +815,20 @@ static ssize_t __write_versions(struct file *file, char *buf, size_t size)
|
||||
do {
|
||||
sign = *vers;
|
||||
if (sign == '+' || sign == '-')
|
||||
num = simple_strtol((vers+1), NULL, 0);
|
||||
num = simple_strtol((vers+1), &minorp, 0);
|
||||
else
|
||||
num = simple_strtol(vers, NULL, 0);
|
||||
num = simple_strtol(vers, &minorp, 0);
|
||||
if (*minorp == '.') {
|
||||
if (num < 4)
|
||||
return -EINVAL;
|
||||
minor = simple_strtoul(minorp+1, NULL, 0);
|
||||
if (minor == 0)
|
||||
return -EINVAL;
|
||||
if (nfsd_minorversion(minor, sign == '-' ?
|
||||
NFSD_CLEAR : NFSD_SET) < 0)
|
||||
return -EINVAL;
|
||||
goto next;
|
||||
}
|
||||
switch(num) {
|
||||
case 2:
|
||||
case 3:
|
||||
@@ -815,6 +838,7 @@ static ssize_t __write_versions(struct file *file, char *buf, size_t size)
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
next:
|
||||
vers += len + 1;
|
||||
tlen += len;
|
||||
} while ((len = qword_get(&mesg, vers, size)) > 0);
|
||||
@@ -833,6 +857,13 @@ static ssize_t __write_versions(struct file *file, char *buf, size_t size)
|
||||
num);
|
||||
sep = " ";
|
||||
}
|
||||
if (nfsd_vers(4, NFSD_AVAIL))
|
||||
for (minor = 1; minor <= NFSD_SUPPORTED_MINOR_VERSION; minor++)
|
||||
len += sprintf(buf+len, " %c4.%u",
|
||||
(nfsd_vers(4, NFSD_TEST) &&
|
||||
nfsd_minorversion(minor, NFSD_TEST)) ?
|
||||
'+' : '-',
|
||||
minor);
|
||||
len += sprintf(buf+len, "\n");
|
||||
return len;
|
||||
}
|
||||
@@ -1248,6 +1279,7 @@ static int nfsd_fill_super(struct super_block * sb, void * data, int silent)
|
||||
[NFSD_Fh] = {"filehandle", &transaction_ops, S_IWUSR|S_IRUSR},
|
||||
[NFSD_Threads] = {"threads", &transaction_ops, S_IWUSR|S_IRUSR},
|
||||
[NFSD_Pool_Threads] = {"pool_threads", &transaction_ops, S_IWUSR|S_IRUSR},
|
||||
[NFSD_Pool_Stats] = {"pool_stats", &pool_stats_operations, S_IRUGO},
|
||||
[NFSD_Versions] = {"versions", &transaction_ops, S_IWUSR|S_IRUSR},
|
||||
[NFSD_Ports] = {"portlist", &transaction_ops, S_IWUSR|S_IRUGO},
|
||||
[NFSD_MaxBlkSize] = {"max_block_size", &transaction_ops, S_IWUSR|S_IRUGO},
|
||||
|
Reference in New Issue
Block a user