r15101: Little step towards getting Samba4 tdb into 3: tdb_lock_bystring does not
authorVolker Lendecke <vlendec@samba.org>
Mon, 17 Apr 2006 11:49:06 +0000 (11:49 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 16:16:23 +0000 (11:16 -0500)
have the timeout argument in Samba4. Add a new routine
tdb_lock_bystring_with_timeout.

Volker

12 files changed:
source/groupdb/mapping.c
source/lib/account_pol.c
source/lib/gencache.c
source/lib/sharesec.c
source/passdb/pdb_tdb.c
source/passdb/secrets.c
source/printing/notify.c
source/printing/nt_printing.c
source/printing/printing.c
source/rpc_server/srv_eventlog_lib.c
source/rpc_server/srv_eventlog_nt.c
source/tdb/tdbutil.c

index 5569dbf4ed5f116930b341c71a2e8bab47345677..c701ef165dd4e0c856e388ebdf44eb9cce8e7400 100644 (file)
@@ -63,7 +63,7 @@ static BOOL init_group_mapping(void)
        }
 
        /* handle a Samba upgrade */
-       tdb_lock_bystring(tdb, vstring, 0);
+       tdb_lock_bystring(tdb, vstring);
 
        /* Cope with byte-reversed older versions of the db. */
        vers_id = tdb_fetch_int32(tdb, vstring);
index 0694b1c3f880fe17f8837a720bb0e14bb31fd8a3..6bf7346fe7f0763e441da70118e4e39c5a8947e0 100644 (file)
@@ -269,7 +269,7 @@ BOOL init_account_policy(void)
        }
 
        /* handle a Samba upgrade */
-       tdb_lock_bystring(tdb, vstring,0);
+       tdb_lock_bystring(tdb, vstring);
        if (!tdb_fetch_uint32(tdb, vstring, &version) || version != DATABASE_VERSION) {
 
                tdb_store_uint32(tdb, vstring, DATABASE_VERSION);
index 89badcd4f97dddef8994c937b155f459c39d5de0..6725ed4c12058c275f57728f07d21f55e314062c 100644 (file)
@@ -372,7 +372,7 @@ int gencache_lock_entry( const char *key )
        if (!gencache_init())
                return -1;
        
-       return tdb_lock_bystring(cache, key, 0);
+       return tdb_lock_bystring(cache, key);
 }
 
 /********************************************************************
index b98e304582a3e4b6dbb34848be4a9f69197bacd4..8105d5c37a6cd25c61154b4c84305b3565c68703 100644 (file)
@@ -55,7 +55,7 @@ BOOL share_info_db_init(void)
        }
  
        /* handle a Samba upgrade */
-       tdb_lock_bystring(share_tdb, vstring, 0);
+       tdb_lock_bystring(share_tdb, vstring);
 
        /* Cope with byte-reversed older versions of the db. */
        vers_id = tdb_fetch_int32(share_tdb, vstring);
index 94ae32881238cc5c6f4a3fdd1e51b177427b3a8a..ba8124d3923896ba2c857e3272f54fd231edf207 100644 (file)
@@ -694,7 +694,7 @@ static BOOL tdbsam_convert(int32 from)
        BOOL            ret;
 
        /* handle a Samba upgrade */
-       tdb_lock_bystring(tdbsam, vstring, 0);
+       tdb_lock_bystring(tdbsam, vstring);
        
        /* Enumerate all records and convert them */
        key = tdb_firstkey(tdbsam);
@@ -1420,7 +1420,7 @@ static NTSTATUS tdbsam_rename_sam_account(struct pdb_methods *my_methods,
        
        interim_account = True;
 
-       if ( tdb_lock_bystring(tdbsam, newname, 30) == -1 ) {
+       if ( tdb_lock_bystring_with_timeout(tdbsam, newname, 30) == -1 ) {
                goto done;
        }
 
@@ -1492,7 +1492,7 @@ static BOOL init_idmap_tdb(TDB_CONTEXT *tdb)
 {
        int32 version;
 
-       if (tdb_lock_bystring(tdb, "IDMAP_VERSION", 0) != 0) {
+       if (tdb_lock_bystring(tdb, "IDMAP_VERSION") != 0) {
                DEBUG(0, ("Could not lock IDMAP_VERSION\n"));
                return False;
        }
index a288e7d169d7f8a03840eacc38b54c174688b182..32793dea58650bc5d1096e2fab29f0f451cbaa9b 100644 (file)
@@ -245,7 +245,7 @@ BOOL secrets_lock_trust_account_password(const char *domain, BOOL dolock)
                return False;
 
        if (dolock)
-               return (tdb_lock_bystring(tdb, trust_keystr(domain),0) == 0);
+               return (tdb_lock_bystring(tdb, trust_keystr(domain)) == 0);
        else
                tdb_unlock_bystring(tdb, trust_keystr(domain));
        return True;
@@ -774,7 +774,7 @@ BOOL secrets_named_mutex(const char *name, unsigned int timeout)
        if (!secrets_init())
                return False;
 
-       ret = tdb_lock_bystring(tdb, name, timeout);
+       ret = tdb_lock_bystring_with_timeout(tdb, name, timeout);
        if (ret == 0)
                DEBUG(10,("secrets_named_mutex: got mutex for %s\n", name ));
 
index e71d9e6f259020e22601284d09fe854bb9498bfb..f27eb2011ff4dab8dee6c013a741466180be5853 100644 (file)
@@ -520,7 +520,7 @@ BOOL print_notify_pid_list(const char *printername, TALLOC_CTX *mem_ctx, size_t
                return False;
        tdb = pdb->tdb;
 
-       if (tdb_read_lock_bystring(tdb, NOTIFY_PID_LIST_KEY, 10) == -1) {
+       if (tdb_read_lock_bystring_with_timeout(tdb, NOTIFY_PID_LIST_KEY, 10) == -1) {
                DEBUG(0,("print_notify_pid_list: Failed to lock printer %s database\n",
                                        printername));
                if (pdb)
index 727d226e2a5a7f34e2326f17f74ea12aa1518067..1a664fbb34eb1e51fbcbe3beb15e84adf08cfeda 100644 (file)
@@ -673,7 +673,7 @@ uint32 update_c_setprinter(BOOL initialize)
        int32 c_setprinter;
        int32 printer_count = 0;
  
-       tdb_lock_bystring(tdb_printers, GLOBAL_C_SETPRINTER, 0);
+       tdb_lock_bystring(tdb_printers, GLOBAL_C_SETPRINTER);
  
        /* Traverse the tdb, counting the printers */
        tdb_traverse(tdb_printers, traverse_counting_printers, (void *)&printer_count);
index d9acd2de725261cf151f4fc74bd677cc7d4348e5..b131727f8a45d54ac6a1e2e965b6ee5d60260703 100644 (file)
@@ -197,7 +197,7 @@ BOOL print_backend_init(void)
                pdb = get_print_db_byname(lp_const_servicename(snum));
                if (!pdb)
                        continue;
-               if (tdb_lock_bystring(pdb->tdb, sversion, 0) == -1) {
+               if (tdb_lock_bystring(pdb->tdb, sversion) == -1) {
                        DEBUG(0,("print_backend_init: Failed to open printer %s database\n", lp_const_servicename(snum) ));
                        release_print_db(pdb);
                        return False;
@@ -1291,7 +1291,7 @@ static void print_queue_update_with_lock( const char *sharename,
 
        slprintf(keystr, sizeof(keystr) - 1, "LOCK/%s", sharename);
        /* Only wait 10 seconds for this. */
-       if (tdb_lock_bystring(pdb->tdb, keystr, 10) == -1) {
+       if (tdb_lock_bystring_with_timeout(pdb->tdb, keystr, 10) == -1) {
                DEBUG(0,("print_queue_update_with_lock: Failed to lock printer %s database\n", sharename));
                release_print_db(pdb);
                return;
@@ -1563,7 +1563,7 @@ BOOL print_notify_register_pid(int snum)
                tdb = pdb->tdb;
        }
 
-       if (tdb_lock_bystring(tdb, NOTIFY_PID_LIST_KEY, 10) == -1) {
+       if (tdb_lock_bystring_with_timeout(tdb, NOTIFY_PID_LIST_KEY, 10) == -1) {
                DEBUG(0,("print_notify_register_pid: Failed to lock printer %s\n",
                                        printername));
                if (pdb)
@@ -1653,7 +1653,7 @@ BOOL print_notify_deregister_pid(int snum)
                tdb = pdb->tdb;
        }
 
-       if (tdb_lock_bystring(tdb, NOTIFY_PID_LIST_KEY, 10) == -1) {
+       if (tdb_lock_bystring_with_timeout(tdb, NOTIFY_PID_LIST_KEY, 10) == -1) {
                DEBUG(0,("print_notify_register_pid: Failed to lock \
 printer %s database\n", printername));
                if (pdb)
@@ -2205,7 +2205,7 @@ static BOOL allocate_print_jobid(struct tdb_print_db *pdb, int snum, const char
 
        for (i = 0; i < 3; i++) {
                /* Lock the database - only wait 20 seconds. */
-               if (tdb_lock_bystring(pdb->tdb, "INFO/nextjob", 20) == -1) {
+               if (tdb_lock_bystring_with_timeout(pdb->tdb, "INFO/nextjob", 20) == -1) {
                        DEBUG(0,("allocate_print_jobid: failed to lock printing database %s\n", sharename));
                        return False;
                }
index b3d94901bacd595b929b5dd099b58742e91c5dd0..acae1c94e9a2920bcaf18cd9f35c2fdec25ec91b 100644 (file)
@@ -163,7 +163,7 @@ BOOL make_way_for_eventlogs( TDB_CONTEXT * the_tdb, int32 needed,
        if ( mem_ctx == NULL )
                return False;   /* can't allocate memory indicates bigger problems */
        /* lock */
-       tdb_lock_bystring( the_tdb, EVT_NEXT_RECORD, 1 );
+       tdb_lock_bystring_with_timeout( the_tdb, EVT_NEXT_RECORD, 1 );
        /* read */
        end_record = tdb_fetch_int32( the_tdb, EVT_NEXT_RECORD );
        start_record = tdb_fetch_int32( the_tdb, EVT_OLDEST_ENTRY );
@@ -489,7 +489,7 @@ int write_eventlog_tdb( TDB_CONTEXT * the_tdb, Eventlog_entry * ee )
        /* need to read the record number and insert it into the entry here */
 
        /* lock */
-       tdb_lock_bystring( the_tdb, EVT_NEXT_RECORD, 1 );
+       tdb_lock_bystring_with_timeout( the_tdb, EVT_NEXT_RECORD, 1 );
        /* read */
        next_record = tdb_fetch_int32( the_tdb, EVT_NEXT_RECORD );
 
index a8b9c66717e75929a9288a632ea1d42c275200be..284ee37348e85c399aad816caf8197df7cde9481 100644 (file)
@@ -146,7 +146,7 @@ static BOOL get_num_records_hook( EVENTLOG_INFO * info )
 
        /* lock the tdb since we have to get 2 records */
 
-       tdb_lock_bystring( ELOG_TDB_CTX(info->etdb), EVT_NEXT_RECORD, 1 );
+       tdb_lock_bystring_with_timeout( ELOG_TDB_CTX(info->etdb), EVT_NEXT_RECORD, 1 );
        next_record = tdb_fetch_int32( ELOG_TDB_CTX(info->etdb), EVT_NEXT_RECORD);
        oldest_record = tdb_fetch_int32( ELOG_TDB_CTX(info->etdb), EVT_OLDEST_ENTRY);
        tdb_unlock_bystring( ELOG_TDB_CTX(info->etdb), EVT_NEXT_RECORD);
index 09baff072f7758580be3373b3a8f0e5fd8e1c3b5..f1809229f8c2707472f13528bd9e3476b4b2c9cd 100644 (file)
@@ -104,11 +104,19 @@ int tdb_chainlock_with_timeout( TDB_CONTEXT *tdb, TDB_DATA key, unsigned int tim
  Lock a chain by string. Return -1 if timeout or lock failed.
 ****************************************************************************/
 
-int tdb_lock_bystring(TDB_CONTEXT *tdb, const char *keyval, unsigned int timeout)
+int tdb_lock_bystring(TDB_CONTEXT *tdb, const char *keyval)
 {
        TDB_DATA key = make_tdb_data(keyval, strlen(keyval)+1);
        
-       return tdb_chainlock_with_timeout_internal(tdb, key, timeout, F_WRLCK);
+       return tdb_chainlock(tdb, key);
+}
+
+int tdb_lock_bystring_with_timeout(TDB_CONTEXT *tdb, const char *keyval,
+                                  int timeout)
+{
+       TDB_DATA key = make_tdb_data(keyval, strlen(keyval)+1);
+       
+       return tdb_chainlock_with_timeout(tdb, key, timeout);
 }
 
 /****************************************************************************
@@ -126,7 +134,7 @@ void tdb_unlock_bystring(TDB_CONTEXT *tdb, const char *keyval)
  Read lock a chain by string. Return -1 if timeout or lock failed.
 ****************************************************************************/
 
-int tdb_read_lock_bystring(TDB_CONTEXT *tdb, const char *keyval, unsigned int timeout)
+int tdb_read_lock_bystring_with_timeout(TDB_CONTEXT *tdb, const char *keyval, unsigned int timeout)
 {
        TDB_DATA key = make_tdb_data(keyval, strlen(keyval)+1);
        
@@ -311,7 +319,7 @@ int32 tdb_change_int32_atomic(TDB_CONTEXT *tdb, const char *keystr, int32 *oldva
        int32 val;
        int32 ret = -1;
 
-       if (tdb_lock_bystring(tdb, keystr,0) == -1)
+       if (tdb_lock_bystring(tdb, keystr) == -1)
                return -1;
 
        if ((val = tdb_fetch_int32(tdb, keystr)) == -1) {
@@ -352,7 +360,7 @@ BOOL tdb_change_uint32_atomic(TDB_CONTEXT *tdb, const char *keystr, uint32 *oldv
        uint32 val;
        BOOL ret = False;
 
-       if (tdb_lock_bystring(tdb, keystr,0) == -1)
+       if (tdb_lock_bystring(tdb, keystr) == -1)
                return False;
 
        if (!tdb_fetch_uint32(tdb, keystr, &val)) {