diff options
author | Volker Lendecke <vl@samba.org> | 2010-06-27 15:36:38 +0200 |
---|---|---|
committer | Volker Lendecke <vl@samba.org> | 2010-08-28 12:28:53 +0200 |
commit | 0f83aa865090bfaf06add6a9e8b7215ab1db7d95 (patch) | |
tree | 2e3b2a96d2c73aca228b822a63415c829f4e89e3 /source3 | |
parent | 520c5aae40ce882b8c5c020eb728d4198106d6b7 (diff) | |
download | samba-0f83aa865090bfaf06add6a9e8b7215ab1db7d95.tar.gz samba-0f83aa865090bfaf06add6a9e8b7215ab1db7d95.tar.bz2 samba-0f83aa865090bfaf06add6a9e8b7215ab1db7d95.zip |
s3: Remove the dependency of g_lock on procid_self
procid_self() references global vars, don't depend on them unnecessarily
Diffstat (limited to 'source3')
-rw-r--r-- | source3/include/g_lock.h | 2 | ||||
-rw-r--r-- | source3/lib/g_lock.c | 22 | ||||
-rw-r--r-- | source3/utils/net_g_lock.c | 2 | ||||
-rw-r--r-- | source3/utils/net_registry.c | 2 |
4 files changed, 16 insertions, 12 deletions
diff --git a/source3/include/g_lock.h b/source3/include/g_lock.h index becb71bb67..40922308a1 100644 --- a/source3/include/g_lock.h +++ b/source3/include/g_lock.h @@ -44,7 +44,7 @@ NTSTATUS g_lock_get(struct g_lock_ctx *ctx, const char *name, struct server_id *pid); NTSTATUS g_lock_do(const char *name, enum g_lock_type lock_type, - struct timeval timeout, + struct timeval timeout, struct server_id self, void (*fn)(void *private_data), void *private_data); int g_lock_locks(struct g_lock_ctx *ctx, diff --git a/source3/lib/g_lock.c b/source3/lib/g_lock.c index 49f719b5fc..42bf3b0916 100644 --- a/source3/lib/g_lock.c +++ b/source3/lib/g_lock.c @@ -206,7 +206,7 @@ again: goto done; } - self = procid_self(); + self = messaging_server_id(ctx->msg); our_index = -1; for (i=0; i<num_locks; i++) { @@ -312,8 +312,8 @@ NTSTATUS g_lock_lock(struct g_lock_ctx *ctx, const char *name, #ifdef CLUSTER_SUPPORT if (lp_clustering()) { - status = ctdb_watch_us( - messaging_ctdbd_connection(procid_self())); + struct server_id my_id = messaging_server_id(ctx->msg); + status = ctdb_watch_us(messaging_ctdbd_connection(my_id)); if (!NT_STATUS_IS_OK(status)) { DEBUG(10, ("could not register retry with ctdb: %s\n", nt_errstr(status))); @@ -388,9 +388,11 @@ NTSTATUS g_lock_lock(struct g_lock_ctx *ctx, const char *name, #ifdef CLUSTER_SUPPORT if (lp_clustering()) { + struct server_id my_id; struct ctdbd_connection *conn; - conn = messaging_ctdbd_connection(procid_self()); + my_id = messaging_server_id(ctx->msg); + conn = messaging_ctdbd_connection(my_id); r_fds = &_r_fds; FD_ZERO(r_fds); @@ -591,11 +593,12 @@ NTSTATUS g_lock_unlock(struct g_lock_ctx *ctx, const char *name) { NTSTATUS status; - status = g_lock_force_unlock(ctx, name, procid_self()); + status = g_lock_force_unlock(ctx, name, messaging_server_id(ctx->msg)); #ifdef CLUSTER_SUPPORT if (lp_clustering()) { - ctdb_unwatch(messaging_ctdbd_connection(procid_self())); + struct server_id my_id = messaging_server_id(ctx->msg); + ctdb_unwatch(messaging_ctdbd_connection(my_id)); } #endif return status; @@ -708,6 +711,7 @@ NTSTATUS g_lock_get(struct g_lock_ctx *ctx, const char *name, static bool g_lock_init_all(TALLOC_CTX *mem_ctx, struct tevent_context **pev, struct messaging_context **pmsg, + const struct server_id self, struct g_lock_ctx **pg_ctx) { struct tevent_context *ev = NULL; @@ -719,7 +723,7 @@ static bool g_lock_init_all(TALLOC_CTX *mem_ctx, d_fprintf(stderr, "ERROR: could not init event context\n"); goto fail; } - msg = messaging_init(mem_ctx, procid_self(), ev); + msg = messaging_init(mem_ctx, self, ev); if (msg == NULL) { d_fprintf(stderr, "ERROR: could not init messaging context\n"); goto fail; @@ -742,7 +746,7 @@ fail: } NTSTATUS g_lock_do(const char *name, enum g_lock_type lock_type, - struct timeval timeout, + struct timeval timeout, const struct server_id self, void (*fn)(void *private_data), void *private_data) { struct tevent_context *ev = NULL; @@ -750,7 +754,7 @@ NTSTATUS g_lock_do(const char *name, enum g_lock_type lock_type, struct g_lock_ctx *g_ctx = NULL; NTSTATUS status; - if (!g_lock_init_all(talloc_tos(), &ev, &msg, &g_ctx)) { + if (!g_lock_init_all(talloc_tos(), &ev, &msg, self, &g_ctx)) { status = NT_STATUS_ACCESS_DENIED; goto done; } diff --git a/source3/utils/net_g_lock.c b/source3/utils/net_g_lock.c index a683b552de..937c11c0c4 100644 --- a/source3/utils/net_g_lock.c +++ b/source3/utils/net_g_lock.c @@ -90,7 +90,7 @@ static int net_g_lock_do(struct net_context *c, int argc, const char **argv) status = g_lock_do(name, G_LOCK_WRITE, timeval_set(timeout / 1000, timeout % 1000), - net_g_lock_do_fn, &state); + procid_self(), net_g_lock_do_fn, &state); if (!NT_STATUS_IS_OK(status)) { d_fprintf(stderr, "ERROR: g_lock_do failed: %s\n", nt_errstr(status)); diff --git a/source3/utils/net_registry.c b/source3/utils/net_registry.c index 4a6af959dc..f90d05454b 100644 --- a/source3/utils/net_registry.c +++ b/source3/utils/net_registry.c @@ -488,7 +488,7 @@ static int net_registry_increment(struct net_context *c, int argc, } status = g_lock_do("registry_increment_lock", G_LOCK_WRITE, - timeval_set(600, 0), + timeval_set(600, 0), procid_self(), net_registry_increment_fn, &state); if (!NT_STATUS_IS_OK(status)) { d_fprintf(stderr, _("g_lock_do failed: %s\n"), |