mirror of
https://github.com/SCST-project/scst.git
synced 2026-05-21 20:51:27 +00:00
Cleanup
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@2720 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
@@ -128,7 +128,8 @@ static void iscsi_conn_release(struct kobject *kobj)
|
||||
TRACE_ENTRY();
|
||||
|
||||
conn = container_of(kobj, struct iscsi_conn, conn_kobj);
|
||||
complete_all(&conn->conn_kobj_release_cmpl);
|
||||
if (conn->conn_kobj_release_cmpl != NULL)
|
||||
complete_all(conn->conn_kobj_release_cmpl);
|
||||
|
||||
TRACE_EXIT();
|
||||
return;
|
||||
@@ -236,18 +237,21 @@ static struct kobj_attribute iscsi_conn_state_attr =
|
||||
static void conn_sysfs_del(struct iscsi_conn *conn)
|
||||
{
|
||||
int rc;
|
||||
DECLARE_COMPLETION_ONSTACK(c);
|
||||
|
||||
TRACE_ENTRY();
|
||||
|
||||
conn->conn_kobj_release_cmpl = &c;
|
||||
|
||||
kobject_del(&conn->conn_kobj);
|
||||
kobject_put(&conn->conn_kobj);
|
||||
|
||||
rc = wait_for_completion_timeout(&conn->conn_kobj_release_cmpl, HZ);
|
||||
rc = wait_for_completion_timeout(conn->conn_kobj_release_cmpl, HZ);
|
||||
if (rc == 0) {
|
||||
PRINT_INFO("Waiting for releasing sysfs entry "
|
||||
"for conn %p (%d refs)...", conn,
|
||||
atomic_read(&conn->conn_kobj.kref.refcount));
|
||||
wait_for_completion(&conn->conn_kobj_release_cmpl);
|
||||
wait_for_completion(conn->conn_kobj_release_cmpl);
|
||||
PRINT_INFO("Done waiting for releasing sysfs "
|
||||
"entry for conn %p", conn);
|
||||
}
|
||||
@@ -284,8 +288,6 @@ restart:
|
||||
}
|
||||
}
|
||||
|
||||
init_completion(&conn->conn_kobj_release_cmpl);
|
||||
|
||||
res = kobject_init_and_add(&conn->conn_kobj, &iscsi_conn_ktype,
|
||||
scst_sysfs_get_sess_kobj(session->scst_sess), addr);
|
||||
if (res != 0) {
|
||||
|
||||
@@ -311,7 +311,7 @@ struct iscsi_conn {
|
||||
#ifndef CONFIG_SCST_PROC
|
||||
/* Don't need any protection */
|
||||
struct kobject conn_kobj;
|
||||
struct completion conn_kobj_release_cmpl;
|
||||
struct completion *conn_kobj_release_cmpl;
|
||||
#endif /* CONFIG_SCST_PROC */
|
||||
};
|
||||
|
||||
|
||||
@@ -129,7 +129,7 @@ struct sgv_pool {
|
||||
struct kobject sgv_kobj;
|
||||
|
||||
/* sysfs release completion */
|
||||
struct completion sgv_kobj_release_cmpl;
|
||||
struct completion *sgv_kobj_release_cmpl;
|
||||
};
|
||||
|
||||
static inline struct scatterlist *sgv_pool_sg(struct sgv_pool_obj *obj)
|
||||
|
||||
@@ -4189,7 +4189,8 @@ static void sgv_kobj_release(struct kobject *kobj)
|
||||
TRACE_ENTRY();
|
||||
|
||||
pool = container_of(kobj, struct sgv_pool, sgv_kobj);
|
||||
complete_all(&pool->sgv_kobj_release_cmpl);
|
||||
if (pool->sgv_kobj_release_cmpl != NULL)
|
||||
complete_all(pool->sgv_kobj_release_cmpl);
|
||||
|
||||
TRACE_EXIT();
|
||||
return;
|
||||
@@ -4207,8 +4208,6 @@ int scst_sgv_sysfs_create(struct sgv_pool *pool)
|
||||
|
||||
TRACE_ENTRY();
|
||||
|
||||
init_completion(&pool->sgv_kobj_release_cmpl);
|
||||
|
||||
res = kobject_init_and_add(&pool->sgv_kobj, &sgv_pool_ktype,
|
||||
scst_sgv_kobj, pool->name);
|
||||
if (res != 0) {
|
||||
@@ -4224,18 +4223,21 @@ out:
|
||||
void scst_sgv_sysfs_del(struct sgv_pool *pool)
|
||||
{
|
||||
int rc;
|
||||
DECLARE_COMPLETION_ONSTACK(c);
|
||||
|
||||
TRACE_ENTRY();
|
||||
|
||||
pool->sgv_kobj_release_cmpl = &c;
|
||||
|
||||
kobject_del(&pool->sgv_kobj);
|
||||
kobject_put(&pool->sgv_kobj);
|
||||
|
||||
rc = wait_for_completion_timeout(&pool->sgv_kobj_release_cmpl, HZ);
|
||||
rc = wait_for_completion_timeout(pool->sgv_kobj_release_cmpl, HZ);
|
||||
if (rc == 0) {
|
||||
PRINT_INFO("Waiting for releasing sysfs entry "
|
||||
"for SGV pool %s (%d refs)...", pool->name,
|
||||
atomic_read(&pool->sgv_kobj.kref.refcount));
|
||||
wait_for_completion(&pool->sgv_kobj_release_cmpl);
|
||||
wait_for_completion(pool->sgv_kobj_release_cmpl);
|
||||
PRINT_INFO("Done waiting for releasing sysfs "
|
||||
"entry for SGV pool %s", pool->name);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user