]> Zhao Yanbai Git Server - minix.git/commitdiff
Don't repeat out-of-space messages
authorThomas Veerman <thomas@minix3.org>
Fri, 16 Dec 2011 09:17:37 +0000 (09:17 +0000)
committerThomas Veerman <thomas@minix3.org>
Wed, 21 Dec 2011 10:47:28 +0000 (10:47 +0000)
This patch makes PFS, EXT2 and MFS print only once that they're out of
space. After freeing up space and running out of space again, the message
will be printed again also.

servers/apfs/inode.c
servers/ext2/ialloc.c
servers/mfs/cache.c

index e73d39ca60e89191431049b2a5999d37b2f699b2..98be69203f0edb4de6f47f81e493ef53b3da564a 100644 (file)
@@ -245,14 +245,18 @@ PUBLIC struct inode *alloc_inode(dev_t dev, mode_t bits)
   register struct inode *rip;
   bit_t b;
   ino_t i_num;
+  int print_oos_msg = 1;
 
   b = alloc_bit();
   if (b == NO_BIT) {
        err_code = ENOSPC;
-       printf("PipeFS is out of inodes\n");
+       if (print_oos_msg)
+               printf("PipeFS is out of inodes\n");
+       print_oos_msg = 0;      /* Don't repeat message */
        return(NULL);
   }
   i_num = (ino_t) b;
+  print_oos_msg = 1;
 
 
   /* Try to acquire a slot in the inode table. */
index e7f008dff94cd6078a0ae7ec295f1a326e407c14..44f9e0d96047f2d2ae6d4f2b73228426a6467122 100644 (file)
@@ -37,8 +37,9 @@ PUBLIC struct inode *alloc_inode(struct inode *parent, mode_t bits)
 
   register struct inode *rip;
   register struct super_block *sp;
-  int major, minor, inumb;
+  int inumb;
   bit_t b;
+  static int print_oos_msg = 1;
 
   sp = get_super(parent->i_dev);    /* get pointer to super_block */
   if (sp->s_rd_only) {    /* can't allocate an inode on a read only device. */
@@ -50,11 +51,13 @@ PUBLIC struct inode *alloc_inode(struct inode *parent, mode_t bits)
   b = alloc_inode_bit(sp, parent, (bits & I_TYPE) == I_DIRECTORY);
   if (b == NO_BIT) {
        err_code = ENOSPC;
-       major = (int) (sp->s_dev >> MAJOR) & BYTE;
-       minor = (int) (sp->s_dev >> MINOR) & BYTE;
-       ext2_debug("Out of i-nodes on device %d/%d\n", major, minor);
+       if (print_oos_msg)
+               ext2_debug("Out of i-nodes on device %d/%d\n",
+                          major(sp->s_dev), minor(sp->s_dev));
+       print_oos_msg = 0;      /* Don't repeat message */
        return(NULL);
   }
+  print_oos_msg = 1;
 
   inumb = (int) b;        /* be careful not to pass unshort as param */
 
@@ -79,7 +82,7 @@ PUBLIC struct inode *alloc_inode(struct inode *parent, mode_t bits)
        wipe_inode(rip);
   }
 
-       return(rip);
+  return(rip);
 }
 
 
index 3adfec4c982976426debab3020dcb3b9c39eee88..8d66afe8ac6b67c20c1354fead959b3a3cecb0b2 100644 (file)
@@ -263,9 +263,9 @@ PUBLIC zone_t alloc_zone(
 {
 /* Allocate a new zone on the indicated device and return its number. */
 
-  int major, minor;
   bit_t b, bit;
   struct super_block *sp;
+  static int print_oos_msg = 1;
 
   /* Note that the routine alloc_bit() returns 1 for the lowest possible
    * zone, which corresponds to sp->s_firstdatazone.  To convert a value
@@ -285,11 +285,13 @@ PUBLIC zone_t alloc_zone(
   b = alloc_bit(sp, ZMAP, bit);
   if (b == NO_BIT) {
        err_code = ENOSPC;
-       major = (int) (sp->s_dev >> MAJOR) & BYTE;
-       minor = (int) (sp->s_dev >> MINOR) & BYTE;
-       printf("No space on device %d/%d\n", major, minor);
+       if (print_oos_msg)
+               printf("No space on device %d/%d\n", major(sp->s_dev),
+                       minor(sp->s_dev));
+       print_oos_msg = 0;      /* Don't repeat message */
        return(NO_ZONE);
   }
+  print_oos_msg = 1;
   if (z == sp->s_firstdatazone) sp->s_zsearch = b;     /* for next time */
   return( (zone_t) (sp->s_firstdatazone - 1) + (zone_t) b);
 }