Line data Source code
1 : // SPDX-License-Identifier: GPL-2.0 2 : /* 3 : * Copyright (c) 2014 Red Hat, Inc. 4 : * All Rights Reserved. 5 : */ 6 : 7 : #ifndef __XFS_SYSFS_H__ 8 : #define __XFS_SYSFS_H__ 9 : 10 : extern const struct kobj_type xfs_mp_ktype; /* xfs_mount */ 11 : extern const struct kobj_type xfs_dbg_ktype; /* debug */ 12 : extern const struct kobj_type xfs_log_ktype; /* xlog */ 13 : extern const struct kobj_type xfs_stats_ktype; /* stats */ 14 : 15 : static inline struct xfs_kobj * 16 : to_kobj(struct kobject *kobject) 17 : { 18 : return container_of(kobject, struct xfs_kobj, kobject); 19 : } 20 : 21 : static inline void 22 669788 : xfs_sysfs_release(struct kobject *kobject) 23 : { 24 669788 : struct xfs_kobj *kobj = to_kobj(kobject); 25 669788 : complete(&kobj->complete); 26 669788 : } 27 : 28 : static inline int 29 669680 : xfs_sysfs_init( 30 : struct xfs_kobj *kobj, 31 : const struct kobj_type *ktype, 32 : struct xfs_kobj *parent_kobj, 33 : const char *name) 34 : { 35 669680 : struct kobject *parent; 36 669680 : int err; 37 : 38 669680 : parent = parent_kobj ? &parent_kobj->kobject : NULL; 39 669680 : init_completion(&kobj->complete); 40 669680 : err = kobject_init_and_add(&kobj->kobject, ktype, parent, "%s", name); 41 669680 : if (err) 42 0 : kobject_put(&kobj->kobject); 43 : 44 669680 : return err; 45 : } 46 : 47 : static inline void 48 669788 : xfs_sysfs_del( 49 : struct xfs_kobj *kobj) 50 : { 51 669788 : kobject_del(&kobj->kobject); 52 669788 : kobject_put(&kobj->kobject); 53 669788 : wait_for_completion(&kobj->complete); 54 669788 : } 55 : 56 : int xfs_error_sysfs_init(struct xfs_mount *mp); 57 : void xfs_error_sysfs_del(struct xfs_mount *mp); 58 : 59 : #endif /* __XFS_SYSFS_H__ */