svn commit: samba r23980 - in branches:
SAMBA_3_2/source/lib/tdb/common SAMBA_3_2_0/source/lib/tdb/common
SAMBA_4_0/source/lib/tdb/common
obnox at samba.org
obnox at samba.org
Fri Jul 20 16:31:35 GMT 2007
Author: obnox
Date: 2007-07-20 16:31:32 +0000 (Fri, 20 Jul 2007)
New Revision: 23980
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=23980
Log:
Fix one more use of pwrite in expand_file.
Michael
Modified:
branches/SAMBA_3_2/source/lib/tdb/common/io.c
branches/SAMBA_3_2_0/source/lib/tdb/common/io.c
branches/SAMBA_4_0/source/lib/tdb/common/io.c
Changeset:
Modified: branches/SAMBA_3_2/source/lib/tdb/common/io.c
===================================================================
--- branches/SAMBA_3_2/source/lib/tdb/common/io.c 2007-07-20 15:00:58 UTC (rev 23979)
+++ branches/SAMBA_3_2/source/lib/tdb/common/io.c 2007-07-20 16:31:32 UTC (rev 23980)
@@ -220,7 +220,16 @@
if (ftruncate(tdb->fd, size+addition) == -1) {
char b = 0;
- if (pwrite(tdb->fd, &b, 1, (size+addition) - 1) != 1) {
+ ssize_t written = pwrite(tdb->fd, &b, 1, (size+addition) - 1);
+ if (written == 0) {
+ /* try once more, potentially revealing errno */
+ written = pwrite(tdb->fd, &b, 1, (size+addition) - 1);
+ }
+ if (written == 0) {
+ /* again - give up, guessing errno */
+ errno = ENOSPC;
+ }
+ if (written != 1) {
TDB_LOG((tdb, TDB_DEBUG_FATAL, "expand_file to %d failed (%s)\n",
size+addition, strerror(errno)));
return -1;
Modified: branches/SAMBA_3_2_0/source/lib/tdb/common/io.c
===================================================================
--- branches/SAMBA_3_2_0/source/lib/tdb/common/io.c 2007-07-20 15:00:58 UTC (rev 23979)
+++ branches/SAMBA_3_2_0/source/lib/tdb/common/io.c 2007-07-20 16:31:32 UTC (rev 23980)
@@ -220,7 +220,16 @@
if (ftruncate(tdb->fd, size+addition) == -1) {
char b = 0;
- if (pwrite(tdb->fd, &b, 1, (size+addition) - 1) != 1) {
+ ssize_t written = pwrite(tdb->fd, &b, 1, (size+addition) - 1);
+ if (written == 0) {
+ /* try once more, potentially revealing errno */
+ written = pwrite(tdb->fd, &b, 1, (size+addition) - 1);
+ }
+ if (written == 0) {
+ /* again - give up, guessing errno */
+ errno = ENOSPC;
+ }
+ if (written != 1) {
TDB_LOG((tdb, TDB_DEBUG_FATAL, "expand_file to %d failed (%s)\n",
size+addition, strerror(errno)));
return -1;
Modified: branches/SAMBA_4_0/source/lib/tdb/common/io.c
===================================================================
--- branches/SAMBA_4_0/source/lib/tdb/common/io.c 2007-07-20 15:00:58 UTC (rev 23979)
+++ branches/SAMBA_4_0/source/lib/tdb/common/io.c 2007-07-20 16:31:32 UTC (rev 23980)
@@ -220,7 +220,16 @@
if (ftruncate(tdb->fd, size+addition) == -1) {
char b = 0;
- if (pwrite(tdb->fd, &b, 1, (size+addition) - 1) != 1) {
+ ssize_t written = pwrite(tdb->fd, &b, 1, (size+addition) - 1);
+ if (written == 0) {
+ /* try once more, potentially revealing errno */
+ written = pwrite(tdb->fd, &b, 1, (size+addition) - 1);
+ }
+ if (written == 0) {
+ /* again - give up, guessing errno */
+ errno = ENOSPC;
+ }
+ if (written != 1) {
TDB_LOG((tdb, TDB_DEBUG_FATAL, "expand_file to %d failed (%s)\n",
size+addition, strerror(errno)));
return -1;
More information about the samba-cvs
mailing list