Revert "kobject: introduce kobj_completion"
This reverts commit eee0316497
.
Jeff writes:
I have no objections to reverting it. There were concerns from
Al Viro that it'd be tough to get right by callers and I had
assumed it got dropped after that. I had planned on using it in
my btrfs sysfs exports patchset but came up with a better way.
Cc: Jeff Mahoney <jeffm@suse.com>
Cc: Al Viro <viro@ZenIV.linux.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
5bd2010fbe
commit
eb4c69033f
|
@ -1,18 +0,0 @@
|
||||||
#ifndef _KOBJ_COMPLETION_H_
|
|
||||||
#define _KOBJ_COMPLETION_H_
|
|
||||||
|
|
||||||
#include <linux/kobject.h>
|
|
||||||
#include <linux/completion.h>
|
|
||||||
|
|
||||||
struct kobj_completion {
|
|
||||||
struct kobject kc_kobj;
|
|
||||||
struct completion kc_unregister;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define kobj_to_kobj_completion(kobj) \
|
|
||||||
container_of(kobj, struct kobj_completion, kc_kobj)
|
|
||||||
|
|
||||||
void kobj_completion_init(struct kobj_completion *kc, struct kobj_type *ktype);
|
|
||||||
void kobj_completion_release(struct kobject *kobj);
|
|
||||||
void kobj_completion_del_and_wait(struct kobj_completion *kc);
|
|
||||||
#endif /* _KOBJ_COMPLETION_H_ */
|
|
|
@ -13,7 +13,6 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/kobject.h>
|
#include <linux/kobject.h>
|
||||||
#include <linux/kobj_completion.h>
|
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
#include <linux/export.h>
|
#include <linux/export.h>
|
||||||
#include <linux/stat.h>
|
#include <linux/stat.h>
|
||||||
|
@ -781,55 +780,6 @@ const struct sysfs_ops kobj_sysfs_ops = {
|
||||||
.store = kobj_attr_store,
|
.store = kobj_attr_store,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* kobj_completion_init - initialize a kobj_completion object.
|
|
||||||
* @kc: kobj_completion
|
|
||||||
* @ktype: type of kobject to initialize
|
|
||||||
*
|
|
||||||
* kobj_completion structures can be embedded within structures with different
|
|
||||||
* lifetime rules. During the release of the enclosing object, we can
|
|
||||||
* wait on the release of the kobject so that we don't free it while it's
|
|
||||||
* still busy.
|
|
||||||
*/
|
|
||||||
void kobj_completion_init(struct kobj_completion *kc, struct kobj_type *ktype)
|
|
||||||
{
|
|
||||||
init_completion(&kc->kc_unregister);
|
|
||||||
kobject_init(&kc->kc_kobj, ktype);
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL_GPL(kobj_completion_init);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* kobj_completion_release - release a kobj_completion object
|
|
||||||
* @kobj: kobject embedded in kobj_completion
|
|
||||||
*
|
|
||||||
* Used with kobject_release to notify waiters that the kobject has been
|
|
||||||
* released.
|
|
||||||
*/
|
|
||||||
void kobj_completion_release(struct kobject *kobj)
|
|
||||||
{
|
|
||||||
struct kobj_completion *kc = kobj_to_kobj_completion(kobj);
|
|
||||||
complete(&kc->kc_unregister);
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL_GPL(kobj_completion_release);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* kobj_completion_del_and_wait - release the kobject and wait for it
|
|
||||||
* @kc: kobj_completion object to release
|
|
||||||
*
|
|
||||||
* Delete the kobject from sysfs and drop the reference count. Then wait
|
|
||||||
* until any other outstanding references are also dropped. This routine
|
|
||||||
* is only necessary once other references may have been taken on the
|
|
||||||
* kobject. Typically this happens when the kobject has been published
|
|
||||||
* to sysfs via kobject_add.
|
|
||||||
*/
|
|
||||||
void kobj_completion_del_and_wait(struct kobj_completion *kc)
|
|
||||||
{
|
|
||||||
kobject_del(&kc->kc_kobj);
|
|
||||||
kobject_put(&kc->kc_kobj);
|
|
||||||
wait_for_completion(&kc->kc_unregister);
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL_GPL(kobj_completion_del_and_wait);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* kset_register - initialize and add a kset.
|
* kset_register - initialize and add a kset.
|
||||||
* @k: kset.
|
* @k: kset.
|
||||||
|
|
Loading…
Reference in New Issue