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:
Oleg Drokin
2015-05-21 15:31:35 -04:00
committed by Greg Kroah-Hartman
parent 73f11ecbcb
commit 5e66f70e96
2 changed files with 45 additions and 0 deletions

View File

@@ -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);

View File

@@ -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);