diff options
author | Andrew Tridgell <tridge@samba.org> | 2007-01-19 04:32:04 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 14:43:48 -0500 |
commit | faf800d871b72ca4938c5f392d8b6183cce16e9d (patch) | |
tree | 9fafe57a05502cb1aa5f849513505b90bdfcd3a8 | |
parent | 864e228f504d0c73b78681fb69884783c7c689f2 (diff) | |
download | samba-faf800d871b72ca4938c5f392d8b6183cce16e9d.tar.gz samba-faf800d871b72ca4938c5f392d8b6183cce16e9d.tar.bz2 samba-faf800d871b72ca4938c5f392d8b6183cce16e9d.zip |
r20896: make the maximum lacount configurable in smb.conf
at the moment the brlock_ctdb backend will sometimes fail after
dmaster migrations. So to pass tests this needs to be set high. Thats
a priority to fix.
(This used to be commit 45f5c272f366f6a793941d97c9522c5b2b0cb639)
-rw-r--r-- | source4/cluster/ctdb/common/ctdb.c | 8 | ||||
-rw-r--r-- | source4/cluster/ctdb/common/ctdb_call.c | 2 | ||||
-rw-r--r-- | source4/cluster/ctdb/ctdb_cluster.c | 7 | ||||
-rw-r--r-- | source4/cluster/ctdb/include/ctdb.h | 5 | ||||
-rw-r--r-- | source4/cluster/ctdb/include/ctdb_private.h | 3 |
5 files changed, 22 insertions, 3 deletions
diff --git a/source4/cluster/ctdb/common/ctdb.c b/source4/cluster/ctdb/common/ctdb.c index ad0345b3c7..dd9a6db770 100644 --- a/source4/cluster/ctdb/common/ctdb.c +++ b/source4/cluster/ctdb/common/ctdb.c @@ -48,6 +48,13 @@ void ctdb_set_flags(struct ctdb_context *ctdb, unsigned flags) ctdb->flags |= flags; } +/* + set max acess count before a dmaster migration +*/ +void ctdb_set_max_lacount(struct ctdb_context *ctdb, unsigned count) +{ + ctdb->max_lacount = count; +} /* add a node to the list of active nodes @@ -281,6 +288,7 @@ struct ctdb_context *ctdb_init(struct event_context *ev) ctdb->ev = ev; ctdb->upcalls = &ctdb_upcalls; ctdb->idr = idr_init(ctdb); + ctdb->max_lacount = CTDB_DEFAULT_MAX_LACOUNT; return ctdb; } diff --git a/source4/cluster/ctdb/common/ctdb_call.c b/source4/cluster/ctdb/common/ctdb_call.c index 2bedccc86a..5c0a00c6e9 100644 --- a/source4/cluster/ctdb/common/ctdb_call.c +++ b/source4/cluster/ctdb/common/ctdb_call.c @@ -345,7 +345,7 @@ void ctdb_request_call(struct ctdb_context *ctdb, struct ctdb_req_header *hdr) /* if this nodes has done enough consecutive calls on the same record then give them the record */ if (header.laccessor == c->hdr.srcnode && - header.lacount >= CTDB_MAX_LACOUNT) { + header.lacount >= ctdb->max_lacount) { ctdb_call_send_dmaster(ctdb, c, &header, &key, &data); talloc_free(data.dptr); return; diff --git a/source4/cluster/ctdb/ctdb_cluster.c b/source4/cluster/ctdb/ctdb_cluster.c index 49a61ff494..183d5c1831 100644 --- a/source4/cluster/ctdb/ctdb_cluster.c +++ b/source4/cluster/ctdb/ctdb_cluster.c @@ -68,7 +68,7 @@ void cluster_ctdb_init(struct event_context *ev) const char *address; const char *transport; struct cluster_state *state; - int ret; + int ret, lacount; nlist = lp_parm_string(-1, "ctdb", "nlist"); if (nlist == NULL) return; @@ -101,6 +101,11 @@ void cluster_ctdb_init(struct event_context *ev) ctdb_set_flags(state->ctdb, CTDB_FLAG_SELF_CONNECT); } + lacount = lp_parm_int(-1, "ctdb", "maxlacount", -1); + if (lacount != -1) { + ctdb_set_max_lacount(state->ctdb, lacount); + } + /* tell ctdb what address to listen on */ ret = ctdb_set_address(state->ctdb, address); if (ret == -1) { diff --git a/source4/cluster/ctdb/include/ctdb.h b/source4/cluster/ctdb/include/ctdb.h index 21b9b5d1ce..f2f4bcef84 100644 --- a/source4/cluster/ctdb/include/ctdb.h +++ b/source4/cluster/ctdb/include/ctdb.h @@ -59,6 +59,11 @@ int ctdb_set_transport(struct ctdb_context *ctdb, const char *transport); void ctdb_set_flags(struct ctdb_context *ctdb, unsigned flags); /* + set max acess count before a dmaster migration +*/ +void ctdb_set_max_lacount(struct ctdb_context *ctdb, unsigned count); + +/* tell ctdb what address to listen on, in transport specific format */ int ctdb_set_address(struct ctdb_context *ctdb, const char *address); diff --git a/source4/cluster/ctdb/include/ctdb_private.h b/source4/cluster/ctdb/include/ctdb_private.h index d373e3af32..89643eff0f 100644 --- a/source4/cluster/ctdb/include/ctdb_private.h +++ b/source4/cluster/ctdb/include/ctdb_private.h @@ -93,6 +93,7 @@ struct ctdb_context { const struct ctdb_methods *methods; /* transport methods */ const struct ctdb_upcalls *upcalls; /* transport upcalls */ void *private; /* private to transport */ + unsigned max_lacount; }; #define CTDB_NO_MEMORY(ctdb, p) do { if (!(p)) { \ @@ -115,7 +116,7 @@ struct ctdb_context { /* number of consecutive calls from the same node before we give them the record */ -#define CTDB_MAX_LACOUNT 7000 +#define CTDB_DEFAULT_MAX_LACOUNT 7 /* the extended header for records in the ltdb |