mirror of
https://github.com/samba-team/samba.git
synced 2024-12-23 17:34:34 +03:00
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 45f5c272f3
)
This commit is contained in:
parent
864e228f50
commit
faf800d871
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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) {
|
||||
|
@ -58,6 +58,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
|
||||
*/
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user