diff --git a/lib/modules/PDB.pmod b/lib/modules/PDB.pmod
index 2910bd1861971b0e83c5deef6a7fd78fca83d394..1757ee582a0c5446b6060a1e05475a7029536545 100644
--- a/lib/modules/PDB.pmod
+++ b/lib/modules/PDB.pmod
@@ -1,5 +1,5 @@
 /*
- * $Id: PDB.pmod,v 1.1 1998/03/23 17:45:29 noring Exp $
+ * $Id: PDB.pmod,v 1.2 1998/03/25 15:25:23 noring Exp $
  */
 
 #if constant(thread_create)
@@ -37,15 +37,20 @@ class FileIO {
     int n;
     for(;;) {
       n = o->write(d);
-      if(!sov || n == sizeof(d) || n<0)
+      if(!sov || n == sizeof(d) || (n<0 && !(<11,12,16,24,28,49>)[o->errno()]))
 	break;
       d = d[n..];
       if(!warned_already) {
-	PDB_WARN(ctx+": Disk seems to be full.");
+	if(n<0)
+	  PDB_WARN(ctx+": "+strerror(o->errno())+" (sleeping)");
+	else
+	  PDB_WARN(ctx+": Disk seems to be full. (sleeping)");
 	warned_already=1;
       }
       sleep(1);
     }
+    if(warned_already)
+      PDB_WARN(ctx+": I'm OK now.");
     return (n<0? n : (n==strlen(d)? 1 : 0));
   }