Changeset 165 for branches/samba-3.0/source/tdb/common/io.c
- Timestamp:
- Mar 11, 2009, 9:14:55 AM (17 years ago)
- File:
-
- 1 edited
-
branches/samba-3.0/source/tdb/common/io.c (modified) (2 diffs)
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 errno = ENOSPC;116 written = pwrite(tdb->fd, (void *)((char *)buf+written),117 len-written,118 off+written);119 }120 if (written == -1) {121 /* Ensure ecode is set for log fn. */122 tdb->ecode = TDB_ERR_IO;123 TDB_LOG((tdb, TDB_DEBUG_FATAL,"tdb_write failed at %d "124 "len=%d (%s)\n", off, len, strerror(errno)));125 return TDB_ERRCODE(TDB_ERR_IO, -1);126 } else if (written != (ssize_t)len) {127 TDB_LOG((tdb, TDB_DEBUG_FATAL, "tdb_write: failed to "128 "write %d bytes at %d in two attempts\n",129 len, off));130 errno = ENOSPC;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;
Note:
See TracChangeset
for help on using the changeset viewer.
