Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
filesystems
lustre_2_12
0023-LU-13344-libcfs-Abstract-proc_fs-with-proc...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0023-LU-13344-libcfs-Abstract-proc_fs-with-proc_ops.patch of Package lustre_2_12
From 4a74dbf4a04f4df9f366a3b6ba6e254a2065982f Mon Sep 17 00:00:00 2001 From: Shaun Tancheff <shaun.tancheff@hpe.com> Date: Thu, 15 Apr 2021 08:07:50 -0400 Subject: [PATCH 23/35] LU-13344 libcfs: Abstract proc_fs with proc_ops Linux 5.6 introduces proc_ops with v5.5-8862-gd56c0d45f0e2 proc: decouple proc from VFS with "struct proc_ops" Map proc_ops and it's members to file_operations and the appropriate members for older kernels. One remaining 'PROC_OWNER()' macro is left to deal with proc_ops being unable to sensibly map the owner member. Test-Parameters: trivial HPE-bug-id: LUS-8589 Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com> Change-Id: I3d8940a91b331c4f6bb31a9432194cc082c9cecd Reviewed-on: https://review.whamcloud.com/37873 Tested-by: jenkins <devops@whamcloud.com> Tested-by: Maloo <maloo@whamcloud.com> Reviewed-by: James Simmons <jsimmons@infradead.org> Reviewed-by: Jian Yu <yujian@whamcloud.com> Reviewed-by: Oleg Drokin <green@whamcloud.com> --- .gitignore | 1 + libcfs/autoconf/lustre-libcfs.m4 | 24 +++++++++++ libcfs/include/libcfs/linux/linux-fs.h | 17 ++++++++ lustre/include/lprocfs_status.h | 34 ++++++++------- lustre/lmv/lproc_lmv.c | 12 +++--- lustre/lod/lod_pool.c | 3 +- lustre/lod/lproc_lod.c | 12 +++--- lustre/lov/lov_pool.c | 11 ++--- lustre/lov/lproc_lov.c | 12 +++--- lustre/mdt/mdt_fs.c | 14 ++++--- lustre/mgs/lproc_mgs.c | 4 +- lustre/obdclass/genops.c | 4 +- lustre/obdclass/lprocfs_jobstats.c | 14 +++---- lustre/obdclass/lprocfs_status.c | 57 ++++++++++++++------------ lustre/ptlrpc/gss/lproc_gss.c | 12 +++--- lustre/ptlrpc/nodemap_lproc.c | 6 +-- lustre/ptlrpc/sec_lproc.c | 8 ++-- lustre/quota/lproc_quota.c | 12 +++--- lustre/quota/lquota_internal.h | 2 +- 19 files changed, 154 insertions(+), 105 deletions(-) diff --git a/.gitignore b/.gitignore index b33e8fd9c429..4625811fd276 100644 --- a/.gitignore +++ b/.gitignore @@ -43,6 +43,7 @@ *.so *.swp *.unsigned +_lpb 00[0-9][0-9]-*.patch autoMakefile autoMakefile.in diff --git a/libcfs/autoconf/lustre-libcfs.m4 b/libcfs/autoconf/lustre-libcfs.m4 index a7eae74218ef..7d380635278f 100644 --- a/libcfs/autoconf/lustre-libcfs.m4 +++ b/libcfs/autoconf/lustre-libcfs.m4 @@ -1255,6 +1255,29 @@ cache_detail_writers_atomic, [ EXTRA_KCFLAGS="$tmp_flags" ]) # LIBCFS_CACHE_DETAIL_WRITERS +# +# LIBCFS_HAVE_PROC_OPS +# +# v5.5-8862-gd56c0d45f0e2 +# proc: decouple proc from VFS with "struct proc_ops" +# +AC_DEFUN([LIBCFS_HAVE_PROC_OPS], [ +tmp_flags="$EXTRA_KCFLAGS" +EXTRA_KCFLAGS="-Werror" +LB_CHECK_COMPILE([if struct proc_ops exists], +proc_ops_exists, [ + #include <linux/proc_fs.h> + + static struct proc_ops *my_proc; +],[ + my_proc->proc_lseek = NULL; +],[ + AC_DEFINE(HAVE_PROC_OPS, 1, + [struct proc_ops exists]) +]) +EXTRA_KCFLAGS="$tmp_flags" +]) # LIBCFS_HAVE_PROC_OPS + # # LIBCFS_VMALLOC_2ARGS # @@ -1466,6 +1489,7 @@ LIBCFS_GET_REQUEST_KEY_AUTH LIBCFS_LOOKUP_USER_KEY LIBCFS_CACHE_DETAIL_WRITERS LIBCFS_HAVE_NR_UNSTABLE_NFS +LIBCFS_HAVE_PROC_OPS # 5.8 LIBCFS_HAVE_MMAP_LOCK LIBCFS_KERNEL_SETSOCKOPT diff --git a/libcfs/include/libcfs/linux/linux-fs.h b/libcfs/include/libcfs/linux/linux-fs.h index ce360111d0a9..d289357d9af4 100644 --- a/libcfs/include/libcfs/linux/linux-fs.h +++ b/libcfs/include/libcfs/linux/linux-fs.h @@ -86,4 +86,21 @@ static inline struct dentry *file_dentry(const struct file *file) #ifndef HAVE_POSIX_ACL_VALID_USER_NS #define posix_acl_valid(a,b) posix_acl_valid(b) #endif +#ifdef HAVE_PROC_OPS +#define PROC_OWNER(_fn) +#else +#define proc_ops file_operations +#define PROC_OWNER(_owner) .owner = (_owner), +#define proc_open open +#define proc_read read +#define proc_write write +#define proc_lseek llseek +#define proc_release release +#define proc_poll poll +#define proc_ioctl unlocked_ioctl +#define proc_compat_ioctl compat_ioctl +#define proc_mmap mmap +#define proc_get_unmapped_area get_unmapped_area +#endif + #endif diff --git a/lustre/include/lprocfs_status.h b/lustre/include/lprocfs_status.h index f60bb9df11a5..3352cdbf23db 100644 --- a/lustre/include/lprocfs_status.h +++ b/lustre/include/lprocfs_status.h @@ -46,6 +46,7 @@ #include <linux/seq_file.h> #include <libcfs/libcfs.h> +#include <libcfs/linux/linux-fs.h> #include <uapi/linux/lustre/lustre_idl.h> /* @@ -55,7 +56,7 @@ */ struct lprocfs_vars { const char *name; - const struct file_operations *fops; + const struct proc_ops *fops; void *data; /** /proc file mode. */ mode_t proc_mode; @@ -515,7 +516,7 @@ struct dentry *ldebugfs_add_simple(struct dentry *root, char *name, void *data, const struct file_operations *fops); extern struct proc_dir_entry * lprocfs_add_simple(struct proc_dir_entry *root, char *name, - void *data, const struct file_operations *fops); + void *data, const struct proc_ops *ops); extern struct proc_dir_entry * lprocfs_add_symlink(const char *name, struct proc_dir_entry *parent, const char *format, ...); @@ -530,7 +531,6 @@ extern int ldebugfs_register_stats(struct dentry *parent, const char *name, struct lprocfs_stats *stats); extern int lprocfs_register_stats(struct proc_dir_entry *root, const char *name, struct lprocfs_stats *stats); -extern const struct file_operations ldebugfs_stats_seq_fops; /* lprocfs_status.c */ extern int ldebugfs_add_vars(struct dentry *parent, struct ldebugfs_vars *var, @@ -582,12 +582,10 @@ extern const struct file_operations lprocfs_evict_client_fops; int ldebugfs_seq_create(struct dentry *parent, const char *name, umode_t mode, const struct file_operations *seq_fops, void *data); extern int lprocfs_seq_create(struct proc_dir_entry *parent, const char *name, - mode_t mode, - const struct file_operations *seq_fops, + mode_t mode, const struct proc_ops *seq_fops, void *data); extern int lprocfs_obd_seq_create(struct obd_device *dev, const char *name, - mode_t mode, - const struct file_operations *seq_fops, + mode_t mode, const struct proc_ops *seq_fops, void *data); /* Generic callbacks */ @@ -765,13 +763,13 @@ static int name##_single_open(struct inode *inode, struct file *file) \ inode->i_private ? inode->i_private : \ PDE_DATA(inode)); \ } \ -static const struct file_operations name##_fops = { \ - .owner = THIS_MODULE, \ - .open = name##_single_open, \ - .read = seq_read, \ - .write = custom_seq_write, \ - .llseek = seq_lseek, \ - .release = lprocfs_single_release, \ +static const struct proc_ops name##_fops = { \ + PROC_OWNER(THIS_MODULE) \ + .proc_open = name##_single_open, \ + .proc_read = seq_read, \ + .proc_write = custom_seq_write, \ + .proc_lseek = seq_lseek, \ + .proc_release = lprocfs_single_release, \ } #define LPROC_SEQ_FOPS_RO(name) __LPROC_SEQ_FOPS(name, NULL) @@ -812,10 +810,10 @@ static const struct file_operations name##_fops = { \ inode->i_private ? inode->i_private : \ PDE_DATA(inode)); \ } \ - static const struct file_operations name##_##type##_fops = { \ - .open = name##_##type##_open, \ - .write = name##_##type##_write, \ - .release = lprocfs_single_release, \ + static const struct proc_ops name##_##type##_fops = { \ + .proc_open = name##_##type##_open, \ + .proc_write = name##_##type##_write, \ + .proc_release = lprocfs_single_release, \ }; struct lustre_attr { diff --git a/lustre/lmv/lproc_lmv.c b/lustre/lmv/lproc_lmv.c index 95fe927d839a..dc35e7d9d9e6 100644 --- a/lustre/lmv/lproc_lmv.c +++ b/lustre/lmv/lproc_lmv.c @@ -143,12 +143,12 @@ static int lmv_target_seq_open(struct inode *inode, struct file *file) return 0; } -static const struct file_operations lmv_proc_target_fops = { - .owner = THIS_MODULE, - .open = lmv_target_seq_open, - .read = seq_read, - .llseek = seq_lseek, - .release = seq_release, +static const struct proc_ops lmv_proc_target_fops = { + PROC_OWNER(THIS_MODULE) + .proc_open = lmv_target_seq_open, + .proc_read = seq_read, + .proc_lseek = seq_lseek, + .proc_release = seq_release, }; #endif /* CONFIG_PROC_FS */ diff --git a/lustre/lod/lod_pool.c b/lustre/lod/lod_pool.c index 032d094dc0ad..8b6466208382 100644 --- a/lustre/lod/lod_pool.c +++ b/lustre/lod/lod_pool.c @@ -58,6 +58,7 @@ #define DEBUG_SUBSYSTEM S_LOV #include <libcfs/libcfs.h> +#include <libcfs/linux/linux-fs.h> #include <obd.h> #include "lod_internal.h" @@ -407,7 +408,7 @@ static int pool_proc_open(struct inode *inode, struct file *file) return rc; } -static struct file_operations pool_proc_operations = { +static struct proc_ops pool_proc_operations = { .open = pool_proc_open, .read = seq_read, .llseek = seq_lseek, diff --git a/lustre/lod/lproc_lod.c b/lustre/lod/lproc_lod.c index 80c6d445d288..ea580a4c69ad 100644 --- a/lustre/lod/lproc_lod.c +++ b/lustre/lod/lproc_lod.c @@ -777,12 +777,12 @@ static struct lprocfs_vars lprocfs_lod_obd_vars[] = { { NULL } }; -static const struct file_operations lod_proc_target_fops = { - .owner = THIS_MODULE, - .open = lod_osts_seq_open, - .read = seq_read, - .llseek = seq_lseek, - .release = lprocfs_seq_release, +static struct proc_ops lod_proc_target_fops = { + PROC_OWNER(THIS_MODULE) + .proc_open = lod_osts_seq_open, + .proc_read = seq_read, + .proc_lseek = seq_lseek, + .proc_release = lprocfs_seq_release, }; static struct attribute *lod_attrs[] = { diff --git a/lustre/lov/lov_pool.c b/lustre/lov/lov_pool.c index 466c394ab805..269a7955c7d1 100644 --- a/lustre/lov/lov_pool.c +++ b/lustre/lov/lov_pool.c @@ -41,6 +41,7 @@ #define DEBUG_SUBSYSTEM S_LOV #include <libcfs/libcfs.h> +#include <libcfs/linux/linux-fs.h> #include <obd.h> #include "lov_internal.h" @@ -282,11 +283,11 @@ static int pool_proc_open(struct inode *inode, struct file *file) return rc; } -static struct file_operations pool_proc_operations = { - .open = pool_proc_open, - .read = seq_read, - .llseek = seq_lseek, - .release = seq_release, +const static struct proc_ops pool_proc_operations = { + .proc_open = pool_proc_open, + .proc_read = seq_read, + .proc_lseek = seq_lseek, + .proc_release = seq_release, }; #endif /* CONFIG_PROC_FS */ diff --git a/lustre/lov/lproc_lov.c b/lustre/lov/lproc_lov.c index fca6a8c6feec..8865b8ac179a 100644 --- a/lustre/lov/lproc_lov.c +++ b/lustre/lov/lproc_lov.c @@ -269,12 +269,12 @@ struct lprocfs_vars lprocfs_lov_obd_vars[] = { { NULL } }; -const struct file_operations lov_proc_target_fops = { - .owner = THIS_MODULE, - .open = lov_target_seq_open, - .read = seq_read, - .llseek = seq_lseek, - .release = lprocfs_seq_release, +const struct proc_ops lov_proc_target_fops = { + PROC_OWNER(THIS_MODULE) + .proc_open = lov_target_seq_open, + .proc_read = seq_read, + .proc_lseek = seq_lseek, + .proc_release = lprocfs_seq_release, }; #endif /* CONFIG_PROC_FS */ diff --git a/lustre/mdt/mdt_fs.c b/lustre/mdt/mdt_fs.c index 862d19ad202a..87645dec9130 100644 --- a/lustre/mdt/mdt_fs.c +++ b/lustre/mdt/mdt_fs.c @@ -36,14 +36,16 @@ #define DEBUG_SUBSYSTEM S_MDS +#include <linux/fs.h> +#include <libcfs/linux/linux-fs.h> #include "mdt_internal.h" -static const struct file_operations mdt_open_files_seq_fops = { - .owner = THIS_MODULE, - .open = lprocfs_mdt_open_files_seq_open, - .read = seq_read, - .llseek = seq_lseek, - .release = seq_release, +static const struct proc_ops mdt_open_files_seq_fops = { + PROC_OWNER(THIS_MODULE) + .proc_open = lprocfs_mdt_open_files_seq_open, + .proc_read = seq_read, + .proc_lseek = seq_lseek, + .proc_release = seq_release, }; /** diff --git a/lustre/mgs/lproc_mgs.c b/lustre/mgs/lproc_mgs.c index 4a95b02ea601..f140d15111af 100644 --- a/lustre/mgs/lproc_mgs.c +++ b/lustre/mgs/lproc_mgs.c @@ -78,7 +78,7 @@ out: RETURN(0); } -LPROC_SEQ_FOPS_RO(mgs_fs); +LDEBUGFS_SEQ_FOPS_RO(mgs_fs); static void seq_show_srpc_rules(struct seq_file *seq, const char *tgtname, struct sptlrpc_rule_set *rset) @@ -124,7 +124,7 @@ static int mgsself_srpc_seq_show(struct seq_file *seq, void *v) return 0; } -LPROC_SEQ_FOPS_RO(mgsself_srpc); +LDEBUGFS_SEQ_FOPS_RO(mgsself_srpc); static int mgs_live_seq_show(struct seq_file *seq, void *v) { diff --git a/lustre/obdclass/genops.c b/lustre/obdclass/genops.c index 320e9dfb9f1d..e3967415ac2e 100644 --- a/lustre/obdclass/genops.c +++ b/lustre/obdclass/genops.c @@ -239,7 +239,7 @@ int class_register_type(struct obd_ops *dt_ops, struct md_ops *md_ops, if (enable_proc) { type->typ_procroot = lprocfs_register(type->typ_name, proc_lustre_root, - vars, type); + NULL, type); if (IS_ERR(type->typ_procroot)) { rc = PTR_ERR(type->typ_procroot); type->typ_procroot = NULL; @@ -262,7 +262,7 @@ int class_register_type(struct obd_ops *dt_ops, struct md_ops *md_ops, type->typ_debugfs_entry = ldebugfs_register(type->typ_name, debugfs_lustre_root, - NULL, type); + vars, type); if (IS_ERR_OR_NULL(type->typ_debugfs_entry)) { rc = type->typ_debugfs_entry ? PTR_ERR(type->typ_debugfs_entry) : -ENOMEM; diff --git a/lustre/obdclass/lprocfs_jobstats.c b/lustre/obdclass/lprocfs_jobstats.c index d6d599f55c80..208d6bcde2b4 100644 --- a/lustre/obdclass/lprocfs_jobstats.c +++ b/lustre/obdclass/lprocfs_jobstats.c @@ -562,13 +562,13 @@ static int lprocfs_jobstats_seq_release(struct inode *inode, struct file *file) return lprocfs_seq_release(inode, file); } -static const struct file_operations lprocfs_jobstats_seq_fops = { - .owner = THIS_MODULE, - .open = lprocfs_jobstats_seq_open, - .read = seq_read, - .write = lprocfs_jobstats_seq_write, - .llseek = seq_lseek, - .release = lprocfs_jobstats_seq_release, +static const struct proc_ops lprocfs_jobstats_seq_fops = { + PROC_OWNER(THIS_MODULE) + .proc_open = lprocfs_jobstats_seq_open, + .proc_read = seq_read, + .proc_write = lprocfs_jobstats_seq_write, + .proc_lseek = seq_lseek, + .proc_release = lprocfs_jobstats_seq_release, }; int lprocfs_job_stats_init(struct obd_device *obd, int cntr_num, diff --git a/lustre/obdclass/lprocfs_status.c b/lustre/obdclass/lprocfs_status.c index 55546f83f7aa..5f1b2799b2f5 100644 --- a/lustre/obdclass/lprocfs_status.c +++ b/lustre/obdclass/lprocfs_status.c @@ -82,20 +82,29 @@ struct dentry *ldebugfs_add_simple(struct dentry *root, } EXPORT_SYMBOL(ldebugfs_add_simple); +static umode_t default_mode(const struct proc_ops *ops) +{ + umode_t mode = 0; + + if (ops->proc_read) + mode = 0444; + if (ops->proc_write) + mode |= 0200; + + return mode; +} + struct proc_dir_entry * lprocfs_add_simple(struct proc_dir_entry *root, char *name, - void *data, const struct file_operations *fops) + void *data, const struct proc_ops *fops) { struct proc_dir_entry *proc; - mode_t mode = 0; + umode_t mode; if (!root || !name || !fops) return ERR_PTR(-EINVAL); - if (fops->read) - mode = 0444; - if (fops->write) - mode |= 0200; + mode = default_mode(fops); proc = proc_create_data(name, mode, root, fops, data); if (!proc) { CERROR("LprocFS: No memory to create /proc entry %s\n", @@ -166,7 +175,7 @@ int ldebugfs_add_vars(struct dentry *parent, struct ldebugfs_vars *list, } EXPORT_SYMBOL_GPL(ldebugfs_add_vars); -static const struct file_operations lprocfs_empty_ops = { }; +static const struct proc_ops lprocfs_empty_ops = { }; /** * Add /proc entries. @@ -188,16 +197,12 @@ lprocfs_add_vars(struct proc_dir_entry *root, struct lprocfs_vars *list, while (list->name) { struct proc_dir_entry *proc; - mode_t mode = 0; + umode_t mode = 0; - if (list->proc_mode != 0000) { + if (list->proc_mode) mode = list->proc_mode; - } else if (list->fops) { - if (list->fops->read) - mode = 0444; - if (list->fops->write) - mode |= 0200; - } + else if (list->fops) + mode = default_mode(list->fops); proc = proc_create_data(list->name, mode, root, list->fops ?: &lprocfs_empty_ops, list->data ?: data); @@ -1589,7 +1594,7 @@ int ldebugfs_register_stats(struct dentry *parent, const char *name, LASSERT(!IS_ERR_OR_NULL(parent)); entry = debugfs_create_file(name, 0644, parent, stats, - &lprocfs_stats_seq_fops); + &ldebugfs_stats_seq_fops); if (IS_ERR_OR_NULL(entry)) return entry ? PTR_ERR(entry) : -ENOMEM; @@ -1597,13 +1602,13 @@ int ldebugfs_register_stats(struct dentry *parent, const char *name, } EXPORT_SYMBOL_GPL(ldebugfs_register_stats); -static const struct file_operations lprocfs_stats_seq_fops = { - .owner = THIS_MODULE, - .open = lprocfs_stats_seq_open, - .read = seq_read, - .write = lprocfs_stats_seq_write, - .llseek = seq_lseek, - .release = lprocfs_seq_release, +static const struct proc_ops lprocfs_stats_seq_fops = { + PROC_OWNER(THIS_MODULE) + .proc_open = lprocfs_stats_seq_open, + .proc_read = seq_read, + .proc_write = lprocfs_stats_seq_write, + .proc_lseek = seq_lseek, + .proc_release = lprocfs_seq_release, }; int lprocfs_register_stats(struct proc_dir_entry *root, const char *name, @@ -2149,14 +2154,14 @@ EXPORT_SYMBOL_GPL(ldebugfs_seq_create); int lprocfs_seq_create(struct proc_dir_entry *parent, const char *name, mode_t mode, - const struct file_operations *seq_fops, + const struct proc_ops *seq_fops, void *data) { struct proc_dir_entry *entry; ENTRY; /* Disallow secretly (un)writable entries. */ - LASSERT((seq_fops->write == NULL) == ((mode & 0222) == 0)); + LASSERT((seq_fops->proc_write == NULL) == ((mode & 0222) == 0)); entry = proc_create_data(name, mode, parent, seq_fops, data); @@ -2170,7 +2175,7 @@ EXPORT_SYMBOL(lprocfs_seq_create); int lprocfs_obd_seq_create(struct obd_device *dev, const char *name, mode_t mode, - const struct file_operations *seq_fops, + const struct proc_ops *seq_fops, void *data) { return (lprocfs_seq_create(dev->obd_proc_entry, name, diff --git a/lustre/ptlrpc/gss/lproc_gss.c b/lustre/ptlrpc/gss/lproc_gss.c index aa8851e6745a..4ae0e35ae76e 100644 --- a/lustre/ptlrpc/gss/lproc_gss.c +++ b/lustre/ptlrpc/gss/lproc_gss.c @@ -128,8 +128,8 @@ gss_proc_write_secinit(struct file *file, const char *buffer, return count; } -static const struct file_operations gss_proc_secinit = { - .write = gss_proc_write_secinit, +static const struct proc_ops gss_proc_secinit = { + .proc_write = gss_proc_write_secinit, }; int sptlrpc_krb5_allow_old_client_csum_seq_show(struct seq_file *m, void *data) @@ -152,9 +152,9 @@ ssize_t sptlrpc_krb5_allow_old_client_csum_seq_write(struct file *file, krb5_allow_old_client_csum = val; return count; } -LDEBUFS_SEQ_FOPS(sptlrpc_krb5_allow_old_client_csum); +LPROC_SEQ_FOPS(sptlrpc_krb5_allow_old_client_csum); -static struct ldebugfs_vars gss_lprocfs_vars[] = { +static struct lprocfs_vars gss_lprocfs_vars[] = { { .name = "replays", .fops = &gss_proc_oos_fops }, { .name = "init_channel", @@ -196,9 +196,9 @@ gss_lk_proc_dl_seq_write(struct file *file, const char __user *buffer, return count; } -LDEBUGFS_SEQ_FOPS(gss_lk_proc_dl); +LPROC_SEQ_FOPS(gss_lk_proc_dl); -static struct ldebugfs_vars gss_lk_lprocfs_vars[] = { +static struct lprocfs_vars gss_lk_lprocfs_vars[] = { { .name = "debug_level", .fops = &gss_lk_proc_dl_fops }, { NULL } diff --git a/lustre/ptlrpc/nodemap_lproc.c b/lustre/ptlrpc/nodemap_lproc.c index 87a49a2f79e3..0ec091515de2 100644 --- a/lustre/ptlrpc/nodemap_lproc.c +++ b/lustre/ptlrpc/nodemap_lproc.c @@ -1244,21 +1244,21 @@ LPROC_SEQ_FOPS_RO(nodemap_deny_unknown); LPROC_SEQ_FOPS_RO(nodemap_map_mode); LPROC_SEQ_FOPS_RO(nodemap_audit_mode); -const struct file_operations nodemap_ranges_fops = { +const struct proc_ops nodemap_ranges_fops = { .open = nodemap_ranges_open, .read = seq_read, .llseek = seq_lseek, .release = single_release }; -const struct file_operations nodemap_idmap_fops = { +const struct proc_ops nodemap_idmap_fops = { .open = nodemap_idmap_open, .read = seq_read, .llseek = seq_lseek, .release = single_release }; -const struct file_operations nodemap_exports_fops = { +const struct proc_ops nodemap_exports_fops = { .open = nodemap_exports_open, .read = seq_read, .llseek = seq_lseek, diff --git a/lustre/ptlrpc/sec_lproc.c b/lustre/ptlrpc/sec_lproc.c index 5e3c9084b5f2..4f8efe44aa67 100644 --- a/lustre/ptlrpc/sec_lproc.c +++ b/lustre/ptlrpc/sec_lproc.c @@ -141,7 +141,7 @@ out: LDEBUGFS_SEQ_FOPS_RO(sptlrpc_ctxs_lprocfs); static ssize_t -lprocfs_sptlrpc_sepol_seq_write(struct file *file, const char __user *buffer, +ldebugfs_sptlrpc_sepol_seq_write(struct file *file, const char __user *buffer, size_t count, void *data) { struct seq_file *seq = file->private_data; @@ -207,7 +207,7 @@ out: return rc ? rc : count; } -LDEBUGFS_SEQ_FOPS_WR_ONLY(srpc, sptlrpc_sepol); +LDEBUGFS_FOPS_WR_ONLY(srpc, sptlrpc_sepol); int sptlrpc_lprocfs_cliobd_attach(struct obd_device *dev) { @@ -251,8 +251,8 @@ int sptlrpc_lprocfs_cliobd_attach(struct obd_device *dev) } EXPORT_SYMBOL(sptlrpc_lprocfs_cliobd_attach); -LDEBUGFS_SEQ_FOPS_RO(sptlrpc_proc_enc_pool); -static struct ldebugfs_vars sptlrpc_lprocfs_vars[] = { +LPROC_SEQ_FOPS_RO(sptlrpc_proc_enc_pool); +static struct lprocfs_vars sptlrpc_lprocfs_vars[] = { { .name = "encrypt_page_pools", .fops = &sptlrpc_proc_enc_pool_fops }, { NULL } diff --git a/lustre/quota/lproc_quota.c b/lustre/quota/lproc_quota.c index a9a3b0b12630..678a8b6dc5ed 100644 --- a/lustre/quota/lproc_quota.c +++ b/lustre/quota/lproc_quota.c @@ -356,11 +356,11 @@ static int lprocfs_quota_seq_release(struct inode *inode, struct file *file) return seq_release(inode, file); } -struct file_operations lprocfs_quota_seq_fops = { - .owner = THIS_MODULE, - .open = lprocfs_quota_seq_open, - .read = seq_read, - .llseek = seq_lseek, - .release = lprocfs_quota_seq_release, +struct proc_ops lprocfs_quota_seq_fops = { + PROC_OWNER(THIS_MODULE) + .proc_open = lprocfs_quota_seq_open, + .proc_read = seq_read, + .proc_lseek = seq_lseek, + .proc_release = lprocfs_quota_seq_release, }; #endif /* CONFIG_PROC_FS */ diff --git a/lustre/quota/lquota_internal.h b/lustre/quota/lquota_internal.h index dc0ddd8a9a78..424aaf57452a 100644 --- a/lustre/quota/lquota_internal.h +++ b/lustre/quota/lquota_internal.h @@ -437,7 +437,7 @@ int qmt_glb_init(void); void qmt_glb_fini(void); /* lproc_quota.c */ -extern struct file_operations lprocfs_quota_seq_fops; +extern struct proc_ops lprocfs_quota_seq_fops; /* qsd_lib.c */ int qsd_glb_init(void); -- 2.41.0
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor