proc: introduce proc_create_net{,_data}
Variants of proc_create{,_data} that directly take a struct seq_operations and deal with network namespaces in ->open and ->release. All callers of proc_create + seq_open_net converted over, and seq_{open,release}_net are removed entirely. Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
@@ -1067,7 +1067,6 @@ void nfs_clients_init(struct net *net)
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PROC_FS
|
||||
static int nfs_server_list_open(struct inode *inode, struct file *file);
|
||||
static void *nfs_server_list_start(struct seq_file *p, loff_t *pos);
|
||||
static void *nfs_server_list_next(struct seq_file *p, void *v, loff_t *pos);
|
||||
static void nfs_server_list_stop(struct seq_file *p, void *v);
|
||||
@@ -1080,14 +1079,6 @@ static const struct seq_operations nfs_server_list_ops = {
|
||||
.show = nfs_server_list_show,
|
||||
};
|
||||
|
||||
static const struct file_operations nfs_server_list_fops = {
|
||||
.open = nfs_server_list_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release_net,
|
||||
};
|
||||
|
||||
static int nfs_volume_list_open(struct inode *inode, struct file *file);
|
||||
static void *nfs_volume_list_start(struct seq_file *p, loff_t *pos);
|
||||
static void *nfs_volume_list_next(struct seq_file *p, void *v, loff_t *pos);
|
||||
static void nfs_volume_list_stop(struct seq_file *p, void *v);
|
||||
@@ -1100,23 +1091,6 @@ static const struct seq_operations nfs_volume_list_ops = {
|
||||
.show = nfs_volume_list_show,
|
||||
};
|
||||
|
||||
static const struct file_operations nfs_volume_list_fops = {
|
||||
.open = nfs_volume_list_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release_net,
|
||||
};
|
||||
|
||||
/*
|
||||
* open "/proc/fs/nfsfs/servers" which provides a summary of servers with which
|
||||
* we're dealing
|
||||
*/
|
||||
static int nfs_server_list_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return seq_open_net(inode, file, &nfs_server_list_ops,
|
||||
sizeof(struct seq_net_private));
|
||||
}
|
||||
|
||||
/*
|
||||
* set up the iterator to start reading from the server list and return the first item
|
||||
*/
|
||||
@@ -1184,15 +1158,6 @@ static int nfs_server_list_show(struct seq_file *m, void *v)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* open "/proc/fs/nfsfs/volumes" which provides a summary of extant volumes
|
||||
*/
|
||||
static int nfs_volume_list_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return seq_open_net(inode, file, &nfs_volume_list_ops,
|
||||
sizeof(struct seq_net_private));
|
||||
}
|
||||
|
||||
/*
|
||||
* set up the iterator to start reading from the volume list and return the first item
|
||||
*/
|
||||
@@ -1278,14 +1243,14 @@ int nfs_fs_proc_net_init(struct net *net)
|
||||
goto error_0;
|
||||
|
||||
/* a file of servers with which we're dealing */
|
||||
p = proc_create("servers", S_IFREG|S_IRUGO,
|
||||
nn->proc_nfsfs, &nfs_server_list_fops);
|
||||
p = proc_create_net("servers", S_IFREG|S_IRUGO, nn->proc_nfsfs,
|
||||
&nfs_server_list_ops, sizeof(struct seq_net_private));
|
||||
if (!p)
|
||||
goto error_1;
|
||||
|
||||
/* a file of volumes that we have mounted */
|
||||
p = proc_create("volumes", S_IFREG|S_IRUGO,
|
||||
nn->proc_nfsfs, &nfs_volume_list_fops);
|
||||
p = proc_create_net("volumes", S_IFREG|S_IRUGO, nn->proc_nfsfs,
|
||||
&nfs_volume_list_ops, sizeof(struct seq_net_private));
|
||||
if (!p)
|
||||
goto error_1;
|
||||
return 0;
|
||||
|
Reference in New Issue
Block a user