- if (!tdb_pwrite_all(tdb->fd, buf, len, off)) {
- tdb_logerr(tdb, TDB_ERR_IO, TDB_DEBUG_FATAL,
- "tdb_write failed at %zu len=%zu (%s)",
- (size_t)off, (size_t)len, strerror(errno));
+ ssize_t ret;
+ ret = pwrite(tdb->fd, buf, len, off);
+ if (ret < len) {
+ /* This shouldn't happen: we avoid sparse files. */
+ if (ret >= 0)
+ errno = ENOSPC;
+
+ tdb_logerr(tdb, TDB_ERR_IO, TDB_LOG_ERROR,
+ "tdb_write: %zi at %zu len=%zu (%s)",
+ ret, (size_t)off, (size_t)len,
+ strerror(errno));