Whamcloud - gitweb
git://git.whamcloud.com
/
fs
/
lustre-release.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
| inline |
side by side
b=13807
[fs/lustre-release.git]
/
lustre
/
ldlm
/
ldlm_resource.c
diff --git
a/lustre/ldlm/ldlm_resource.c
b/lustre/ldlm/ldlm_resource.c
index
cf3b2b1
..
5c12ea3
100644
(file)
--- a/
lustre/ldlm/ldlm_resource.c
+++ b/
lustre/ldlm/ldlm_resource.c
@@
-247,7
+247,7
@@
struct ldlm_namespace *ldlm_namespace_new(char *name, ldlm_side_t client,
{
struct ldlm_namespace *ns = NULL;
struct list_head *bucket;
- int rc, idx;
+ int rc, idx
, namelen
;
ENTRY;
rc = ldlm_get_ref(client);
@@
-265,7
+265,8
@@
struct ldlm_namespace *ldlm_namespace_new(char *name, ldlm_side_t client,
GOTO(out_ns, NULL);
ns->ns_appetite = apt;
- OBD_ALLOC(ns->ns_name, strlen(name) + 1);
+ namelen = strlen(name);
+ OBD_ALLOC(ns->ns_name, namelen + 1);
if (!ns->ns_name)
GOTO(out_hash, NULL);
@@
-288,29
+289,26
@@
struct ldlm_namespace *ldlm_namespace_new(char *name, ldlm_side_t client,
ns->ns_max_unused = LDLM_DEFAULT_LRU_SIZE;
ns->ns_max_age = LDLM_DEFAULT_MAX_ALIVE;
spin_lock_init(&ns->ns_unused_lock);
-
ns->ns_connect_flags = 0;
- mutex_down(ldlm_namespace_lock(client));
- list_add(&ns->ns_list_chain, ldlm_namespace_list(client));
- idx = atomic_read(ldlm_namespace_nr(client));
- atomic_inc(ldlm_namespace_nr(client));
- mutex_up(ldlm_namespace_lock(client));
ldlm_proc_namespace(ns);
-
+
+ idx = atomic_read(ldlm_namespace_nr(client));
rc = ldlm_pool_init(&ns->ns_pool, ns, idx, client);
if (rc) {
- CERROR("
c
an't initialize lock pool, rc %d\n", rc);
- GOTO(out_
del
, rc);
+ CERROR("
C
an't initialize lock pool, rc %d\n", rc);
+ GOTO(out_
proc
, rc);
}
- RETURN(ns);
-out_del:
mutex_down(ldlm_namespace_lock(client));
- list_
del(&ns->ns_list_chain
);
- atomic_
de
c(ldlm_namespace_nr(client));
+ list_
add(&ns->ns_list_chain, ldlm_namespace_list(client)
);
+ atomic_
in
c(ldlm_namespace_nr(client));
mutex_up(ldlm_namespace_lock(client));
+
+ RETURN(ns);
+out_proc:
+ ldlm_namespace_cleanup(ns, 0);
+ OBD_FREE(ns->ns_name, namelen + 1);
out_hash:
- POISON(ns->ns_hash, 0x5a, sizeof(*ns->ns_hash) * RES_HASH_SIZE);
OBD_VFREE(ns->ns_hash, sizeof(*ns->ns_hash) * RES_HASH_SIZE);
out_ns:
OBD_FREE_PTR(ns);