Changeset 878
- Timestamp:
- May 4, 2015, 7:21:36 PM (10 years ago)
- Location:
- trunk/server/lib/tdb
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/server/lib/tdb/common/io.c
r866 r878 102 102 // first and add the write lock afterwards 103 103 // 3. we remove the write lock further down 104 // 4. we mightadd the removed lock from step #2 again104 // 4. we add the removed lock from step #2 again 105 105 int upgradeLockRC = 0; 106 106 int unlockRC = -1; 107 107 upgradeLockRC = tdb_brlock(tdb, F_WRLCK, off, len, TDB_LOCK_NOWAIT); 108 108 if (upgradeLockRC != 0) { 109 unlockRC = tdb_brunlock(tdb, F_RDLCK, off, len);109 unlockRC = tdb_brunlock(tdb, F_RDLCK, off, 1); 110 110 upgradeLockRC = tdb_brlock(tdb, F_WRLCK, off, len, TDB_LOCK_NOWAIT); 111 111 } … … 144 144 if (upgradeLockRC == 0) 145 145 tdb_brunlock( tdb, F_WRLCK, off, len); 146 if (unlockRC == 0) 147 tdb_brlock( tdb, F_RDLCK, off, 1, TDB_LOCK_WAIT); 146 148 #endif 147 149 return -1; … … 151 153 if (upgradeLockRC == 0) 152 154 tdb_brunlock( tdb, F_WRLCK, off, len); 155 if (unlockRC == 0) 156 tdb_brlock( tdb, F_RDLCK, off, 1, TDB_LOCK_WAIT); 153 157 #endif 154 158 return 0; -
trunk/server/lib/tdb/common/lock.c
r862 r878 41 41 fl.l_whence = SEEK_SET; 42 42 fl.l_start = off; 43 #ifdef __OS2__44 fl.l_len = len ? len:LONG_MAX;45 #else46 43 fl.l_len = len; 47 #endif48 44 fl.l_pid = 0; 49 45 … … 71 67 if (rc == 0) { 72 68 fl.l_start = off + tdb->header.hash_size * 4; 73 fl.l_len = LONG_MAX;69 fl.l_len = 0; 74 70 rc = fcntl(lockFile, cmd, &fl); 75 71 } 76 72 } 77 73 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())); 80 76 81 77 return rc; … … 152 148 fl.l_whence = SEEK_SET; 153 149 fl.l_start = off; 154 #ifdef __OS2__155 fl.l_len = len ? len:LONG_MAX;156 #else157 150 fl.l_len = len; 158 #endif159 151 fl.l_pid = 0; 160 152 … … 176 168 if (rc == 0) { 177 169 fl.l_start = off + tdb->header.hash_size * 4; 178 fl.l_len = LONG_MAX;170 fl.l_len = 0; 179 171 rc = fcntl(lockFile, F_SETLKW, &fl); 180 172 } 181 173 } 182 174 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())); 185 177 186 178 return rc; -
trunk/server/lib/tdb/tools/tdbtorture.c
r877 r878 249 249 250 250 for (;loopnum<num_loops && error_count == 0;loopnum++) { 251 printf("loop %i\n", loopnum); 251 252 addrec_db(); 252 253 }
Note:
See TracChangeset
for help on using the changeset viewer.