mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
staging/lustre: Generic helpers for sysfs
Add generic helpers to allow displaying oof lustre-specific values in /sys/fs/lustre Signed-off-by: Oleg Drokin <green@linuxhacker.ru> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
73f11ecbcb
commit
5e66f70e96
@@ -742,6 +742,27 @@ static struct file_operations name##_fops = { \
|
||||
.release = lprocfs_single_release, \
|
||||
}
|
||||
|
||||
struct lustre_attr {
|
||||
struct attribute attr;
|
||||
ssize_t (*show)(struct kobject *kobj, struct attribute *attr,
|
||||
char *buf);
|
||||
ssize_t (*store)(struct kobject *kobj, struct attribute *attr,
|
||||
const char *buf, size_t len);
|
||||
};
|
||||
|
||||
#define LUSTRE_ATTR(name, mode, show, store) \
|
||||
static struct lustre_attr lustre_attr_##name = __ATTR(name, mode, show, store)
|
||||
|
||||
#define LUSTRE_RO_ATTR(name) LUSTRE_ATTR(name, 0444, name##_show, NULL)
|
||||
#define LUSTRE_RW_ATTR(name) LUSTRE_ATTR(name, 0644, name##_show, name##_store)
|
||||
|
||||
ssize_t lustre_attr_show(struct kobject *kobj, struct attribute *attr,
|
||||
char *buf);
|
||||
ssize_t lustre_attr_store(struct kobject *kobj, struct attribute *attr,
|
||||
const char *buf, size_t len);
|
||||
|
||||
extern const struct sysfs_ops lustre_sysfs_ops;
|
||||
|
||||
/* lproc_ptlrpc.c */
|
||||
struct ptlrpc_request;
|
||||
extern void target_print_req(void *seq_file, struct ptlrpc_request *req);
|
||||
|
||||
@@ -2056,3 +2056,27 @@ int lprocfs_obd_rd_max_pages_per_rpc(struct seq_file *m, void *data)
|
||||
EXPORT_SYMBOL(lprocfs_obd_rd_max_pages_per_rpc);
|
||||
|
||||
#endif
|
||||
|
||||
ssize_t lustre_attr_show(struct kobject *kobj,
|
||||
struct attribute *attr, char *buf)
|
||||
{
|
||||
struct lustre_attr *a = container_of(attr, struct lustre_attr, attr);
|
||||
|
||||
return a->show ? a->show(kobj, attr, buf) : 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(lustre_attr_show);
|
||||
|
||||
ssize_t lustre_attr_store(struct kobject *kobj, struct attribute *attr,
|
||||
const char *buf, size_t len)
|
||||
{
|
||||
struct lustre_attr *a = container_of(attr, struct lustre_attr, attr);
|
||||
|
||||
return a->store ? a->store(kobj, attr, buf, len) : len;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(lustre_attr_store);
|
||||
|
||||
const struct sysfs_ops lustre_sysfs_ops = {
|
||||
.show = lustre_attr_show,
|
||||
.store = lustre_attr_store,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(lustre_sysfs_ops);
|
||||
|
||||
Reference in New Issue
Block a user