Message ID | 20250206064511.2323878-43-hch@lst.de (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
Series | [01/43] xfs: factor out a xfs_rt_check_size helper | expand |
On Thu, Feb 06, 2025 at 07:44:58AM +0100, Christoph Hellwig wrote: > Extend the error sysfs initialization helper to include the neighbouring > attributes as well. > > Signed-off-by: Christoph Hellwig <hch@lst.de> This looks like a pretty simple rearrangement... Reviewed-by: "Darrick J. Wong" <djwong@kernel.org> --D > --- > fs/xfs/xfs_mount.c | 29 ++++++----------------------- > fs/xfs/xfs_sysfs.c | 35 ++++++++++++++++++++++++++++------- > fs/xfs/xfs_sysfs.h | 5 ++--- > 3 files changed, 36 insertions(+), 33 deletions(-) > > diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c > index 7dbdf9e5529c..a62791c2b2fe 100644 > --- a/fs/xfs/xfs_mount.c > +++ b/fs/xfs/xfs_mount.c > @@ -768,27 +768,15 @@ xfs_mountfs( > /* enable fail_at_unmount as default */ > mp->m_fail_unmount = true; > > - super_set_sysfs_name_id(mp->m_super); > - > - 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"); > + error = xfs_mount_sysfs_init(mp); > if (error) > - goto out_remove_sysfs; > + goto out_remove_scrub_stats; > > xchk_stats_register(mp->m_scrub_stats, mp->m_debugfs); > > - error = xfs_error_sysfs_init(mp); > - if (error) > - goto out_remove_scrub_stats; > - > error = xfs_errortag_init(mp); > if (error) > - goto out_remove_error_sysfs; > + goto out_remove_sysfs; > > error = xfs_uuid_mount(mp); > if (error) > @@ -1151,13 +1139,10 @@ xfs_mountfs( > xfs_uuid_unmount(mp); > out_remove_errortag: > xfs_errortag_del(mp); > - out_remove_error_sysfs: > - xfs_error_sysfs_del(mp); > + out_remove_sysfs: > + xfs_mount_sysfs_del(mp); > out_remove_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: > return error; > } > @@ -1234,10 +1219,8 @@ xfs_unmountfs( > xfs_free_rtgroups(mp, 0, mp->m_sb.sb_rgcount); > xfs_free_perag_range(mp, 0, mp->m_sb.sb_agcount); > xfs_errortag_del(mp); > - xfs_error_sysfs_del(mp); > xchk_stats_unregister(mp->m_scrub_stats); > - xfs_sysfs_del(&mp->m_stats.xs_kobj); > - xfs_sysfs_del(&mp->m_kobj); > + xfs_mount_sysfs_del(mp); > } > > /* > diff --git a/fs/xfs/xfs_sysfs.c b/fs/xfs/xfs_sysfs.c > index 60cb5318fdae..c3bd7dff229d 100644 > --- a/fs/xfs/xfs_sysfs.c > +++ b/fs/xfs/xfs_sysfs.c > @@ -69,7 +69,7 @@ static struct attribute *xfs_mp_attrs[] = { > }; > ATTRIBUTE_GROUPS(xfs_mp); > > -const struct kobj_type xfs_mp_ktype = { > +static const struct kobj_type xfs_mp_ktype = { > .release = xfs_sysfs_release, > .sysfs_ops = &xfs_sysfs_ops, > .default_groups = xfs_mp_groups, > @@ -702,39 +702,58 @@ xfs_error_sysfs_init_class( > } > > int > -xfs_error_sysfs_init( > +xfs_mount_sysfs_init( > struct xfs_mount *mp) > { > 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/ */ > error = xfs_sysfs_init(&mp->m_error_kobj, &xfs_error_ktype, > &mp->m_kobj, "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, > ATTR_LIST(fail_at_unmount)); > > if (error) > - goto out_error; > + goto out_remove_error_dir; > > /* .../xfs/<dev>/error/metadata/ */ > error = xfs_error_sysfs_init_class(mp, XFS_ERR_METADATA, > "metadata", &mp->m_error_meta_kobj, > xfs_error_meta_init); > if (error) > - goto out_error; > + goto out_remove_error_dir; > > return 0; > > -out_error: > +out_remove_error_dir: > 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; > } > > void > -xfs_error_sysfs_del( > +xfs_mount_sysfs_del( > struct xfs_mount *mp) > { > 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_kobj); > + xfs_sysfs_del(&mp->m_stats.xs_kobj); > + xfs_sysfs_del(&mp->m_kobj); > } > > struct xfs_error_cfg * > diff --git a/fs/xfs/xfs_sysfs.h b/fs/xfs/xfs_sysfs.h > index 148893ebfdef..1622fe80ad3e 100644 > --- a/fs/xfs/xfs_sysfs.h > +++ b/fs/xfs/xfs_sysfs.h > @@ -7,7 +7,6 @@ > #ifndef __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_log_ktype; /* xlog */ > extern const struct kobj_type xfs_stats_ktype; /* stats */ > @@ -53,7 +52,7 @@ xfs_sysfs_del( > wait_for_completion(&kobj->complete); > } > > -int xfs_error_sysfs_init(struct xfs_mount *mp); > -void xfs_error_sysfs_del(struct xfs_mount *mp); > +int xfs_mount_sysfs_init(struct xfs_mount *mp); > +void xfs_mount_sysfs_del(struct xfs_mount *mp); > > #endif /* __XFS_SYSFS_H__ */ > -- > 2.45.2 > >
diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index 7dbdf9e5529c..a62791c2b2fe 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c @@ -768,27 +768,15 @@ xfs_mountfs( /* enable fail_at_unmount as default */ mp->m_fail_unmount = true; - super_set_sysfs_name_id(mp->m_super); - - 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"); + error = xfs_mount_sysfs_init(mp); if (error) - goto out_remove_sysfs; + goto out_remove_scrub_stats; xchk_stats_register(mp->m_scrub_stats, mp->m_debugfs); - error = xfs_error_sysfs_init(mp); - if (error) - goto out_remove_scrub_stats; - error = xfs_errortag_init(mp); if (error) - goto out_remove_error_sysfs; + goto out_remove_sysfs; error = xfs_uuid_mount(mp); if (error) @@ -1151,13 +1139,10 @@ xfs_mountfs( xfs_uuid_unmount(mp); out_remove_errortag: xfs_errortag_del(mp); - out_remove_error_sysfs: - xfs_error_sysfs_del(mp); + out_remove_sysfs: + xfs_mount_sysfs_del(mp); out_remove_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: return error; } @@ -1234,10 +1219,8 @@ xfs_unmountfs( xfs_free_rtgroups(mp, 0, mp->m_sb.sb_rgcount); xfs_free_perag_range(mp, 0, mp->m_sb.sb_agcount); xfs_errortag_del(mp); - xfs_error_sysfs_del(mp); xchk_stats_unregister(mp->m_scrub_stats); - xfs_sysfs_del(&mp->m_stats.xs_kobj); - xfs_sysfs_del(&mp->m_kobj); + xfs_mount_sysfs_del(mp); } /* diff --git a/fs/xfs/xfs_sysfs.c b/fs/xfs/xfs_sysfs.c index 60cb5318fdae..c3bd7dff229d 100644 --- a/fs/xfs/xfs_sysfs.c +++ b/fs/xfs/xfs_sysfs.c @@ -69,7 +69,7 @@ static struct attribute *xfs_mp_attrs[] = { }; ATTRIBUTE_GROUPS(xfs_mp); -const struct kobj_type xfs_mp_ktype = { +static const struct kobj_type xfs_mp_ktype = { .release = xfs_sysfs_release, .sysfs_ops = &xfs_sysfs_ops, .default_groups = xfs_mp_groups, @@ -702,39 +702,58 @@ xfs_error_sysfs_init_class( } int -xfs_error_sysfs_init( +xfs_mount_sysfs_init( struct xfs_mount *mp) { 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/ */ error = xfs_sysfs_init(&mp->m_error_kobj, &xfs_error_ktype, &mp->m_kobj, "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, ATTR_LIST(fail_at_unmount)); if (error) - goto out_error; + goto out_remove_error_dir; /* .../xfs/<dev>/error/metadata/ */ error = xfs_error_sysfs_init_class(mp, XFS_ERR_METADATA, "metadata", &mp->m_error_meta_kobj, xfs_error_meta_init); if (error) - goto out_error; + goto out_remove_error_dir; return 0; -out_error: +out_remove_error_dir: 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; } void -xfs_error_sysfs_del( +xfs_mount_sysfs_del( struct xfs_mount *mp) { 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_kobj); + xfs_sysfs_del(&mp->m_stats.xs_kobj); + xfs_sysfs_del(&mp->m_kobj); } struct xfs_error_cfg * diff --git a/fs/xfs/xfs_sysfs.h b/fs/xfs/xfs_sysfs.h index 148893ebfdef..1622fe80ad3e 100644 --- a/fs/xfs/xfs_sysfs.h +++ b/fs/xfs/xfs_sysfs.h @@ -7,7 +7,6 @@ #ifndef __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_log_ktype; /* xlog */ extern const struct kobj_type xfs_stats_ktype; /* stats */ @@ -53,7 +52,7 @@ xfs_sysfs_del( wait_for_completion(&kobj->complete); } -int xfs_error_sysfs_init(struct xfs_mount *mp); -void xfs_error_sysfs_del(struct xfs_mount *mp); +int xfs_mount_sysfs_init(struct xfs_mount *mp); +void xfs_mount_sysfs_del(struct xfs_mount *mp); #endif /* __XFS_SYSFS_H__ */
Extend the error sysfs initialization helper to include the neighbouring attributes as well. Signed-off-by: Christoph Hellwig <hch@lst.de> --- fs/xfs/xfs_mount.c | 29 ++++++----------------------- fs/xfs/xfs_sysfs.c | 35 ++++++++++++++++++++++++++++------- fs/xfs/xfs_sysfs.h | 5 ++--- 3 files changed, 36 insertions(+), 33 deletions(-)