Rev 52: merge status code changes from samba4 ctdb in
http://samba.org/~tridge/ctdb
tridge at samba.org
tridge at samba.org
Mon Jan 29 11:30:06 GMT 2007
------------------------------------------------------------
revno: 52
revision-id: tridge at samba.org-20070129113006-nh3cfnyd3g3zuxra
parent: tridge at samba.org-20070129111116-ykmnhtzqda13o5ou
committer: Andrew Tridgell <tridge at samba.org>
branch nick: tridge
timestamp: Mon 2007-01-29 22:30:06 +1100
message:
merge status code changes from samba4 ctdb
modified:
common/ctdb_call.c ctdb_call.c-20061128065342-to93h6eejj5kon81-1
include/ctdb.h ctdb.h-20061117234101-o3qt14umlg9en8z0-11
include/ctdb_private.h ctdb_private.h-20061117234101-o3qt14umlg9en8z0-13
=== modified file 'common/ctdb_call.c'
--- a/common/ctdb_call.c 2007-01-29 11:11:16 +0000
+++ b/common/ctdb_call.c 2007-01-29 11:30:06 +0000
@@ -61,6 +61,7 @@
CTDB_NO_MEMORY(ctdb, c->record_data.dptr);
c->new_data = NULL;
c->reply_data = NULL;
+ c->status = 0;
for (fn=ctdb->calls;fn;fn=fn->next) {
if (fn->id == call->call_id) break;
@@ -101,6 +102,7 @@
call->reply_data.dptr = NULL;
call->reply_data.dsize = 0;
}
+ call->status = c->status;
talloc_free(c);
@@ -333,12 +335,15 @@
r->hdr.destnode = hdr->srcnode;
r->hdr.srcnode = hdr->destnode;
r->hdr.reqid = hdr->reqid;
+ r->status = call.status;
r->datalen = call.reply_data.dsize;
- memcpy(&r->data[0], call.reply_data.dptr, call.reply_data.dsize);
+ if (call.reply_data.dsize) {
+ memcpy(&r->data[0], call.reply_data.dptr, call.reply_data.dsize);
+ talloc_free(call.reply_data.dptr);
+ }
ctdb_queue_packet(ctdb, &r->hdr);
- talloc_free(call.reply_data.dptr);
talloc_free(r);
}
@@ -368,15 +373,13 @@
{
struct ctdb_reply_call *c = (struct ctdb_reply_call *)hdr;
struct ctdb_call_state *state;
- TDB_DATA reply_data;
state = idr_find(ctdb->idr, hdr->reqid);
if (state == NULL) return;
- reply_data.dptr = c->data;
- reply_data.dsize = c->datalen;
-
- state->call.reply_data = reply_data;
+ state->call.reply_data.dptr = c->data;
+ state->call.reply_data.dsize = c->datalen;
+ state->call.status = c->status;
talloc_steal(state, c);
@@ -594,10 +597,16 @@
talloc_free(state);
return -1;
}
- call->reply_data.dptr = talloc_memdup(state->node->ctdb,
- state->call.reply_data.dptr,
- state->call.reply_data.dsize);
- call->reply_data.dsize = state->call.reply_data.dsize;
+ if (state->call.reply_data.dsize) {
+ call->reply_data.dptr = talloc_memdup(state->node->ctdb,
+ state->call.reply_data.dptr,
+ state->call.reply_data.dsize);
+ call->reply_data.dsize = state->call.reply_data.dsize;
+ } else {
+ call->reply_data.dptr = NULL;
+ call->reply_data.dsize = 0;
+ }
+ call->status = state->call.status;
talloc_free(state);
return 0;
}
=== modified file 'include/ctdb.h'
--- a/include/ctdb.h 2007-01-25 05:13:17 +0000
+++ b/include/ctdb.h 2007-01-29 11:30:06 +0000
@@ -26,6 +26,7 @@
TDB_DATA key;
TDB_DATA call_data;
TDB_DATA reply_data;
+ uint32_t status;
};
/*
@@ -37,6 +38,7 @@
TDB_DATA *new_data; /* optionally updated record data */
TDB_DATA *call_data; /* optionally passed from caller */
TDB_DATA *reply_data; /* optionally returned by function */
+ uint32_t status; /* optional reply status - defaults to zero */
};
#define CTDB_ERR_INVALID 1
=== modified file 'include/ctdb_private.h'
--- a/include/ctdb_private.h 2007-01-25 04:10:40 +0000
+++ b/include/ctdb_private.h 2007-01-29 11:30:06 +0000
@@ -162,6 +162,7 @@
struct ctdb_reply_call {
struct ctdb_req_header hdr;
+ uint32_t status;
uint32_t datalen;
uint8_t data[1];
};
More information about the samba-cvs
mailing list