Changeset 878


Ignore:
Timestamp:
May 4, 2015, 7:21:36 PM (10 years ago)
Author:
Silvan Scherrer
Message:

Samba server 3.6: fixed some tdb problems

Location:
trunk/server/lib/tdb
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/server/lib/tdb/common/io.c

    r866 r878  
    102102        //    first and add the write lock afterwards
    103103        // 3. we remove the write lock further down
    104         // 4. we might add the removed lock from step #2 again
     104        // 4. we add the removed lock from step #2 again
    105105        int upgradeLockRC = 0;
    106106        int unlockRC = -1;
    107107        upgradeLockRC = tdb_brlock(tdb, F_WRLCK, off, len, TDB_LOCK_NOWAIT);
    108108        if (upgradeLockRC != 0) {
    109                 unlockRC = tdb_brunlock(tdb, F_RDLCK, off, len);
     109                unlockRC = tdb_brunlock(tdb, F_RDLCK, off, 1);
    110110                upgradeLockRC = tdb_brlock(tdb, F_WRLCK, off, len, TDB_LOCK_NOWAIT);
    111111        }
     
    144144                        if (upgradeLockRC == 0)
    145145                                tdb_brunlock( tdb, F_WRLCK, off, len);
     146                        if (unlockRC == 0)
     147                                tdb_brlock( tdb, F_RDLCK, off, 1, TDB_LOCK_WAIT);
    146148#endif
    147149                        return -1;
     
    151153        if (upgradeLockRC == 0)
    152154                tdb_brunlock( tdb, F_WRLCK, off, len);
     155        if (unlockRC == 0)
     156                tdb_brlock( tdb, F_RDLCK, off, 1, TDB_LOCK_WAIT);
    153157#endif
    154158        return 0;
  • trunk/server/lib/tdb/common/lock.c

    r862 r878  
    4141        fl.l_whence = SEEK_SET;
    4242        fl.l_start = off;
    43 #ifdef __OS2__
    44         fl.l_len = len ? len:LONG_MAX;
    45 #else
    4643        fl.l_len = len;
    47 #endif
    4844        fl.l_pid = 0;
    4945
     
    7167                if (rc == 0) {
    7268                        fl.l_start = off + tdb->header.hash_size * 4;
    73                         fl.l_len = LONG_MAX;
     69                        fl.l_len = 0;
    7470                        rc = fcntl(lockFile, cmd, &fl);
    7571                }
    7672        }
    7773
    78         TDB_LOG((tdb, TDB_DEBUG_TRACE,"fcntl_lock: (fd=%d) offset=%lld rw_type=%d len=%lld waitflag=%d (rc=%d)\n",
    79                 lockFile, off, rw, len, waitflag, rc));
     74        TDB_LOG((tdb, TDB_DEBUG_TRACE,"fcntl_lock: (fd=%d) offset=%lld rw_type=%d len=%lld waitflag=%d (rc=%d) pid=%d\n",
     75                lockFile, off, rw, len, waitflag, rc, getpid()));
    8076
    8177        return rc;
     
    152148        fl.l_whence = SEEK_SET;
    153149        fl.l_start = off;
    154 #ifdef __OS2__
    155         fl.l_len = len ? len:LONG_MAX;
    156 #else
    157150        fl.l_len = len;
    158 #endif
    159151        fl.l_pid = 0;
    160152
     
    176168                if (rc == 0) {
    177169                        fl.l_start = off + tdb->header.hash_size * 4;
    178                         fl.l_len = LONG_MAX;
     170                        fl.l_len = 0;
    179171                        rc = fcntl(lockFile, F_SETLKW, &fl);
    180172                }
    181173        }
    182174
    183         TDB_LOG((tdb, TDB_DEBUG_TRACE,"fcntl_unlock: (fd=%d) offset=%lld rw_type=%d len=%lld (rc=%d)\n",
    184                  lockFile, off, rw, len, rc));
     175        TDB_LOG((tdb, TDB_DEBUG_TRACE,"fcntl_unlock: (fd=%d) offset=%lld rw_type=%d len=%lld (rc=%d) pid=%d\n",
     176                 lockFile, off, rw, len, rc, getpid()));
    185177
    186178        return rc;
  • trunk/server/lib/tdb/tools/tdbtorture.c

    r877 r878  
    249249
    250250        for (;loopnum<num_loops && error_count == 0;loopnum++) {
     251                printf("loop %i\n", loopnum);
    251252                addrec_db();
    252253        }
Note: See TracChangeset for help on using the changeset viewer.