head 1.2; access; symbols perseant-exfatfs-base-20250801:1.2 perseant-exfatfs-base-20240630:1.2 perseant-exfatfs:1.2.0.26 perseant-exfatfs-base:1.2 cjep_sun2x:1.2.0.24 cjep_sun2x-base:1.2 cjep_staticlib_x-base1:1.2 cjep_staticlib_x:1.2.0.22 cjep_staticlib_x-base:1.2 phil-wifi-20200421:1.2 phil-wifi-20200411:1.2 phil-wifi-20200406:1.2 pgoyette-compat-merge-20190127:1.2 pgoyette-compat-20190127:1.2 pgoyette-compat-20190118:1.2 pgoyette-compat-1226:1.2 pgoyette-compat-1126:1.2 pgoyette-compat-1020:1.2 pgoyette-compat-0930:1.2 pgoyette-compat-0906:1.2 pgoyette-compat-0728:1.2 pgoyette-compat-0625:1.2 pgoyette-compat-0521:1.2 pgoyette-compat-0502:1.2 pgoyette-compat-0422:1.2 pgoyette-compat-0415:1.2 pgoyette-compat-0407:1.2 pgoyette-compat-0330:1.2 pgoyette-compat-0322:1.2 pgoyette-compat-0315:1.2 pgoyette-compat:1.2.0.20 pgoyette-compat-base:1.2 perseant-stdc-iso10646:1.2.0.18 perseant-stdc-iso10646-base:1.2 prg-localcount2-base3:1.2 prg-localcount2-base2:1.2 prg-localcount2-base1:1.2 prg-localcount2:1.2.0.16 prg-localcount2-base:1.2 pgoyette-localcount-20170426:1.2 bouyer-socketcan-base1:1.2 pgoyette-localcount-20170320:1.2 bouyer-socketcan:1.2.0.14 bouyer-socketcan-base:1.2 pgoyette-localcount-20170107:1.2 pgoyette-localcount-20161104:1.2 localcount-20160914:1.2 pgoyette-localcount-20160806:1.2 pgoyette-localcount-20160726:1.2 pgoyette-localcount:1.2.0.12 pgoyette-localcount-base:1.2 netbsd-5-2-3-RELEASE:1.1.1.1.8.1 netbsd-5-1-5-RELEASE:1.1.1.1.8.1 yamt-pagecache-base9:1.2 yamt-pagecache-tag8:1.2 tls-earlyentropy:1.2.0.8 tls-earlyentropy-base:1.2 riastradh-xf86-video-intel-2-7-1-pre-2-21-15:1.2 riastradh-drm2-base3:1.2 netbsd-5-2-2-RELEASE:1.1.1.1.8.1 netbsd-5-1-4-RELEASE:1.1.1.1.8.1 netbsd-5-2-1-RELEASE:1.1.1.1.8.1 netbsd-5-1-3-RELEASE:1.1.1.1.8.1 agc-symver:1.2.0.10 agc-symver-base:1.2 tls-maxphys-base:1.2 yamt-pagecache-base8:1.2 netbsd-5-2:1.1.1.1.8.1.0.6 yamt-pagecache-base7:1.2 netbsd-5-2-RELEASE:1.1.1.1.8.1 netbsd-5-2-RC1:1.1.1.1.8.1 yamt-pagecache-base6:1.2 yamt-pagecache-base5:1.2 yamt-pagecache-base4:1.2 netbsd-5-1-2-RELEASE:1.1.1.1.8.1 netbsd-5-1-1-RELEASE:1.1.1.1.8.1 yamt-pagecache-base3:1.2 yamt-pagecache-base2:1.2 yamt-pagecache:1.2.0.6 yamt-pagecache-base:1.2 bouyer-quota2-nbase:1.2 bouyer-quota2:1.2.0.4 bouyer-quota2-base:1.2 matt-nb5-pq3:1.1.1.1.8.1.0.4 matt-nb5-pq3-base:1.1.1.1.8.1 netbsd-5-1:1.1.1.1.8.1.0.2 netbsd-5-1-RELEASE:1.1.1.1.8.1 netbsd-5-1-RC4:1.1.1.1.8.1 netbsd-5-1-RC3:1.1.1.1.8.1 netbsd-5-1-RC2:1.1.1.1.8.1 netbsd-5-1-RC1:1.1.1.1.8.1 netbsd-5-0-2-RELEASE:1.1.1.1 matt-nb5-mips64-premerge-20091211:1.1.1.1 matt-nb5-mips64-u2-k2-k4-k7-k8-k9:1.1.1.1 matt-nb4-mips64-k7-u2a-k9b:1.1.1.1 matt-nb5-mips64-u1-k1-k5:1.1.1.1 matt-nb5-mips64:1.1.1.1.0.12 netbsd-5-0-1-RELEASE:1.1.1.1 jym-xensuspend-nbase:1.2 netbsd-5-0:1.1.1.1.0.10 netbsd-5-0-RELEASE:1.1.1.1 netbsd-5-0-RC4:1.1.1.1 netbsd-5-0-RC3:1.1.1.1 netbsd-5-0-RC2:1.1.1.1 jym-xensuspend:1.2.0.2 jym-xensuspend-base:1.2 netbsd-5-0-RC1:1.1.1.1 haad-dm-base2:1.1.1.1 haad-nbase2:1.1.1.1 netbsd-5:1.1.1.1.0.8 netbsd-5-base:1.1.1.1 matt-mips64-base2:1.1.1.1 haad-dm-base1:1.1.1.1 wrstuden-revivesa-base-3:1.1.1.1 wrstuden-revivesa:1.1.1.1.0.4 wrstuden-revivesa-base-2:1.1.1.1 haad-dm:1.1.1.1.0.2 haad-dm-base:1.1.1.1 libdevmapper-1-02-27:1.1.1.1 FSF:1.1.1; locks; strict; comment @# @; 1.2 date 2008.12.22.01.07.19; author haad; state dead; branches; next 1.1; 1.1 date 2008.07.15.13.53.13; author haad; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2008.07.15.13.53.13; author haad; state Exp; branches 1.1.1.1.2.1 1.1.1.1.4.1 1.1.1.1.8.1 1.1.1.1.12.1; next ; 1.1.1.1.2.1 date 2008.07.15.13.53.13; author haad; state dead; branches; next 1.1.1.1.2.2; 1.1.1.1.2.2 date 2008.12.16.01.27.02; author haad; state dead; branches; next ; 1.1.1.1.4.1 date 2008.07.15.13.53.13; author wrstuden; state dead; branches; next 1.1.1.1.4.2; 1.1.1.1.4.2 date 2008.09.18.05.17.12; author wrstuden; state Exp; branches; next ; 1.1.1.1.8.1 date 2010.01.20.05.13.26; author snj; state dead; branches; next ; 1.1.1.1.12.1 date 2010.04.21.05.23.14; author matt; state dead; branches; next ; desc @@ 1.2 log @Remove broken merged sources of haad-dm. lvm2tools are now in gpl2/lvm2 and libdevmapper is not needed anymore. @ text @--- linux-2.4.21/drivers/md/dm-ioctl.c Wed Aug 20 14:41:38 2003 +++ linux/drivers/md/dm-ioctl.c Wed Aug 20 14:42:58 2003 @@@@ -1178,19 +1178,11 @@@@ } /* - * FIXME: I don't like this, we're trying to avoid low - * memory issues when a device is suspended. - */ - current->flags |= PF_MEMALLOC; - - /* * Copy the parameters into kernel space. */ r = copy_params(user, ¶m); - if (r) { - current->flags &= ~PF_MEMALLOC; + if (r) return r; - } r = validate_params(cmd, param); if (r) @@@@ -1208,7 +1200,6 @@@@ out: free_params(param); - current->flags &= ~PF_MEMALLOC; return r; } --- linux-2.4.21/include/asm-alpha/mman.h Fri Jan 10 16:35:33 2003 +++ linux/include/asm-alpha/mman.h Wed Aug 20 14:42:58 2003 @@@@ -30,6 +30,7 @@@@ #define MCL_CURRENT 8192 /* lock all currently mapped pages */ #define MCL_FUTURE 16384 /* lock all additions to address space */ +#define MCL_MEMALLOC 32768 /* allow allocation of reserved memory */ #define MADV_NORMAL 0 /* no further special treatment */ #define MADV_RANDOM 1 /* expect random page references */ --- linux-2.4.21/include/asm-arm/mman.h Fri Jan 10 16:35:33 2003 +++ linux/include/asm-arm/mman.h Wed Aug 20 14:42:58 2003 @@@@ -24,6 +24,7 @@@@ #define MCL_CURRENT 1 /* lock all current mappings */ #define MCL_FUTURE 2 /* lock all future mappings */ +#define MCL_MEMALLOC 4 /* allow allocation of reserved memory */ #define MADV_NORMAL 0x0 /* default page-in behavior */ #define MADV_RANDOM 0x1 /* page-in minimum required */ --- linux-2.4.21/include/asm-cris/mman.h Fri Jan 10 16:35:36 2003 +++ linux/include/asm-cris/mman.h Wed Aug 20 14:42:58 2003 @@@@ -26,6 +26,7 @@@@ #define MCL_CURRENT 1 /* lock all current mappings */ #define MCL_FUTURE 2 /* lock all future mappings */ +#define MCL_MEMALLOC 4 /* allow allocation of reserved memory */ #define MADV_NORMAL 0x0 /* default page-in behavior */ #define MADV_RANDOM 0x1 /* page-in minimum required */ --- linux-2.4.21/include/asm-i386/mman.h Fri Jan 10 16:35:37 2003 +++ linux/include/asm-i386/mman.h Wed Aug 20 14:42:58 2003 @@@@ -24,6 +24,7 @@@@ #define MCL_CURRENT 1 /* lock all current mappings */ #define MCL_FUTURE 2 /* lock all future mappings */ +#define MCL_MEMALLOC 4 /* allow allocation of reserved memory */ #define MADV_NORMAL 0x0 /* default page-in behavior */ #define MADV_RANDOM 0x1 /* page-in minimum required */ --- linux-2.4.21/include/asm-ia64/mman.h Fri Jan 10 16:35:38 2003 +++ linux/include/asm-ia64/mman.h Wed Aug 20 14:42:58 2003 @@@@ -32,6 +32,7 @@@@ #define MCL_CURRENT 1 /* lock all current mappings */ #define MCL_FUTURE 2 /* lock all future mappings */ +#define MCL_MEMALLOC 4 /* allow allocation of reserved memory */ #define MADV_NORMAL 0x0 /* default page-in behavior */ #define MADV_RANDOM 0x1 /* page-in minimum required */ --- linux-2.4.21/include/asm-m68k/mman.h Fri Jan 10 16:35:43 2003 +++ linux/include/asm-m68k/mman.h Wed Aug 20 14:42:58 2003 @@@@ -24,6 +24,7 @@@@ #define MCL_CURRENT 1 /* lock all current mappings */ #define MCL_FUTURE 2 /* lock all future mappings */ +#define MCL_MEMALLOC 4 /* allow allocation of reserved memory */ #define MADV_NORMAL 0x0 /* default page-in behavior */ #define MADV_RANDOM 0x1 /* page-in minimum required */ --- linux-2.4.21/include/asm-mips/mman.h Fri Jan 10 16:35:44 2003 +++ linux/include/asm-mips/mman.h Wed Aug 20 14:42:58 2003 @@@@ -55,6 +55,7 @@@@ */ #define MCL_CURRENT 1 /* lock all current mappings */ #define MCL_FUTURE 2 /* lock all future mappings */ +#define MCL_MEMALLOC 4 /* allow allocation of reserved memory */ #define MADV_NORMAL 0x0 /* default page-in behavior */ #define MADV_RANDOM 0x1 /* page-in minimum required */ --- linux-2.4.21/include/asm-mips64/mman.h Fri Jan 10 16:35:45 2003 +++ linux/include/asm-mips64/mman.h Wed Aug 20 14:42:58 2003 @@@@ -53,6 +53,7 @@@@ */ #define MCL_CURRENT 1 /* lock all current mappings */ #define MCL_FUTURE 2 /* lock all future mappings */ +#define MCL_MEMALLOC 4 /* allow allocation of reserved memory */ #define MADV_NORMAL 0x0 /* default page-in behavior */ #define MADV_RANDOM 0x1 /* page-in minimum required */ --- linux-2.4.21/include/asm-parisc/mman.h Fri Jan 10 16:35:47 2003 +++ linux/include/asm-parisc/mman.h Wed Aug 20 14:42:58 2003 @@@@ -24,6 +24,7 @@@@ #define MCL_CURRENT 1 /* lock all current mappings */ #define MCL_FUTURE 2 /* lock all future mappings */ +#define MCL_MEMALLOC 4 /* allow allocation of reserved memory */ #define MADV_NORMAL 0 /* no further special treatment */ #define MADV_RANDOM 1 /* expect random page references */ --- linux-2.4.21/include/asm-ppc/mman.h Fri Jun 13 16:32:50 2003 +++ linux/include/asm-ppc/mman.h Wed Aug 20 14:42:58 2003 @@@@ -25,6 +25,7 @@@@ #define MCL_CURRENT 0x2000 /* lock all currently mapped pages */ #define MCL_FUTURE 0x4000 /* lock all additions to address space */ +#define MCL_MEMALLOC 0x8000 /* allow allocation of reserved memory */ #define MADV_NORMAL 0x0 /* default page-in behavior */ #define MADV_RANDOM 0x1 /* page-in minimum required */ --- linux-2.4.21/include/asm-ppc64/mman.h Fri Jan 10 16:35:49 2003 +++ linux/include/asm-ppc64/mman.h Wed Aug 20 14:42:58 2003 @@@@ -31,6 +31,7 @@@@ #define MCL_CURRENT 0x2000 /* lock all currently mapped pages */ #define MCL_FUTURE 0x4000 /* lock all additions to address space */ +#define MCL_MEMALLOC 0x8000 /* allow allocation of reserved memory */ #define MADV_NORMAL 0x0 /* default page-in behavior */ #define MADV_RANDOM 0x1 /* page-in minimum required */ --- linux-2.4.21/include/asm-s390/mman.h Fri Jan 10 16:35:49 2003 +++ linux/include/asm-s390/mman.h Wed Aug 20 14:42:58 2003 @@@@ -32,6 +32,7 @@@@ #define MCL_CURRENT 1 /* lock all current mappings */ #define MCL_FUTURE 2 /* lock all future mappings */ +#define MCL_MEMALLOC 4 /* allow allocation of reserved memory */ #define MADV_NORMAL 0x0 /* default page-in behavior */ #define MADV_RANDOM 0x1 /* page-in minimum required */ --- linux-2.4.21/include/asm-s390x/mman.h Fri Jan 10 16:35:50 2003 +++ linux/include/asm-s390x/mman.h Wed Aug 20 14:42:58 2003 @@@@ -32,6 +32,7 @@@@ #define MCL_CURRENT 1 /* lock all current mappings */ #define MCL_FUTURE 2 /* lock all future mappings */ +#define MCL_MEMALLOC 4 /* allow allocation of reserved memory */ #define MADV_NORMAL 0x0 /* default page-in behavior */ #define MADV_RANDOM 0x1 /* page-in minimum required */ --- linux-2.4.21/include/asm-sh/mman.h Fri Jan 10 16:35:52 2003 +++ linux/include/asm-sh/mman.h Wed Aug 20 14:42:58 2003 @@@@ -24,6 +24,7 @@@@ #define MCL_CURRENT 1 /* lock all current mappings */ #define MCL_FUTURE 2 /* lock all future mappings */ +#define MCL_MEMALLOC 4 /* allow allocation of reserved memory */ #define MADV_NORMAL 0x0 /* default page-in behavior */ #define MADV_RANDOM 0x1 /* page-in minimum required */ --- linux-2.4.21/include/asm-sparc/mman.h Fri Jun 13 16:32:51 2003 +++ linux/include/asm-sparc/mman.h Wed Aug 20 14:42:58 2003 @@@@ -30,6 +30,7 @@@@ #define MCL_CURRENT 0x2000 /* lock all currently mapped pages */ #define MCL_FUTURE 0x4000 /* lock all additions to address space */ +#define MCL_MEMALLOC 0x8000 /* allow allocation of reserved memory */ /* XXX Need to add flags to SunOS's mctl, mlockall, and madvise system * XXX calls. --- linux-2.4.21/include/asm-sparc64/mman.h Fri Jun 13 16:32:51 2003 +++ linux/include/asm-sparc64/mman.h Wed Aug 20 14:42:58 2003 @@@@ -30,6 +30,7 @@@@ #define MCL_CURRENT 0x2000 /* lock all currently mapped pages */ #define MCL_FUTURE 0x4000 /* lock all additions to address space */ +#define MCL_MEMALLOC 0x8000 /* allow allocation of reserved memory */ /* XXX Need to add flags to SunOS's mctl, mlockall, and madvise system * XXX calls. --- linux-2.4.21/include/asm-x86_64/mman.h Fri Jan 10 16:35:53 2003 +++ linux/include/asm-x86_64/mman.h Wed Aug 20 14:42:58 2003 @@@@ -25,6 +25,7 @@@@ #define MCL_CURRENT 1 /* lock all current mappings */ #define MCL_FUTURE 2 /* lock all future mappings */ +#define MCL_MEMALLOC 4 /* allow allocation of reserved memory */ #define MADV_NORMAL 0x0 /* default page-in behavior */ #define MADV_RANDOM 0x1 /* page-in minimum required */ --- linux-2.4.21/mm/mlock.c Fri Jan 10 16:36:03 2003 +++ linux/mm/mlock.c Wed Aug 20 14:42:58 2003 @@@@ -244,6 +244,11 @@@@ if (!capable(CAP_IPC_LOCK)) return -EPERM; + if (flags & MCL_MEMALLOC) + current->flags |= PF_MEMALLOC; + else + current->flags &= ~PF_MEMALLOC; + def_flags = 0; if (flags & MCL_FUTURE) def_flags = VM_LOCKED; @@@@ -269,7 +274,7 @@@@ int ret = -EINVAL; down_write(¤t->mm->mmap_sem); - if (!flags || (flags & ~(MCL_CURRENT | MCL_FUTURE))) + if (!flags || (flags & ~(MCL_CURRENT | MCL_FUTURE | MCL_MEMALLOC))) goto out; lock_limit = current->rlim[RLIMIT_MEMLOCK].rlim_cur; --- linux-2.4.21/mm/oom_kill.c Fri Jan 10 16:36:03 2003 +++ linux/mm/oom_kill.c Wed Aug 20 14:42:58 2003 @@@@ -61,6 +61,13 @@@@ if (!p->mm) return 0; + + /* + * The system's likely doomed if we have to kill a PF_MEMALLOC process. + */ + if (p->flags & PF_MEMALLOC) + return 1; + /* * The memory size of the process is the basis for the badness. */ --- linux-2.4.21/mm/page_alloc.c Fri Jan 10 16:36:03 2003 +++ linux/mm/page_alloc.c Wed Aug 20 14:42:58 2003 @@@@ -254,6 +254,7 @@@@ { struct page * page = NULL; int __freed = 0; + unsigned long pf_memalloc; if (!(gfp_mask & __GFP_WAIT)) goto out; @@@@ -261,11 +262,12 @@@@ BUG(); current->allocation_order = order; + pf_memalloc = current->flags & PF_MEMALLOC; current->flags |= PF_MEMALLOC | PF_FREE_PAGES; __freed = try_to_free_pages_zone(classzone, gfp_mask); - current->flags &= ~(PF_MEMALLOC | PF_FREE_PAGES); + current->flags &= ~(PF_MEMALLOC | PF_FREE_PAGES) | pf_memalloc; if (current->nr_local_pages) { struct list_head * entry, * local_pages; @ 1.1 log @Initial revision @ text @@ 1.1.1.1 log @version 1.02.27-cvs @ text @@ 1.1.1.1.2.1 log @file linux-2.4.21-memalloc.patch was added on branch haad-dm on 2008-12-16 01:27:02 +0000 @ text @d1 264 @ 1.1.1.1.2.2 log @Remove libdevmaper code, lvm2tools are now distributed with libdevmapper source inside. @ text @@ 1.1.1.1.12.1 log @sync to netbsd-5 @ text @@ 1.1.1.1.8.1 log @Remove obsolete LVM sources, as requested by tron in ticket 1211. @ text @@ 1.1.1.1.4.1 log @file linux-2.4.21-memalloc.patch was added on branch wrstuden-revivesa on 2008-09-18 05:17:12 +0000 @ text @d1 264 @ 1.1.1.1.4.2 log @Sync with wrstuden-revivesa-base-2. @ text @a0 264 --- linux-2.4.21/drivers/md/dm-ioctl.c Wed Aug 20 14:41:38 2003 +++ linux/drivers/md/dm-ioctl.c Wed Aug 20 14:42:58 2003 @@@@ -1178,19 +1178,11 @@@@ } /* - * FIXME: I don't like this, we're trying to avoid low - * memory issues when a device is suspended. - */ - current->flags |= PF_MEMALLOC; - - /* * Copy the parameters into kernel space. */ r = copy_params(user, ¶m); - if (r) { - current->flags &= ~PF_MEMALLOC; + if (r) return r; - } r = validate_params(cmd, param); if (r) @@@@ -1208,7 +1200,6 @@@@ out: free_params(param); - current->flags &= ~PF_MEMALLOC; return r; } --- linux-2.4.21/include/asm-alpha/mman.h Fri Jan 10 16:35:33 2003 +++ linux/include/asm-alpha/mman.h Wed Aug 20 14:42:58 2003 @@@@ -30,6 +30,7 @@@@ #define MCL_CURRENT 8192 /* lock all currently mapped pages */ #define MCL_FUTURE 16384 /* lock all additions to address space */ +#define MCL_MEMALLOC 32768 /* allow allocation of reserved memory */ #define MADV_NORMAL 0 /* no further special treatment */ #define MADV_RANDOM 1 /* expect random page references */ --- linux-2.4.21/include/asm-arm/mman.h Fri Jan 10 16:35:33 2003 +++ linux/include/asm-arm/mman.h Wed Aug 20 14:42:58 2003 @@@@ -24,6 +24,7 @@@@ #define MCL_CURRENT 1 /* lock all current mappings */ #define MCL_FUTURE 2 /* lock all future mappings */ +#define MCL_MEMALLOC 4 /* allow allocation of reserved memory */ #define MADV_NORMAL 0x0 /* default page-in behavior */ #define MADV_RANDOM 0x1 /* page-in minimum required */ --- linux-2.4.21/include/asm-cris/mman.h Fri Jan 10 16:35:36 2003 +++ linux/include/asm-cris/mman.h Wed Aug 20 14:42:58 2003 @@@@ -26,6 +26,7 @@@@ #define MCL_CURRENT 1 /* lock all current mappings */ #define MCL_FUTURE 2 /* lock all future mappings */ +#define MCL_MEMALLOC 4 /* allow allocation of reserved memory */ #define MADV_NORMAL 0x0 /* default page-in behavior */ #define MADV_RANDOM 0x1 /* page-in minimum required */ --- linux-2.4.21/include/asm-i386/mman.h Fri Jan 10 16:35:37 2003 +++ linux/include/asm-i386/mman.h Wed Aug 20 14:42:58 2003 @@@@ -24,6 +24,7 @@@@ #define MCL_CURRENT 1 /* lock all current mappings */ #define MCL_FUTURE 2 /* lock all future mappings */ +#define MCL_MEMALLOC 4 /* allow allocation of reserved memory */ #define MADV_NORMAL 0x0 /* default page-in behavior */ #define MADV_RANDOM 0x1 /* page-in minimum required */ --- linux-2.4.21/include/asm-ia64/mman.h Fri Jan 10 16:35:38 2003 +++ linux/include/asm-ia64/mman.h Wed Aug 20 14:42:58 2003 @@@@ -32,6 +32,7 @@@@ #define MCL_CURRENT 1 /* lock all current mappings */ #define MCL_FUTURE 2 /* lock all future mappings */ +#define MCL_MEMALLOC 4 /* allow allocation of reserved memory */ #define MADV_NORMAL 0x0 /* default page-in behavior */ #define MADV_RANDOM 0x1 /* page-in minimum required */ --- linux-2.4.21/include/asm-m68k/mman.h Fri Jan 10 16:35:43 2003 +++ linux/include/asm-m68k/mman.h Wed Aug 20 14:42:58 2003 @@@@ -24,6 +24,7 @@@@ #define MCL_CURRENT 1 /* lock all current mappings */ #define MCL_FUTURE 2 /* lock all future mappings */ +#define MCL_MEMALLOC 4 /* allow allocation of reserved memory */ #define MADV_NORMAL 0x0 /* default page-in behavior */ #define MADV_RANDOM 0x1 /* page-in minimum required */ --- linux-2.4.21/include/asm-mips/mman.h Fri Jan 10 16:35:44 2003 +++ linux/include/asm-mips/mman.h Wed Aug 20 14:42:58 2003 @@@@ -55,6 +55,7 @@@@ */ #define MCL_CURRENT 1 /* lock all current mappings */ #define MCL_FUTURE 2 /* lock all future mappings */ +#define MCL_MEMALLOC 4 /* allow allocation of reserved memory */ #define MADV_NORMAL 0x0 /* default page-in behavior */ #define MADV_RANDOM 0x1 /* page-in minimum required */ --- linux-2.4.21/include/asm-mips64/mman.h Fri Jan 10 16:35:45 2003 +++ linux/include/asm-mips64/mman.h Wed Aug 20 14:42:58 2003 @@@@ -53,6 +53,7 @@@@ */ #define MCL_CURRENT 1 /* lock all current mappings */ #define MCL_FUTURE 2 /* lock all future mappings */ +#define MCL_MEMALLOC 4 /* allow allocation of reserved memory */ #define MADV_NORMAL 0x0 /* default page-in behavior */ #define MADV_RANDOM 0x1 /* page-in minimum required */ --- linux-2.4.21/include/asm-parisc/mman.h Fri Jan 10 16:35:47 2003 +++ linux/include/asm-parisc/mman.h Wed Aug 20 14:42:58 2003 @@@@ -24,6 +24,7 @@@@ #define MCL_CURRENT 1 /* lock all current mappings */ #define MCL_FUTURE 2 /* lock all future mappings */ +#define MCL_MEMALLOC 4 /* allow allocation of reserved memory */ #define MADV_NORMAL 0 /* no further special treatment */ #define MADV_RANDOM 1 /* expect random page references */ --- linux-2.4.21/include/asm-ppc/mman.h Fri Jun 13 16:32:50 2003 +++ linux/include/asm-ppc/mman.h Wed Aug 20 14:42:58 2003 @@@@ -25,6 +25,7 @@@@ #define MCL_CURRENT 0x2000 /* lock all currently mapped pages */ #define MCL_FUTURE 0x4000 /* lock all additions to address space */ +#define MCL_MEMALLOC 0x8000 /* allow allocation of reserved memory */ #define MADV_NORMAL 0x0 /* default page-in behavior */ #define MADV_RANDOM 0x1 /* page-in minimum required */ --- linux-2.4.21/include/asm-ppc64/mman.h Fri Jan 10 16:35:49 2003 +++ linux/include/asm-ppc64/mman.h Wed Aug 20 14:42:58 2003 @@@@ -31,6 +31,7 @@@@ #define MCL_CURRENT 0x2000 /* lock all currently mapped pages */ #define MCL_FUTURE 0x4000 /* lock all additions to address space */ +#define MCL_MEMALLOC 0x8000 /* allow allocation of reserved memory */ #define MADV_NORMAL 0x0 /* default page-in behavior */ #define MADV_RANDOM 0x1 /* page-in minimum required */ --- linux-2.4.21/include/asm-s390/mman.h Fri Jan 10 16:35:49 2003 +++ linux/include/asm-s390/mman.h Wed Aug 20 14:42:58 2003 @@@@ -32,6 +32,7 @@@@ #define MCL_CURRENT 1 /* lock all current mappings */ #define MCL_FUTURE 2 /* lock all future mappings */ +#define MCL_MEMALLOC 4 /* allow allocation of reserved memory */ #define MADV_NORMAL 0x0 /* default page-in behavior */ #define MADV_RANDOM 0x1 /* page-in minimum required */ --- linux-2.4.21/include/asm-s390x/mman.h Fri Jan 10 16:35:50 2003 +++ linux/include/asm-s390x/mman.h Wed Aug 20 14:42:58 2003 @@@@ -32,6 +32,7 @@@@ #define MCL_CURRENT 1 /* lock all current mappings */ #define MCL_FUTURE 2 /* lock all future mappings */ +#define MCL_MEMALLOC 4 /* allow allocation of reserved memory */ #define MADV_NORMAL 0x0 /* default page-in behavior */ #define MADV_RANDOM 0x1 /* page-in minimum required */ --- linux-2.4.21/include/asm-sh/mman.h Fri Jan 10 16:35:52 2003 +++ linux/include/asm-sh/mman.h Wed Aug 20 14:42:58 2003 @@@@ -24,6 +24,7 @@@@ #define MCL_CURRENT 1 /* lock all current mappings */ #define MCL_FUTURE 2 /* lock all future mappings */ +#define MCL_MEMALLOC 4 /* allow allocation of reserved memory */ #define MADV_NORMAL 0x0 /* default page-in behavior */ #define MADV_RANDOM 0x1 /* page-in minimum required */ --- linux-2.4.21/include/asm-sparc/mman.h Fri Jun 13 16:32:51 2003 +++ linux/include/asm-sparc/mman.h Wed Aug 20 14:42:58 2003 @@@@ -30,6 +30,7 @@@@ #define MCL_CURRENT 0x2000 /* lock all currently mapped pages */ #define MCL_FUTURE 0x4000 /* lock all additions to address space */ +#define MCL_MEMALLOC 0x8000 /* allow allocation of reserved memory */ /* XXX Need to add flags to SunOS's mctl, mlockall, and madvise system * XXX calls. --- linux-2.4.21/include/asm-sparc64/mman.h Fri Jun 13 16:32:51 2003 +++ linux/include/asm-sparc64/mman.h Wed Aug 20 14:42:58 2003 @@@@ -30,6 +30,7 @@@@ #define MCL_CURRENT 0x2000 /* lock all currently mapped pages */ #define MCL_FUTURE 0x4000 /* lock all additions to address space */ +#define MCL_MEMALLOC 0x8000 /* allow allocation of reserved memory */ /* XXX Need to add flags to SunOS's mctl, mlockall, and madvise system * XXX calls. --- linux-2.4.21/include/asm-x86_64/mman.h Fri Jan 10 16:35:53 2003 +++ linux/include/asm-x86_64/mman.h Wed Aug 20 14:42:58 2003 @@@@ -25,6 +25,7 @@@@ #define MCL_CURRENT 1 /* lock all current mappings */ #define MCL_FUTURE 2 /* lock all future mappings */ +#define MCL_MEMALLOC 4 /* allow allocation of reserved memory */ #define MADV_NORMAL 0x0 /* default page-in behavior */ #define MADV_RANDOM 0x1 /* page-in minimum required */ --- linux-2.4.21/mm/mlock.c Fri Jan 10 16:36:03 2003 +++ linux/mm/mlock.c Wed Aug 20 14:42:58 2003 @@@@ -244,6 +244,11 @@@@ if (!capable(CAP_IPC_LOCK)) return -EPERM; + if (flags & MCL_MEMALLOC) + current->flags |= PF_MEMALLOC; + else + current->flags &= ~PF_MEMALLOC; + def_flags = 0; if (flags & MCL_FUTURE) def_flags = VM_LOCKED; @@@@ -269,7 +274,7 @@@@ int ret = -EINVAL; down_write(¤t->mm->mmap_sem); - if (!flags || (flags & ~(MCL_CURRENT | MCL_FUTURE))) + if (!flags || (flags & ~(MCL_CURRENT | MCL_FUTURE | MCL_MEMALLOC))) goto out; lock_limit = current->rlim[RLIMIT_MEMLOCK].rlim_cur; --- linux-2.4.21/mm/oom_kill.c Fri Jan 10 16:36:03 2003 +++ linux/mm/oom_kill.c Wed Aug 20 14:42:58 2003 @@@@ -61,6 +61,13 @@@@ if (!p->mm) return 0; + + /* + * The system's likely doomed if we have to kill a PF_MEMALLOC process. + */ + if (p->flags & PF_MEMALLOC) + return 1; + /* * The memory size of the process is the basis for the badness. */ --- linux-2.4.21/mm/page_alloc.c Fri Jan 10 16:36:03 2003 +++ linux/mm/page_alloc.c Wed Aug 20 14:42:58 2003 @@@@ -254,6 +254,7 @@@@ { struct page * page = NULL; int __freed = 0; + unsigned long pf_memalloc; if (!(gfp_mask & __GFP_WAIT)) goto out; @@@@ -261,11 +262,12 @@@@ BUG(); current->allocation_order = order; + pf_memalloc = current->flags & PF_MEMALLOC; current->flags |= PF_MEMALLOC | PF_FREE_PAGES; __freed = try_to_free_pages_zone(classzone, gfp_mask); - current->flags &= ~(PF_MEMALLOC | PF_FREE_PAGES); + current->flags &= ~(PF_MEMALLOC | PF_FREE_PAGES) | pf_memalloc; if (current->nr_local_pages) { struct list_head * entry, * local_pages; @