Changeset 165 for branches/samba-3.0/source/tdb/common
- Timestamp:
- Mar 11, 2009, 9:14:55 AM (16 years ago)
- Location:
- branches/samba-3.0/source/tdb/common
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/samba-3.0/source/tdb/common/io.c
r124 r165 101 101 if (tdb->map_ptr) { 102 102 memcpy(off + (char *)tdb->map_ptr, buf, len); 103 } else if (pwrite(tdb->fd, buf, len, off) != (ssize_t)len) { 104 /* Ensure ecode is set for log fn. */ 105 tdb->ecode = TDB_ERR_IO; 106 TDB_LOG((tdb, TDB_DEBUG_FATAL,"tdb_write failed at %d len=%d (%s)\n", 107 off, len, strerror(errno))); 108 } else { 109 ssize_t written = pwrite(tdb->fd, buf, len, off); 110 if ((written != (ssize_t)len) && (written != -1)) { 111 /* try once more */ 112 TDB_LOG((tdb, TDB_DEBUG_FATAL, "tdb_write: wrote only " 113 "%d of %d bytes at %d, trying once more\n", 103 } else { 104 ssize_t written = pwrite(tdb->fd, buf, len, off); 105 if ((written != (ssize_t)len) && (written != -1)) { 106 /* try once more */ 107 TDB_LOG((tdb, TDB_DEBUG_FATAL, "tdb_write: wrote only " 108 "%d of %d bytes at %d, trying once more\n", 114 109 (uint32_t)written, len, off)); 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 110 errno = ENOSPC; 111 written = pwrite(tdb->fd, (void *)((char *)buf+written), 112 len-written, 113 off+written); 114 } 115 if (written == -1) { 116 /* Ensure ecode is set for log fn. */ 117 tdb->ecode = TDB_ERR_IO; 118 TDB_LOG((tdb, TDB_DEBUG_FATAL,"tdb_write failed at %d " 119 "len=%d (%s)\n", off, len, strerror(errno))); 120 return TDB_ERRCODE(TDB_ERR_IO, -1); 121 } else if (written != (ssize_t)len) { 122 TDB_LOG((tdb, TDB_DEBUG_FATAL, "tdb_write: failed to " 123 "write %d bytes at %d in two attempts\n", 124 len, off)); 125 errno = ENOSPC; 131 126 #ifdef __OS2__ 132 127 // remove our lock … … 215 210 #ifdef HAVE_MMAP 216 211 if (tdb->map_ptr) { 217 int ret = munmap(tdb->map_ptr, tdb->map_size); 212 int ret; 213 214 ret = munmap(tdb->map_ptr, tdb->map_size); 218 215 if (ret != 0) 219 216 return ret; -
branches/samba-3.0/source/tdb/common/open.c
r62 r165 364 364 * do with disk files, and resume here by releasing their 365 365 * global lock and hooking into the active list. */ 366 #ifndef __OS2__ 367 if (tdb->methods->tdb_brlock(tdb, GLOBAL_LOCK, F_UNLCK, F_SETLKW, 0, 1) == -1) 368 goto fail; 369 #endif 366 370 tdb->next = tdbs; 367 371 tdbs = tdb; … … 370 374 fail: 371 375 { int save_errno = errno; 372 tdb->methods->tdb_brlock(tdb, GLOBAL_LOCK, F_UNLCK, F_SETLKW, 0, 1);373 376 374 377 if (!tdb) … … 555 558 if ((tdb->flags & TDB_CLEAR_IF_FIRST) && 556 559 (tdb->methods->tdb_brlock(tdb, ACTIVE_LOCK, F_RDLCK, F_SETLKW, 0, 1) == -1)) { 557 // YD sem handle was wrong, testme #ifndef __OS2__ // PS 20070511 hack for WINS server crash558 560 TDB_LOG((tdb, TDB_DEBUG_FATAL, "tdb_reopen: failed to obtain active lock\n")); 559 561 goto fail; 560 //#endif561 562 } 562 563 if (fstat(tdb->fd, &st) != 0) { -
branches/samba-3.0/source/tdb/common/transaction.c
r61 r165 558 558 return -1; 559 559 } 560 #ifdef MS_SYNC560 #ifdef HAVE_MMAP 561 561 if (tdb->map_ptr) { 562 562 tdb_off_t moffset = offset & ~(tdb->page_size-1);
Note:
See TracChangeset
for help on using the changeset viewer.