mirror of
https://github.com/samba-team/samba.git
synced 2024-12-22 13:34:15 +03:00
ReadOnly: Add an extra flag to ctdb_call_local to specify whether we want to write the record and header back to the tdb (for example we do when performing dmaster migrations)
(This used to be ctdb commit b935e83255aeb3754b2fd37cf5611e02f7283514)
This commit is contained in:
parent
b01dc029ca
commit
3d495c48d2
@ -72,7 +72,7 @@ struct ctdb_req_header *_ctdbd_allocate_pkt(struct ctdb_context *ctdb,
|
||||
*/
|
||||
int ctdb_call_local(struct ctdb_db_context *ctdb_db, struct ctdb_call *call,
|
||||
struct ctdb_ltdb_header *header, TALLOC_CTX *mem_ctx,
|
||||
TDB_DATA *data)
|
||||
TDB_DATA *data, bool updatetdb)
|
||||
{
|
||||
struct ctdb_call_info *c;
|
||||
struct ctdb_registered_call *fn;
|
||||
@ -111,7 +111,7 @@ int ctdb_call_local(struct ctdb_db_context *ctdb_db, struct ctdb_call *call,
|
||||
c->new_data = &c->record_data;
|
||||
}
|
||||
|
||||
if (c->new_data) {
|
||||
if (c->new_data && updatetdb) {
|
||||
/* XXX check that we always have the lock here? */
|
||||
if (ctdb_ltdb_store(ctdb_db, call->key, header, *c->new_data) != 0) {
|
||||
ctdb_set_error(ctdb, "ctdb_call tdb_store failed\n");
|
||||
@ -346,7 +346,7 @@ int ctdb_call_recv(struct ctdb_client_call_state *state, struct ctdb_call *call)
|
||||
call->status = state->call->status;
|
||||
talloc_free(state);
|
||||
|
||||
return 0;
|
||||
return call->status;
|
||||
}
|
||||
|
||||
|
||||
@ -387,7 +387,7 @@ static struct ctdb_client_call_state *ctdb_client_call_local_send(struct ctdb_db
|
||||
*(state->call) = *call;
|
||||
state->ctdb_db = ctdb_db;
|
||||
|
||||
ret = ctdb_call_local(ctdb_db, state->call, header, state, data);
|
||||
ret = ctdb_call_local(ctdb_db, state->call, header, state, data, true);
|
||||
|
||||
return state;
|
||||
}
|
||||
|
@ -791,7 +791,7 @@ struct ctdb_call_state *ctdb_daemon_call_send_remote(struct ctdb_db_context *ctd
|
||||
|
||||
int ctdb_call_local(struct ctdb_db_context *ctdb_db, struct ctdb_call *call,
|
||||
struct ctdb_ltdb_header *header, TALLOC_CTX *mem_ctx,
|
||||
TDB_DATA *data);
|
||||
TDB_DATA *data, bool updatetdb);
|
||||
|
||||
#define ctdb_reqid_find(ctdb, reqid, type) (type *)_ctdb_reqid_find(ctdb, reqid, #type, __location__)
|
||||
|
||||
|
@ -339,7 +339,7 @@ static void ctdb_become_dmaster(struct ctdb_db_context *ctdb_db,
|
||||
return;
|
||||
}
|
||||
|
||||
ctdb_call_local(ctdb_db, state->call, &header, state, &data);
|
||||
ctdb_call_local(ctdb_db, state->call, &header, state, &data, true);
|
||||
|
||||
ret = ctdb_ltdb_unlock(ctdb_db, state->call->key);
|
||||
if (ret != 0) {
|
||||
@ -543,7 +543,11 @@ void ctdb_request_call(struct ctdb_context *ctdb, struct ctdb_req_header *hdr)
|
||||
}
|
||||
}
|
||||
|
||||
ctdb_call_local(ctdb_db, call, &header, hdr, &data);
|
||||
ret = ctdb_call_local(ctdb_db, call, &header, hdr, &data, true);
|
||||
if (ret != 0) {
|
||||
DEBUG(DEBUG_ERR,(__location__ " ctdb_call_local failed\n"));
|
||||
call->status = -1;
|
||||
}
|
||||
|
||||
ret = ctdb_ltdb_unlock(ctdb_db, call->key);
|
||||
if (ret != 0) {
|
||||
@ -766,7 +770,7 @@ struct ctdb_call_state *ctdb_call_local_send(struct ctdb_db_context *ctdb_db,
|
||||
*(state->call) = *call;
|
||||
state->ctdb_db = ctdb_db;
|
||||
|
||||
ret = ctdb_call_local(ctdb_db, state->call, header, state, data);
|
||||
ret = ctdb_call_local(ctdb_db, state->call, header, state, data, true);
|
||||
|
||||
event_add_timed(ctdb->ev, state, timeval_zero(), call_local_trigger, state);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user