lib: Make ctdbd_traverse return 0/errno
authorVolker Lendecke <vl@samba.org>
Sat, 3 Oct 2015 03:42:05 +0000 (20:42 -0700)
committerJeremy Allison <jra@samba.org>
Wed, 7 Oct 2015 21:54:06 +0000 (23:54 +0200)
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/include/ctdbd_conn.h
source3/lib/ctdbd_conn.c
source3/lib/dbwrap/dbwrap_ctdb.c

index c2a693995d6e2923d9d3ffb906c176d5f0252112..de3ab46af2803968e3572fda3e151f48fde2f552 100644 (file)
@@ -62,10 +62,10 @@ 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,
-                       void (*fn)(TDB_DATA key, TDB_DATA data,
-                                  void *private_data),
-                       void *private_data);
+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);
 
 NTSTATUS ctdbd_register_ips(struct ctdbd_connection *conn,
                            const struct sockaddr_storage *server,
index ac2c56d22af053b4535e4fc5343f02ee712cd35e..fb812a3c32ef1bca4daf110d7f110445520a0670 100644 (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;
 }
 
 /*
index c90e59bc4806a2a5d68389311c93b78db5ef69e2..914ca4fdc8dff22c941db6ddb1171152937c667e 100644 (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,
-                               traverse_callback, &state);
-       if (!NT_STATUS_IS_OK(status)) {
+       ret = ctdbd_traverse(messaging_ctdbd_connection(), ctx->db_id,
+                            traverse_callback, &state);
+       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,
-                               traverse_read_callback, &state);
-       if (!NT_STATUS_IS_OK(status)) {
+       ret = ctdbd_traverse(messaging_ctdbd_connection(), ctx->db_id,
+                            traverse_read_callback, &state);
+       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) {