Gordon Messmer wrote:

This has been brought up before, but is probably still a problem. The correct fix, I believe, would be to only check f_ffree and f_bfree if f_files and f_blocks (respectively) are not 0.

This patch might fix it.
diff -ru courier-0.44.2/courier/courierd.C courier-0.44.2-reiserfs/courier/courierd.C
--- courier-0.44.2/courier/courierd.C   2003-03-07 18:49:56.000000000 -0800
+++ courier-0.44.2-reiserfs/courier/courierd.C  2003-12-05 10:11:45.000000000 -0800
@@ -155,7 +155,8 @@
                if (freespace(MSGQDIR "/.", &nblock, &ninodes, &blocksize))
                        return (islow);
 
-               if (ninodes < (unsigned long)(100+msgq::queue.GetSize()*2))
+               if (ninodes != -1 && 
+                       ninodes < (unsigned long)(100+msgq::queue.GetSize()*2))
                        islow=1;
                else
                {
diff -ru courier-0.44.2/courier/libs/comstatfs.c 
courier-0.44.2-reiserfs/courier/libs/comstatfs.c
--- courier-0.44.2/courier/libs/comstatfs.c     2000-05-15 23:18:31.000000000 -0700
+++ courier-0.44.2-reiserfs/courier/libs/comstatfs.c    2003-12-05 10:10:21.000000000 
-0800
@@ -56,6 +56,7 @@
 
 #define        BAVAIL buf.f_bavail
 #define        IAVAIL buf.f_favail
+#define ITOTAL buf.f_files
 
        *blksize=buf.f_bsize;
 
@@ -67,6 +68,7 @@
 
 #define        BAVAIL buf.f_bfree
 #define        IAVAIL buf.f_ffree
+#define ITOTAL buf.f_files
 
        *blksize=buf.f_bsize;
 #endif
@@ -77,6 +79,7 @@
 
        if (*nblocks != BAVAIL) *nblocks= ~0;   /* Overflow */
        if (*ninodes != IAVAIL) *ninodes= ~0;   /* Overflow */
+       if (ITOTAL == 0) *ninodes = -1;         /* This fs does not have a static 
limit on inodes */
 
        return (0);
 }
diff -ru courier-0.44.2/courier/submit.C courier-0.44.2-reiserfs/courier/submit.C
--- courier-0.44.2/courier/submit.C     2003-10-04 21:47:50.000000000 -0700
+++ courier-0.44.2-reiserfs/courier/submit.C    2003-12-05 10:13:17.000000000 -0800
@@ -177,7 +177,8 @@
                return (0);
        }
 
-       if (nfreeinodes < min_inodes)   return (-1);
+       if (nfreeinodes != -1 &&
+               nfreeinodes < min_inodes)       return (-1);
 
        if (nfreeblocks < blksize * nsubmitters/65536 + 100)
                *availbytes=4096;

Reply via email to