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:
parent
b78c282a91
commit
4caf48ecb3
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user