mirror of https://github.com/torvalds/linux.git
xfs: contain more sysfs code in xfs_sysfs.c
Extend the error sysfs initialization helper to include the neighbouring attributes as well. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
This commit is contained in:
parent
5443041b9c
commit
243f40d0c7
|
|
@ -765,27 +765,15 @@ xfs_mountfs(
|
||||||
/* enable fail_at_unmount as default */
|
/* enable fail_at_unmount as default */
|
||||||
mp->m_fail_unmount = true;
|
mp->m_fail_unmount = true;
|
||||||
|
|
||||||
super_set_sysfs_name_id(mp->m_super);
|
error = xfs_mount_sysfs_init(mp);
|
||||||
|
|
||||||
error = xfs_sysfs_init(&mp->m_kobj, &xfs_mp_ktype,
|
|
||||||
NULL, mp->m_super->s_id);
|
|
||||||
if (error)
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
error = xfs_sysfs_init(&mp->m_stats.xs_kobj, &xfs_stats_ktype,
|
|
||||||
&mp->m_kobj, "stats");
|
|
||||||
if (error)
|
|
||||||
goto out_remove_sysfs;
|
|
||||||
|
|
||||||
xchk_stats_register(mp->m_scrub_stats, mp->m_debugfs);
|
|
||||||
|
|
||||||
error = xfs_error_sysfs_init(mp);
|
|
||||||
if (error)
|
if (error)
|
||||||
goto out_remove_scrub_stats;
|
goto out_remove_scrub_stats;
|
||||||
|
|
||||||
|
xchk_stats_register(mp->m_scrub_stats, mp->m_debugfs);
|
||||||
|
|
||||||
error = xfs_errortag_init(mp);
|
error = xfs_errortag_init(mp);
|
||||||
if (error)
|
if (error)
|
||||||
goto out_remove_error_sysfs;
|
goto out_remove_sysfs;
|
||||||
|
|
||||||
error = xfs_uuid_mount(mp);
|
error = xfs_uuid_mount(mp);
|
||||||
if (error)
|
if (error)
|
||||||
|
|
@ -1148,13 +1136,10 @@ xfs_mountfs(
|
||||||
xfs_uuid_unmount(mp);
|
xfs_uuid_unmount(mp);
|
||||||
out_remove_errortag:
|
out_remove_errortag:
|
||||||
xfs_errortag_del(mp);
|
xfs_errortag_del(mp);
|
||||||
out_remove_error_sysfs:
|
out_remove_sysfs:
|
||||||
xfs_error_sysfs_del(mp);
|
xfs_mount_sysfs_del(mp);
|
||||||
out_remove_scrub_stats:
|
out_remove_scrub_stats:
|
||||||
xchk_stats_unregister(mp->m_scrub_stats);
|
xchk_stats_unregister(mp->m_scrub_stats);
|
||||||
xfs_sysfs_del(&mp->m_stats.xs_kobj);
|
|
||||||
out_remove_sysfs:
|
|
||||||
xfs_sysfs_del(&mp->m_kobj);
|
|
||||||
out:
|
out:
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
@ -1231,10 +1216,8 @@ xfs_unmountfs(
|
||||||
xfs_free_rtgroups(mp, 0, mp->m_sb.sb_rgcount);
|
xfs_free_rtgroups(mp, 0, mp->m_sb.sb_rgcount);
|
||||||
xfs_free_perag_range(mp, 0, mp->m_sb.sb_agcount);
|
xfs_free_perag_range(mp, 0, mp->m_sb.sb_agcount);
|
||||||
xfs_errortag_del(mp);
|
xfs_errortag_del(mp);
|
||||||
xfs_error_sysfs_del(mp);
|
|
||||||
xchk_stats_unregister(mp->m_scrub_stats);
|
xchk_stats_unregister(mp->m_scrub_stats);
|
||||||
xfs_sysfs_del(&mp->m_stats.xs_kobj);
|
xfs_mount_sysfs_del(mp);
|
||||||
xfs_sysfs_del(&mp->m_kobj);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -69,7 +69,7 @@ static struct attribute *xfs_mp_attrs[] = {
|
||||||
};
|
};
|
||||||
ATTRIBUTE_GROUPS(xfs_mp);
|
ATTRIBUTE_GROUPS(xfs_mp);
|
||||||
|
|
||||||
const struct kobj_type xfs_mp_ktype = {
|
static const struct kobj_type xfs_mp_ktype = {
|
||||||
.release = xfs_sysfs_release,
|
.release = xfs_sysfs_release,
|
||||||
.sysfs_ops = &xfs_sysfs_ops,
|
.sysfs_ops = &xfs_sysfs_ops,
|
||||||
.default_groups = xfs_mp_groups,
|
.default_groups = xfs_mp_groups,
|
||||||
|
|
@ -702,39 +702,58 @@ xfs_error_sysfs_init_class(
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
xfs_error_sysfs_init(
|
xfs_mount_sysfs_init(
|
||||||
struct xfs_mount *mp)
|
struct xfs_mount *mp)
|
||||||
{
|
{
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
|
super_set_sysfs_name_id(mp->m_super);
|
||||||
|
|
||||||
|
/* .../xfs/<dev>/ */
|
||||||
|
error = xfs_sysfs_init(&mp->m_kobj, &xfs_mp_ktype,
|
||||||
|
NULL, mp->m_super->s_id);
|
||||||
|
if (error)
|
||||||
|
return error;
|
||||||
|
|
||||||
|
/* .../xfs/<dev>/stats/ */
|
||||||
|
error = xfs_sysfs_init(&mp->m_stats.xs_kobj, &xfs_stats_ktype,
|
||||||
|
&mp->m_kobj, "stats");
|
||||||
|
if (error)
|
||||||
|
goto out_remove_fsdir;
|
||||||
|
|
||||||
/* .../xfs/<dev>/error/ */
|
/* .../xfs/<dev>/error/ */
|
||||||
error = xfs_sysfs_init(&mp->m_error_kobj, &xfs_error_ktype,
|
error = xfs_sysfs_init(&mp->m_error_kobj, &xfs_error_ktype,
|
||||||
&mp->m_kobj, "error");
|
&mp->m_kobj, "error");
|
||||||
if (error)
|
if (error)
|
||||||
return error;
|
goto out_remove_stats_dir;
|
||||||
|
|
||||||
|
/* .../xfs/<dev>/error/fail_at_unmount */
|
||||||
error = sysfs_create_file(&mp->m_error_kobj.kobject,
|
error = sysfs_create_file(&mp->m_error_kobj.kobject,
|
||||||
ATTR_LIST(fail_at_unmount));
|
ATTR_LIST(fail_at_unmount));
|
||||||
|
|
||||||
if (error)
|
if (error)
|
||||||
goto out_error;
|
goto out_remove_error_dir;
|
||||||
|
|
||||||
/* .../xfs/<dev>/error/metadata/ */
|
/* .../xfs/<dev>/error/metadata/ */
|
||||||
error = xfs_error_sysfs_init_class(mp, XFS_ERR_METADATA,
|
error = xfs_error_sysfs_init_class(mp, XFS_ERR_METADATA,
|
||||||
"metadata", &mp->m_error_meta_kobj,
|
"metadata", &mp->m_error_meta_kobj,
|
||||||
xfs_error_meta_init);
|
xfs_error_meta_init);
|
||||||
if (error)
|
if (error)
|
||||||
goto out_error;
|
goto out_remove_error_dir;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
out_error:
|
out_remove_error_dir:
|
||||||
xfs_sysfs_del(&mp->m_error_kobj);
|
xfs_sysfs_del(&mp->m_error_kobj);
|
||||||
|
out_remove_stats_dir:
|
||||||
|
xfs_sysfs_del(&mp->m_stats.xs_kobj);
|
||||||
|
out_remove_fsdir:
|
||||||
|
xfs_sysfs_del(&mp->m_kobj);
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
xfs_error_sysfs_del(
|
xfs_mount_sysfs_del(
|
||||||
struct xfs_mount *mp)
|
struct xfs_mount *mp)
|
||||||
{
|
{
|
||||||
struct xfs_error_cfg *cfg;
|
struct xfs_error_cfg *cfg;
|
||||||
|
|
@ -749,6 +768,8 @@ xfs_error_sysfs_del(
|
||||||
}
|
}
|
||||||
xfs_sysfs_del(&mp->m_error_meta_kobj);
|
xfs_sysfs_del(&mp->m_error_meta_kobj);
|
||||||
xfs_sysfs_del(&mp->m_error_kobj);
|
xfs_sysfs_del(&mp->m_error_kobj);
|
||||||
|
xfs_sysfs_del(&mp->m_stats.xs_kobj);
|
||||||
|
xfs_sysfs_del(&mp->m_kobj);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct xfs_error_cfg *
|
struct xfs_error_cfg *
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,6 @@
|
||||||
#ifndef __XFS_SYSFS_H__
|
#ifndef __XFS_SYSFS_H__
|
||||||
#define __XFS_SYSFS_H__
|
#define __XFS_SYSFS_H__
|
||||||
|
|
||||||
extern const struct kobj_type xfs_mp_ktype; /* xfs_mount */
|
|
||||||
extern const struct kobj_type xfs_dbg_ktype; /* debug */
|
extern const struct kobj_type xfs_dbg_ktype; /* debug */
|
||||||
extern const struct kobj_type xfs_log_ktype; /* xlog */
|
extern const struct kobj_type xfs_log_ktype; /* xlog */
|
||||||
extern const struct kobj_type xfs_stats_ktype; /* stats */
|
extern const struct kobj_type xfs_stats_ktype; /* stats */
|
||||||
|
|
@ -53,7 +52,7 @@ xfs_sysfs_del(
|
||||||
wait_for_completion(&kobj->complete);
|
wait_for_completion(&kobj->complete);
|
||||||
}
|
}
|
||||||
|
|
||||||
int xfs_error_sysfs_init(struct xfs_mount *mp);
|
int xfs_mount_sysfs_init(struct xfs_mount *mp);
|
||||||
void xfs_error_sysfs_del(struct xfs_mount *mp);
|
void xfs_mount_sysfs_del(struct xfs_mount *mp);
|
||||||
|
|
||||||
#endif /* __XFS_SYSFS_H__ */
|
#endif /* __XFS_SYSFS_H__ */
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue