1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-26 21:57:41 +03:00

lib: Make ctdbd_traverse return 0/errno

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
This commit is contained in:
Volker Lendecke 2015-10-02 20:42:05 -07:00 committed by Jeremy Allison
parent b78c282a91
commit 4caf48ecb3
3 changed files with 24 additions and 28 deletions

View File

@ -62,7 +62,7 @@ int ctdbd_parse(struct ctdbd_connection *conn, uint32_t db_id,
void *private_data),
void *private_data);
NTSTATUS ctdbd_traverse(struct ctdbd_connection *master, uint32_t db_id,
int ctdbd_traverse(struct ctdbd_connection *master, uint32_t db_id,
void (*fn)(TDB_DATA key, TDB_DATA data,
void *private_data),
void *private_data);

View File

@ -1015,7 +1015,6 @@ int ctdbd_parse(struct ctdbd_connection *conn, uint32_t db_id,
ret = ctdb_read_req(conn, req.hdr.reqid, NULL, &hdr);
if (ret != 0) {
DEBUG(10, ("ctdb_read_req failed: %s\n", strerror(ret)));
status = map_nt_error_from_unix(ret);
goto fail;
}
@ -1049,13 +1048,12 @@ int ctdbd_parse(struct ctdbd_connection *conn, uint32_t db_id,
everything in-line.
*/
NTSTATUS ctdbd_traverse(struct ctdbd_connection *master, uint32_t db_id,
int ctdbd_traverse(struct ctdbd_connection *master, uint32_t db_id,
void (*fn)(TDB_DATA key, TDB_DATA data,
void *private_data),
void *private_data)
{
struct ctdbd_connection *conn;
NTSTATUS status;
int ret;
TDB_DATA key, data;
struct ctdb_traverse_start t;
@ -1068,7 +1066,7 @@ NTSTATUS ctdbd_traverse(struct ctdbd_connection *master, uint32_t db_id,
if (ret != 0) {
DEBUG(0, ("ctdbd_init_connection failed: %s\n",
strerror(ret)));
return map_nt_error_from_unix(ret);
return ret;
}
t.db_id = db_id;
@ -1083,19 +1081,17 @@ NTSTATUS ctdbd_traverse(struct ctdbd_connection *master, uint32_t db_id,
0, data, NULL, NULL, &cstatus);
if ((ret != 0) || (cstatus != 0)) {
status = map_nt_error_from_unix(ret);
DEBUG(0,("ctdbd_control failed: %s, %d\n", strerror(ret),
cstatus));
if (NT_STATUS_IS_OK(status)) {
if (ret == 0) {
/*
* We need a mapping here
*/
status = NT_STATUS_UNSUCCESSFUL;
ret = EIO;
}
TALLOC_FREE(conn);
return status;
return ret;
}
while (True) {
@ -1114,7 +1110,7 @@ NTSTATUS ctdbd_traverse(struct ctdbd_connection *master, uint32_t db_id,
DEBUG(0, ("Got operation %u, expected a message\n",
(unsigned)hdr->operation));
TALLOC_FREE(conn);
return NT_STATUS_UNEXPECTED_IO_ERROR;
return EIO;
}
m = (struct ctdb_req_message *)hdr;
@ -1123,7 +1119,7 @@ NTSTATUS ctdbd_traverse(struct ctdbd_connection *master, uint32_t db_id,
DEBUG(0, ("Got invalid traverse data of length %d\n",
(int)m->datalen));
TALLOC_FREE(conn);
return NT_STATUS_UNEXPECTED_IO_ERROR;
return EIO;
}
key.dsize = d->keylen;
@ -1134,14 +1130,14 @@ NTSTATUS ctdbd_traverse(struct ctdbd_connection *master, uint32_t db_id,
if (key.dsize == 0 && data.dsize == 0) {
/* end of traverse */
TALLOC_FREE(conn);
return NT_STATUS_OK;
return 0;
}
if (data.dsize < sizeof(struct ctdb_ltdb_header)) {
DEBUG(0, ("Got invalid ltdb header length %d\n",
(int)data.dsize));
TALLOC_FREE(conn);
return NT_STATUS_UNEXPECTED_IO_ERROR;
return EIO;
}
data.dsize -= sizeof(struct ctdb_ltdb_header);
data.dptr += sizeof(struct ctdb_ltdb_header);
@ -1150,7 +1146,7 @@ NTSTATUS ctdbd_traverse(struct ctdbd_connection *master, uint32_t db_id,
fn(key, data, private_data);
}
}
return NT_STATUS_OK;
return 0;
}
/*

View File

@ -1362,7 +1362,7 @@ static int db_ctdb_traverse(struct db_context *db,
void *private_data),
void *private_data)
{
NTSTATUS status;
int ret;
struct db_ctdb_ctx *ctx = talloc_get_type_abort(db->private_data,
struct db_ctdb_ctx);
struct traverse_state state;
@ -1374,7 +1374,6 @@ static int db_ctdb_traverse(struct db_context *db,
if (db->persistent) {
struct tdb_context *ltdb = ctx->wtdb->tdb;
int ret;
/* for persistent databases we don't need to do a ctdb traverse,
we can do a faster local traverse */
@ -1392,6 +1391,7 @@ static int db_ctdb_traverse(struct db_context *db,
struct ctdb_rec_data *rec=NULL;
int i;
int count = 0;
NTSTATUS status;
if (newkeys == NULL) {
return -1;
@ -1420,9 +1420,9 @@ static int db_ctdb_traverse(struct db_context *db,
return ret;
}
status = ctdbd_traverse(messaging_ctdbd_connection(), ctx->db_id,
ret = ctdbd_traverse(messaging_ctdbd_connection(), ctx->db_id,
traverse_callback, &state);
if (!NT_STATUS_IS_OK(status)) {
if (ret != 0) {
return -1;
}
return state.count;
@ -1494,7 +1494,7 @@ static int db_ctdb_traverse_read(struct db_context *db,
void *private_data),
void *private_data)
{
NTSTATUS status;
int ret;
struct db_ctdb_ctx *ctx = talloc_get_type_abort(db->private_data,
struct db_ctdb_ctx);
struct traverse_state state;
@ -1510,9 +1510,9 @@ static int db_ctdb_traverse_read(struct db_context *db,
return tdb_traverse_read(ctx->wtdb->tdb, traverse_persistent_callback_read, &state);
}
status = ctdbd_traverse(messaging_ctdbd_connection(), ctx->db_id,
ret = ctdbd_traverse(messaging_ctdbd_connection(), ctx->db_id,
traverse_read_callback, &state);
if (!NT_STATUS_IS_OK(status)) {
if (ret != 0) {
return -1;
}
return state.count;
@ -1658,7 +1658,7 @@ struct db_context *db_open_ctdb(TALLOC_CTX *mem_ctx,
/* honor permissions if user has specified O_CREAT */
if (open_flags & O_CREAT) {
int fd, ret;
int fd;
fd = tdb_fd(db_ctdb->wtdb->tdb);
ret = fchmod(fd, mode);
if (ret == -1) {