]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
UBIFS: do not print scary memory allocation warnings
authorArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
Tue, 18 Nov 2008 16:09:49 +0000 (18:09 +0200)
committerArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
Fri, 21 Nov 2008 16:59:16 +0000 (18:59 +0200)
Bulk-read allocates a lot of memory with 'kmalloc()', and when it
is/gets fragmented 'kmalloc()' fails with a scarry warning. But
because bulk-read is just an optimization, UBIFS keeps working fine.
Supress the warning by passing __GFP_NOWARN option to 'kmalloc()'.

This patch also introduces a macro for the magic 128KiB constant.
This is just neater.

Note, this is not really fixes the problem we had, but just hides
the warnings. The further patches fix the problem.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
fs/ubifs/file.c
fs/ubifs/super.c
fs/ubifs/ubifs.h

index 9124eee73aeacc01a022056060c152f9bea9bb0d..8be827cc7078c3fefc2c082c7ef0c154738706fc 100644 (file)
@@ -705,12 +705,12 @@ static int ubifs_do_bulk_read(struct ubifs_info *c, struct page *page1)
        int err, page_idx, page_cnt, ret = 0, n = 0;
        loff_t isize;
 
-       bu = kmalloc(sizeof(struct bu_info), GFP_NOFS);
+       bu = kmalloc(sizeof(struct bu_info), GFP_NOFS | __GFP_NOWARN);
        if (!bu)
                return 0;
 
        bu->buf_len = c->bulk_read_buf_size;
-       bu->buf = kmalloc(bu->buf_len, GFP_NOFS);
+       bu->buf = kmalloc(bu->buf_len, GFP_NOFS | __GFP_NOWARN);
        if (!bu->buf)
                goto out_free;
 
index 8780efbf40ac64fbf901fd448998361823c38be3..ea493e6f2652bae2e5ac01c1e59de0c66e7c0aa8 100644 (file)
 #include <linux/mount.h>
 #include "ubifs.h"
 
+/*
+ * Maximum amount of memory we may 'kmalloc()' without worrying that we are
+ * allocating too much.
+ */
+#define UBIFS_KMALLOC_OK (128*1024)
+
 /* Slab cache for UBIFS inodes */
 struct kmem_cache *ubifs_inode_slab;
 
@@ -561,17 +567,18 @@ static int init_constants_early(struct ubifs_info *c)
         * calculations when reporting free space.
         */
        c->leb_overhead = c->leb_size % UBIFS_MAX_DATA_NODE_SZ;
+
        /* Buffer size for bulk-reads */
        c->bulk_read_buf_size = UBIFS_MAX_BULK_READ * UBIFS_MAX_DATA_NODE_SZ;
        if (c->bulk_read_buf_size > c->leb_size)
                c->bulk_read_buf_size = c->leb_size;
-       if (c->bulk_read_buf_size > 128 * 1024) {
-               /* Check if we can kmalloc more than 128KiB */
-               void *try = kmalloc(c->bulk_read_buf_size, GFP_KERNEL);
-
+       if (c->bulk_read_buf_size > UBIFS_KMALLOC_OK) {
+               /* Check if we can kmalloc that much */
+               void *try = kmalloc(c->bulk_read_buf_size,
+                                   GFP_KERNEL | __GFP_NOWARN);
                kfree(try);
                if (!try)
-                       c->bulk_read_buf_size = 128 * 1024;
+                       c->bulk_read_buf_size = UBIFS_KMALLOC_OK;
        }
        return 0;
 }
index a7bd32fa15b987d9510583041a7b3a6e5f6f0998..06ba51efd65d26042db74cc257594fbed9347b65 100644 (file)
@@ -753,7 +753,7 @@ struct ubifs_znode {
 };
 
 /**
- * struct bu_info - bulk-read information
+ * struct bu_info - bulk-read information.
  * @key: first data node key
  * @zbranch: zbranches of data nodes to bulk read
  * @buf: buffer to read into