s3:dbwrap: change dbwrap_change_uint32_atomic() to return NTSTATUS not uint32_t.
authorMichael Adam <obnox@samba.org>
Wed, 29 Jul 2009 12:16:11 +0000 (14:16 +0200)
committerMichael Adam <obnox@samba.org>
Wed, 29 Jul 2009 14:26:21 +0000 (16:26 +0200)
Michael

source3/include/proto.h
source3/lib/dbwrap_util.c
source3/passdb/pdb_tdb.c
source3/winbindd/idmap_tdb.c
source3/winbindd/idmap_tdb2.c

index 697051ceea7e052c95b2fa2e3787480f95ad3233..ebeb5658f2ad38bda472fa754e8b6e6120b89c8e 100644 (file)
@@ -440,7 +440,7 @@ int dbwrap_store_int32(struct db_context *db, const char *keystr, int32_t v);
 bool dbwrap_fetch_uint32(struct db_context *db, const char *keystr,
                         uint32_t *val);
 int dbwrap_store_uint32(struct db_context *db, const char *keystr, uint32_t v);
 bool dbwrap_fetch_uint32(struct db_context *db, const char *keystr,
                         uint32_t *val);
 int dbwrap_store_uint32(struct db_context *db, const char *keystr, uint32_t v);
-uint32_t dbwrap_change_uint32_atomic(struct db_context *db, const char *keystr,
+NTSTATUS dbwrap_change_uint32_atomic(struct db_context *db, const char *keystr,
                                     uint32_t *oldval, uint32_t change_val);
 int32 dbwrap_change_int32_atomic(struct db_context *db, const char *keystr,
                                 int32 *oldval, int32 change_val);
                                     uint32_t *oldval, uint32_t change_val);
 int32 dbwrap_change_int32_atomic(struct db_context *db, const char *keystr,
                                 int32 *oldval, int32 change_val);
index c3ab93c4df5e557e39bcaf139d3afef159a50212..5e02d47290592bca6872affe9b949f91da5e662c 100644 (file)
@@ -106,16 +106,17 @@ int dbwrap_store_uint32(struct db_context *db, const char *keystr, uint32_t v)
  * return old value in *oldval.
  * store *oldval + change_val to db.
  */
  * return old value in *oldval.
  * store *oldval + change_val to db.
  */
-uint32_t dbwrap_change_uint32_atomic(struct db_context *db, const char *keystr,
+NTSTATUS dbwrap_change_uint32_atomic(struct db_context *db, const char *keystr,
                                     uint32_t *oldval, uint32_t change_val)
 {
        struct db_record *rec;
        uint32 val = -1;
        TDB_DATA data;
                                     uint32_t *oldval, uint32_t change_val)
 {
        struct db_record *rec;
        uint32 val = -1;
        TDB_DATA data;
+       NTSTATUS ret;
 
        if (!(rec = db->fetch_locked(db, NULL,
                                     string_term_tdb_data(keystr)))) {
 
        if (!(rec = db->fetch_locked(db, NULL,
                                     string_term_tdb_data(keystr)))) {
-               return -1;
+               return NT_STATUS_UNSUCCESSFUL;
        }
 
        if (rec->value.dptr == NULL) {
        }
 
        if (rec->value.dptr == NULL) {
@@ -124,7 +125,7 @@ uint32_t dbwrap_change_uint32_atomic(struct db_context *db, const char *keystr,
                val = IVAL(rec->value.dptr, 0);
                *oldval = val;
        } else {
                val = IVAL(rec->value.dptr, 0);
                *oldval = val;
        } else {
-               return -1;
+               return NT_STATUS_UNSUCCESSFUL;
        }
 
        val += change_val;
        }
 
        val += change_val;
@@ -132,11 +133,11 @@ uint32_t dbwrap_change_uint32_atomic(struct db_context *db, const char *keystr,
        data.dsize = sizeof(val);
        data.dptr = (uint8 *)&val;
 
        data.dsize = sizeof(val);
        data.dptr = (uint8 *)&val;
 
-       rec->store(rec, data, TDB_REPLACE);
+       ret = rec->store(rec, data, TDB_REPLACE);
 
        TALLOC_FREE(rec);
 
 
        TALLOC_FREE(rec);
 
-       return 0;
+       return ret;
 }
 
 /**
 }
 
 /**
index 4d2a1d830a63aa78cc36c8b26698d8097eb34ee8..e32711ec45b0f0bf4771709675a98aed6b720571 100644 (file)
@@ -1074,6 +1074,7 @@ static uint32_t tdbsam_capabilities(struct pdb_methods *methods)
 static bool tdbsam_new_rid(struct pdb_methods *methods, uint32 *prid)
 {
        uint32 rid;
 static bool tdbsam_new_rid(struct pdb_methods *methods, uint32 *prid)
 {
        uint32 rid;
+       NTSTATUS status;
 
        rid = BASE_RID;         /* Default if not set */
 
 
        rid = BASE_RID;         /* Default if not set */
 
@@ -1083,9 +1084,10 @@ static bool tdbsam_new_rid(struct pdb_methods *methods, uint32 *prid)
                return false;
        }
 
                return false;
        }
 
-       if (dbwrap_change_uint32_atomic(db_sam, NEXT_RID_STRING, &rid, 1) != 0) {
-               DEBUG(3, ("tdbsam_new_rid: Failed to increase %s\n",
-                       NEXT_RID_STRING));
+       status = dbwrap_change_uint32_atomic(db_sam, NEXT_RID_STRING, &rid, 1);
+       if (!NT_STATUS_IS_OK(status)) {
+               DEBUG(3, ("tdbsam_new_rid: Failed to increase %s: %s\n",
+                       NEXT_RID_STRING, nt_errstr(status)));
                return false;
        }
 
                return false;
        }
 
index c42cd74cbeed529eef266d2cf2eeca98946e4735..ce7b6aa532f3dbb0daffecd42ac5b39237f5ed64 100644 (file)
@@ -401,7 +401,7 @@ static NTSTATUS idmap_tdb_alloc_init( const char *params )
 
 static NTSTATUS idmap_tdb_allocate_id(struct unixid *xid)
 {
 
 static NTSTATUS idmap_tdb_allocate_id(struct unixid *xid)
 {
-       bool ret;
+       NTSTATUS ret;
        const char *hwmkey;
        const char *hwmtype;
        uint32_t high_hwm;
        const char *hwmkey;
        const char *hwmtype;
        uint32_t high_hwm;
@@ -449,10 +449,11 @@ static NTSTATUS idmap_tdb_allocate_id(struct unixid *xid)
 
        /* fetch a new id and increment it */
        ret = dbwrap_change_uint32_atomic(idmap_alloc_db, hwmkey, &hwm, 1);
 
        /* fetch a new id and increment it */
        ret = dbwrap_change_uint32_atomic(idmap_alloc_db, hwmkey, &hwm, 1);
-       if (ret != 0) {
-               DEBUG(0, ("Fatal error while fetching a new %s value\n!", hwmtype));
+       if (!NT_STATUS_IS_OK(ret)) {
+               DEBUG(0, ("Fatal error while fetching a new %s value: %s\n!",
+                         hwmtype, nt_errstr(ret)));
                idmap_alloc_db->transaction_cancel(idmap_alloc_db);
                idmap_alloc_db->transaction_cancel(idmap_alloc_db);
-               return NT_STATUS_UNSUCCESSFUL;
+               return ret;
        }
 
        /* recheck it is in the range */
        }
 
        /* recheck it is in the range */
index 92e1db8460e03d973dc8fc6fc1915bb69b010fd7..8178fa00806ce33868fb66718d64730beb5c47f9 100644 (file)
@@ -205,7 +205,6 @@ static NTSTATUS idmap_tdb2_allocate_id_action(struct db_context *db,
                                              void *private_data)
 {
        NTSTATUS ret;
                                              void *private_data)
 {
        NTSTATUS ret;
-       uint32_t res;
        struct idmap_tdb2_allocate_id_context *state;
        uint32_t hwm;
 
        struct idmap_tdb2_allocate_id_context *state;
        uint32_t hwm;
 
@@ -226,11 +225,10 @@ static NTSTATUS idmap_tdb2_allocate_id_action(struct db_context *db,
        }
 
        /* fetch a new id and increment it */
        }
 
        /* fetch a new id and increment it */
-       res = dbwrap_change_uint32_atomic(db, state->hwmkey, &hwm, 1);
-       if (res == -1) {
+       ret = dbwrap_change_uint32_atomic(db, state->hwmkey, &hwm, 1);
+       if (!NT_STATUS_IS_OK(ret)) {
                DEBUG(1, ("Fatal error while fetching a new %s value\n!",
                          state->hwmtype));
                DEBUG(1, ("Fatal error while fetching a new %s value\n!",
                          state->hwmtype));
-               ret = NT_STATUS_UNSUCCESSFUL;
                goto done;
        }
 
                goto done;
        }