mirror of
https://github.com/torvalds/linux.git
synced 2025-01-01 07:42:07 +00:00
xfs: consolidate sysfs ops
As a part of the series to move xfs global stats from procfs to sysfs, this patch consolidates the sysfs ops functions and removes redundancy. Signed-off-by: Bill O'Donnell <billodo@redhat.com> Reviewed-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: Dave Chinner <david@fromorbit.com>
This commit is contained in:
parent
50cf5b7402
commit
a27c264009
@ -25,8 +25,9 @@
|
||||
|
||||
struct xfs_sysfs_attr {
|
||||
struct attribute attr;
|
||||
ssize_t (*show)(char *buf, void *data);
|
||||
ssize_t (*store)(const char *buf, size_t count, void *data);
|
||||
ssize_t (*show)(struct kobject *kobject, char *buf);
|
||||
ssize_t (*store)(struct kobject *kobject, const char *buf,
|
||||
size_t count);
|
||||
};
|
||||
|
||||
static inline struct xfs_sysfs_attr *
|
||||
@ -54,14 +55,42 @@ struct kobj_type xfs_mp_ktype = {
|
||||
.release = xfs_sysfs_release,
|
||||
};
|
||||
|
||||
STATIC ssize_t
|
||||
xfs_sysfs_object_show(
|
||||
struct kobject *kobject,
|
||||
struct attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct xfs_sysfs_attr *xfs_attr = to_attr(attr);
|
||||
|
||||
return xfs_attr->show ? xfs_attr->show(kobject, buf) : 0;
|
||||
}
|
||||
|
||||
STATIC ssize_t
|
||||
xfs_sysfs_object_store(
|
||||
struct kobject *kobject,
|
||||
struct attribute *attr,
|
||||
const char *buf,
|
||||
size_t count)
|
||||
{
|
||||
struct xfs_sysfs_attr *xfs_attr = to_attr(attr);
|
||||
|
||||
return xfs_attr->store ? xfs_attr->store(kobject, buf, count) : 0;
|
||||
}
|
||||
|
||||
static const struct sysfs_ops xfs_sysfs_ops = {
|
||||
.show = xfs_sysfs_object_show,
|
||||
.store = xfs_sysfs_object_store,
|
||||
};
|
||||
|
||||
#ifdef DEBUG
|
||||
/* debug */
|
||||
|
||||
STATIC ssize_t
|
||||
log_recovery_delay_store(
|
||||
struct kobject *kobject,
|
||||
const char *buf,
|
||||
size_t count,
|
||||
void *data)
|
||||
size_t count)
|
||||
{
|
||||
int ret;
|
||||
int val;
|
||||
@ -80,8 +109,8 @@ log_recovery_delay_store(
|
||||
|
||||
STATIC ssize_t
|
||||
log_recovery_delay_show(
|
||||
char *buf,
|
||||
void *data)
|
||||
struct kobject *kobject,
|
||||
char *buf)
|
||||
{
|
||||
return snprintf(buf, PAGE_SIZE, "%d\n", xfs_globals.log_recovery_delay);
|
||||
}
|
||||
@ -92,49 +121,20 @@ static struct attribute *xfs_dbg_attrs[] = {
|
||||
NULL,
|
||||
};
|
||||
|
||||
STATIC ssize_t
|
||||
xfs_dbg_show(
|
||||
struct kobject *kobject,
|
||||
struct attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct xfs_sysfs_attr *xfs_attr = to_attr(attr);
|
||||
|
||||
return xfs_attr->show ? xfs_attr->show(buf, NULL) : 0;
|
||||
}
|
||||
|
||||
STATIC ssize_t
|
||||
xfs_dbg_store(
|
||||
struct kobject *kobject,
|
||||
struct attribute *attr,
|
||||
const char *buf,
|
||||
size_t count)
|
||||
{
|
||||
struct xfs_sysfs_attr *xfs_attr = to_attr(attr);
|
||||
|
||||
return xfs_attr->store ? xfs_attr->store(buf, count, NULL) : 0;
|
||||
}
|
||||
|
||||
static struct sysfs_ops xfs_dbg_ops = {
|
||||
.show = xfs_dbg_show,
|
||||
.store = xfs_dbg_store,
|
||||
};
|
||||
|
||||
struct kobj_type xfs_dbg_ktype = {
|
||||
.release = xfs_sysfs_release,
|
||||
.sysfs_ops = &xfs_dbg_ops,
|
||||
.sysfs_ops = &xfs_sysfs_ops,
|
||||
.default_attrs = xfs_dbg_attrs,
|
||||
};
|
||||
|
||||
#endif /* DEBUG */
|
||||
|
||||
|
||||
/* stats */
|
||||
|
||||
STATIC ssize_t
|
||||
stats_show(
|
||||
char *buf,
|
||||
void *data)
|
||||
struct kobject *kobject,
|
||||
char *buf)
|
||||
{
|
||||
return xfs_stats_format(buf);
|
||||
}
|
||||
@ -142,9 +142,9 @@ XFS_SYSFS_ATTR_RO(stats);
|
||||
|
||||
STATIC ssize_t
|
||||
stats_clear_store(
|
||||
struct kobject *kobject,
|
||||
const char *buf,
|
||||
size_t count,
|
||||
void *data)
|
||||
size_t count)
|
||||
{
|
||||
int ret;
|
||||
int val;
|
||||
@ -166,50 +166,30 @@ static struct attribute *xfs_stats_attrs[] = {
|
||||
NULL,
|
||||
};
|
||||
|
||||
STATIC ssize_t
|
||||
xfs_stats_show(
|
||||
struct kobject *kobject,
|
||||
struct attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct xfs_sysfs_attr *xfs_attr = to_attr(attr);
|
||||
|
||||
return xfs_attr->show ? xfs_attr->show(buf, NULL) : 0;
|
||||
}
|
||||
|
||||
STATIC ssize_t
|
||||
xfs_stats_store(
|
||||
struct kobject *kobject,
|
||||
struct attribute *attr,
|
||||
const char *buf,
|
||||
size_t count)
|
||||
{
|
||||
struct xfs_sysfs_attr *xfs_attr = to_attr(attr);
|
||||
|
||||
return xfs_attr->store ? xfs_attr->store(buf, count, NULL) : 0;
|
||||
}
|
||||
|
||||
static struct sysfs_ops xfs_stats_ops = {
|
||||
.show = xfs_stats_show,
|
||||
.store = xfs_stats_store,
|
||||
};
|
||||
|
||||
struct kobj_type xfs_stats_ktype = {
|
||||
.release = xfs_sysfs_release,
|
||||
.sysfs_ops = &xfs_stats_ops,
|
||||
.sysfs_ops = &xfs_sysfs_ops,
|
||||
.default_attrs = xfs_stats_attrs,
|
||||
};
|
||||
|
||||
/* xlog */
|
||||
|
||||
static inline struct xlog *
|
||||
to_xlog(struct kobject *kobject)
|
||||
{
|
||||
struct xfs_kobj *kobj = to_kobj(kobject);
|
||||
|
||||
return container_of(kobj, struct xlog, l_kobj);
|
||||
}
|
||||
|
||||
STATIC ssize_t
|
||||
log_head_lsn_show(
|
||||
char *buf,
|
||||
void *data)
|
||||
struct kobject *kobject,
|
||||
char *buf)
|
||||
{
|
||||
struct xlog *log = data;
|
||||
int cycle;
|
||||
int block;
|
||||
struct xlog *log = to_xlog(kobject);
|
||||
|
||||
spin_lock(&log->l_icloglock);
|
||||
cycle = log->l_curr_cycle;
|
||||
@ -222,12 +202,12 @@ XFS_SYSFS_ATTR_RO(log_head_lsn);
|
||||
|
||||
STATIC ssize_t
|
||||
log_tail_lsn_show(
|
||||
char *buf,
|
||||
void *data)
|
||||
struct kobject *kobject,
|
||||
char *buf)
|
||||
{
|
||||
struct xlog *log = data;
|
||||
int cycle;
|
||||
int block;
|
||||
struct xlog *log = to_xlog(kobject);
|
||||
|
||||
xlog_crack_atomic_lsn(&log->l_tail_lsn, &cycle, &block);
|
||||
return snprintf(buf, PAGE_SIZE, "%d:%d\n", cycle, block);
|
||||
@ -236,12 +216,13 @@ XFS_SYSFS_ATTR_RO(log_tail_lsn);
|
||||
|
||||
STATIC ssize_t
|
||||
reserve_grant_head_show(
|
||||
char *buf,
|
||||
void *data)
|
||||
struct kobject *kobject,
|
||||
char *buf)
|
||||
|
||||
{
|
||||
struct xlog *log = data;
|
||||
int cycle;
|
||||
int bytes;
|
||||
struct xlog *log = to_xlog(kobject);
|
||||
|
||||
xlog_crack_grant_head(&log->l_reserve_head.grant, &cycle, &bytes);
|
||||
return snprintf(buf, PAGE_SIZE, "%d:%d\n", cycle, bytes);
|
||||
@ -250,12 +231,12 @@ XFS_SYSFS_ATTR_RO(reserve_grant_head);
|
||||
|
||||
STATIC ssize_t
|
||||
write_grant_head_show(
|
||||
char *buf,
|
||||
void *data)
|
||||
struct kobject *kobject,
|
||||
char *buf)
|
||||
{
|
||||
struct xlog *log = data;
|
||||
int cycle;
|
||||
int bytes;
|
||||
struct xlog *log = to_xlog(kobject);
|
||||
|
||||
xlog_crack_grant_head(&log->l_write_head.grant, &cycle, &bytes);
|
||||
return snprintf(buf, PAGE_SIZE, "%d:%d\n", cycle, bytes);
|
||||
@ -270,45 +251,8 @@ static struct attribute *xfs_log_attrs[] = {
|
||||
NULL,
|
||||
};
|
||||
|
||||
static inline struct xlog *
|
||||
to_xlog(struct kobject *kobject)
|
||||
{
|
||||
struct xfs_kobj *kobj = to_kobj(kobject);
|
||||
return container_of(kobj, struct xlog, l_kobj);
|
||||
}
|
||||
|
||||
STATIC ssize_t
|
||||
xfs_log_show(
|
||||
struct kobject *kobject,
|
||||
struct attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct xlog *log = to_xlog(kobject);
|
||||
struct xfs_sysfs_attr *xfs_attr = to_attr(attr);
|
||||
|
||||
return xfs_attr->show ? xfs_attr->show(buf, log) : 0;
|
||||
}
|
||||
|
||||
STATIC ssize_t
|
||||
xfs_log_store(
|
||||
struct kobject *kobject,
|
||||
struct attribute *attr,
|
||||
const char *buf,
|
||||
size_t count)
|
||||
{
|
||||
struct xlog *log = to_xlog(kobject);
|
||||
struct xfs_sysfs_attr *xfs_attr = to_attr(attr);
|
||||
|
||||
return xfs_attr->store ? xfs_attr->store(buf, count, log) : 0;
|
||||
}
|
||||
|
||||
static struct sysfs_ops xfs_log_ops = {
|
||||
.show = xfs_log_show,
|
||||
.store = xfs_log_store,
|
||||
};
|
||||
|
||||
struct kobj_type xfs_log_ktype = {
|
||||
.release = xfs_sysfs_release,
|
||||
.sysfs_ops = &xfs_log_ops,
|
||||
.sysfs_ops = &xfs_sysfs_ops,
|
||||
.default_attrs = xfs_log_attrs,
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user