Whamcloud - gitweb
Branch b1_4
authoradilger <adilger>
Wed, 1 Jun 2005 07:10:16 +0000 (07:10 +0000)
committeradilger <adilger>
Wed, 1 Jun 2005 07:10:16 +0000 (07:10 +0000)
Add /proc/sys/vm/vm_gfp_debug to the 2.4.21-rhel kernel.
b=6422

lustre/kernel_patches/patches/gfp_debug-2.4.21-rhel.patch [new file with mode: 0644]

diff --git a/lustre/kernel_patches/patches/gfp_debug-2.4.21-rhel.patch b/lustre/kernel_patches/patches/gfp_debug-2.4.21-rhel.patch
new file mode 100644 (file)
index 0000000..6686b15
--- /dev/null
@@ -0,0 +1,77 @@
+Index: linux-2.4.21-rhel/kernel/sysctl.c
+===================================================================
+--- linux-2.4.21-rhel.orig/kernel/sysctl.c     2005-01-20 18:52:39.000000000 -0700
++++ linux-2.4.21-rhel/kernel/sysctl.c  2005-05-31 18:47:22.000000000 -0600
+@@ -355,6 +355,8 @@
+ extern int skip_mapped_pages;
+ static ctl_table vm_table[] = {
++      {VM_GFP_DEBUG, "vm_gfp_debug",
++       &vm_gfp_debug, sizeof(int), 0644, NULL, &proc_dointvec},
+       {VM_BDFLUSH, "bdflush", &bdf_prm, 9*sizeof(int), 0644, NULL,
+        &proc_dointvec_minmax, &sysctl_intvec, NULL,
+        &bdflush_min, &bdflush_max},
+Index: linux-2.4.21-rhel/mm/page_alloc.c
+===================================================================
+--- linux-2.4.21-rhel.orig/mm/page_alloc.c     2005-05-31 18:29:37.000000000 -0600
++++ linux-2.4.21-rhel/mm/page_alloc.c  2005-05-31 18:49:27.000000000 -0600
+@@ -58,6 +58,8 @@
+ static int zone_extrafree_max[MAX_NR_ZONES] __initdata = { 1024 , 1024, 0, };
+ #endif
++int vm_gfp_debug = 0;
++
+ /*
+  * Temporary debugging check.
+  */
+@@ -773,8 +775,12 @@
+       }
+ out_failed:
+-      /* No luck.. */
+-//    printk(KERN_ERR "__alloc_pages: %lu-order allocation failed.\n", order);
++      if (!(gfp_mask & __GFP_NOWARN)) {
++              printk(KERN_ERR "__alloc_pages: %lu-order allocation failed (gfp=%#x/%i).\n",
++                     order, gfp_mask, !!(current->flags & PF_MEMALLOC));
++              if (unlikely(vm_gfp_debug))
++                      dump_stack();
++      }
+       return NULL;
+ }
+Index: linux-2.4.21-rhel/include/linux/sysctl.h
+===================================================================
+--- linux-2.4.21-rhel.orig/include/linux/sysctl.h      2005-03-18 18:25:26.000000000 -0700
++++ linux-2.4.21-rhel/include/linux/sysctl.h   2005-05-31 18:48:17.000000000 -0600
+@@ -153,6 +153,7 @@
+       VM_MIN_READAHEAD=12,    /* Min file readahead */
+       VM_MAX_READAHEAD=13,    /* Max file readahead */
+       VM_OVERCOMMIT_RATIO=16, /* percent of RAM to allow overcommit in */
++      VM_GFP_DEBUG=18,        /* debug GFP failures */
+       VM_PAGEBUF=22,          /* struct: Control pagebuf parameters */
+       VM_HUGETLB_POOL=23,     /* int: size of the hugetlb pool, in MB */
+       VM_DCACHE_PRIORITY=24,  /* int: priority of the dcache pool */
+Index: linux-2.4.21-rhel/include/linux/mm.h
+===================================================================
+--- linux-2.4.21-rhel.orig/include/linux/mm.h  2005-05-31 18:50:32.000000000 -0600
++++ linux-2.4.21-rhel/include/linux/mm.h       2005-05-31 18:50:45.000000000 -0600
+@@ -846,6 +846,7 @@
+ #define __GFP_HIGHIO  0x80    /* Can start high mem physical IO? */
+ #define __GFP_FS      0x100   /* Can call down to low-level FS? */
+ #define __GFP_WIRED   0x200   /* Highmem bias and wired */
++#define __GFP_NOWARN  0x400   /* Don't report error on allocation failure */
+ #define GFP_NOHIGHIO  (__GFP_HIGH | __GFP_WAIT | __GFP_IO)
+ #define GFP_NOIO      (__GFP_HIGH | __GFP_WAIT)
+Index: linux-2.4.21-rhel/include/linux/swap.h
+===================================================================
+--- linux-2.4.21-rhel.orig/include/linux/swap.h        2005-03-18 18:25:26.000000000 -0700
++++ linux-2.4.21-rhel/include/linux/swap.h     2005-05-31 18:52:44.000000000 -0600
+@@ -178,6 +178,7 @@
+ extern int rebalance_inactive(int);
+ extern void wakeup_kswapd(unsigned int);
+ extern void rss_free_pages(unsigned int);
++extern int vm_gfp_debug;
+ /*
+  * Limits, in percent, on how large the cache can be and how to do