Badari Pulavarty
f6b3ec238d
[PATCH] madvise(MADV_REMOVE): remove pages from tmpfs shm backing store
...
Here is the patch to implement madvise(MADV_REMOVE) - which frees up a
given range of pages & its associated backing store. Current
implementation supports only shmfs/tmpfs and other filesystems return
-ENOSYS.
"Some app allocates large tmpfs files, then when some task quits and some
client disconnect, some memory can be released. However the only way to
release tmpfs-swap is to MADV_REMOVE". - Andrea Arcangeli
Databases want to use this feature to drop a section of their bufferpool
(shared memory segments) - without writing back to disk/swap space.
This feature is also useful for supporting hot-plug memory on UML.
Concerns raised by Andrew Morton:
- "We have no plan for holepunching! If we _do_ have such a plan (or
might in the future) then what would the API look like? I think
sys_holepunch(fd, start, len), so we should start out with that."
- Using madvise is very weird, because people will ask "why do I need to
mmap my file before I can stick a hole in it?"
- None of the other madvise operations call into the filesystem in this
manner. A broad question is: is this capability an MM operation or a
filesytem operation? truncate, for example, is a filesystem operation
which sometimes has MM side-effects. madvise is an mm operation and with
this patch, it gains FS side-effects, only they're really, really
significant ones."
Comments:
- Andrea suggested the fs operation too but then it's more efficient to
have it as a mm operation with fs side effects, because they don't
immediatly know fd and physical offset of the range. It's possible to
fixup in userland and to use the fs operation but it's more expensive,
the vmas are already in the kernel and we can use them.
Short term plan & Future Direction:
- We seem to need this interface only for shmfs/tmpfs files in the short
term. We have to add hooks into the filesystem for correctness and
completeness. This is what this patch does.
- In the future, plan is to support both fs and mmap apis also. This
also involves (other) filesystem specific functions to be implemented.
- Current patch doesn't support VM_NONLINEAR - which can be addressed in
the future.
Signed-off-by: Badari Pulavarty <pbadari@us.ibm.com>
Cc: Hugh Dickins <hugh@veritas.com>
Cc: Andrea Arcangeli <andrea@suse.de>
Cc: Michael Kerrisk <mtk-manpages@gmx.net>
Cc: Ulrich Drepper <drepper@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-06 08:33:22 -08:00
..
iseries
modify defines according to _ASM_POWERPC_ISERIES_
2005-11-02 15:53:01 +11:00
8253pit.h
[PATCH] powerpc: Standardize on _ASM_POWERPC header symbol prefix
2005-09-09 22:11:34 +10:00
a.out.h
[PATCH] powerpc: Merge include/asm-ppc*/a.out.h into include/asm-powerpc
2005-09-21 19:21:08 +10:00
abs_addr.h
[PATCH] powerpc: Move various ppc64 files with no ppc32 equivalent to powerpc
2005-11-10 11:24:04 +11:00
agp.h
[PATCH] powerpc: Standardize on _ASM_POWERPC header symbol prefix
2005-09-09 22:11:34 +10:00
asm-compat.h
[PATCH] powerpc: Consolidate asm compatibility macros
2005-11-10 13:10:38 +11:00
atomic.h
[PATCH] atomic: inc_not_zero
2005-11-13 18:14:16 -08:00
auxvec.h
[PATCH] powerpc: Merge vdso's and add vdso support to 32 bits kernel
2005-11-11 22:25:39 +11:00
backlight.h
powerpc: Merged asm/backlight.h
2005-10-11 09:59:38 +10:00
bitops.h
[FLS64]: generic version
2006-01-03 13:11:06 -08:00
btext.h
powerpc: Move a bunch of ppc64 headers to include/asm-powerpc
2005-11-14 17:22:01 +11:00
bug.h
[PATCH] powerpc: Consolidate asm compatibility macros
2005-11-10 13:10:38 +11:00
bugs.h
[PATCH] powerpc: Make check_bugs() static inline
2005-09-09 22:11:35 +10:00
byteorder.h
[PATCH] powerpc: merge byteorder.h
2005-09-28 15:42:53 +10:00
cache.h
[PATCH] powerpc: Merge cacheflush.h and cache.h
2005-11-10 13:09:22 +11:00
cacheflush.h
[PATCH] powerpc: Merge cacheflush.h and cache.h
2005-11-10 13:09:22 +11:00
checksum.h
[PATCH] powerpc: merge include/asm-ppc*/checksum.h into include/asm-powerpc/checksum.h
2005-10-26 15:54:31 +10:00
compat.h
[PATCH] powerpc: Move various ppc64 files with no ppc32 equivalent to powerpc
2005-11-10 11:24:04 +11:00
cputable.h
[PATCH] powerpc: merge align.c
2005-11-18 14:39:23 +11:00
cputime.h
current.h
[PATCH] powerpc: Merge current.h
2005-11-10 11:23:53 +11:00
dbdma.h
powerpc: Merge various powermac-related header files.
2005-10-20 20:53:39 +10:00
delay.h
powerpc: Fix delay functions for 601 processors
2005-11-18 14:08:12 +11:00
div64.h
dma-mapping.h
powerpc: merge dma-mapping.h
2005-11-19 01:48:52 +11:00
dma.h
[PATCH] powerpc: Merge asm-ppc*/dma.h
2005-09-22 21:03:33 +10:00
eeh.h
[PATCH] Avoid use of uninitialised spinlock in EEH.
2005-11-17 16:53:38 +11:00
eeh_event.h
[PATCH] ppc64: PCI error event dispatcher
2005-11-10 11:38:05 +11:00
elf.h
[PATCH] powerpc: Merge vdso's and add vdso support to 32 bits kernel
2005-11-11 22:25:39 +11:00
emergency-restart.h
errno.h
[PATCH] powerpc: Standardize on _ASM_POWERPC header symbol prefix
2005-09-09 22:11:34 +10:00
fcntl.h
firmware.h
[PATCH] powerpc: merge code values for identifying platforms
2005-11-10 13:37:51 +11:00
floppy.h
powerpc: Move a bunch of ppc64 headers to include/asm-powerpc
2005-11-14 17:22:01 +11:00
futex.h
[PATCH] powerpc: Consolidate asm compatibility macros
2005-11-10 13:10:38 +11:00
grackle.h
powerpc: Pull out MPC106 (grackle) initialization code into its own file
2005-10-26 17:16:38 +10:00
hardirq.h
powerpc: Get 64-bit configs to compile with ARCH=powerpc
2005-10-10 22:50:37 +10:00
heathrow.h
powerpc: Merge various powermac-related header files.
2005-10-20 20:53:39 +10:00
hvcall.h
[PATCH] powerpc: Move more ppc64 files with no ppc32 equivalent to powerpc
2005-11-10 15:32:37 +11:00
hvconsole.h
powerpc: Move a bunch of ppc64 headers to include/asm-powerpc
2005-11-14 17:22:01 +11:00
hvcserver.h
powerpc: Move a bunch of ppc64 headers to include/asm-powerpc
2005-11-14 17:22:01 +11:00
hw_irq.h
ppc64: remove ppc_irq_dispatch_handler
2005-11-09 16:19:53 +11:00
i8259.h
powerpc: Merge i8259.c into arch/powerpc/sysdev
2005-10-26 16:47:42 +10:00
ide.h
powerpc: merge ide.h
2005-11-08 12:20:34 +11:00
io.h
powerpc: Trivially merge several headers from asm-ppc64 to asm-powerpc
2005-11-19 20:17:32 +11:00
ioctl.h
[PATCH] powerpc: Standardize on _ASM_POWERPC header symbol prefix
2005-09-09 22:11:34 +10:00
ioctls.h
powerpc: remove duplicate ioctl definitions
2005-11-01 14:36:30 +11:00
iommu.h
[PATCH] powerpc: update my email address
2005-11-23 21:23:20 +11:00
ipc.h
ipcbuf.h
[PATCH] powerpc: Keep fixing merged ipcbuf.h
2005-11-03 16:58:17 +11:00
irq.h
[PATCH] ppc32: fix PQ2 PCI DMA interrupt handling
2005-11-11 22:19:56 +11:00
kdebug.h
powerpc: clean up after powermac build merge
2005-09-27 13:51:59 +10:00
kexec.h
[PATCH] powerpc: Export htab start/end via device tree
2005-11-14 16:34:06 +11:00
keylargo.h
powerpc: Merge various powermac-related header files.
2005-10-20 20:53:39 +10:00
kmap_types.h
[PATCH] powerpc: Merge kmap_types.h
2005-09-19 09:38:49 +10:00
kprobes.h
[PATCH] Kprobes: Track kprobe on a per_cpu basis - ppc64 changes
2005-11-07 07:53:45 -08:00
linkage.h
[PATCH] powerpc: Standardize on _ASM_POWERPC header symbol prefix
2005-09-09 22:11:34 +10:00
lmb.h
powerpc: Merge in the ppc64 version of the prom code.
2005-10-06 12:06:20 +10:00
local.h
lppaca.h
[PATCH] powerpc: Move various ppc64 files with no ppc32 equivalent to powerpc
2005-11-10 11:24:04 +11:00
machdep.h
[PATCH] powerpc: Turn cpu_irq_down into kexec_cpu_down
2005-11-14 16:33:09 +11:00
macio.h
powerpc: Merge various powermac-related header files.
2005-10-20 20:53:39 +10:00
mc146818rtc.h
[PATCH] powerpc: Standardize on _ASM_POWERPC header symbol prefix
2005-09-09 22:11:34 +10:00
mediabay.h
powerpc: Merge various powermac-related header files.
2005-10-20 20:53:39 +10:00
mman.h
[PATCH] madvise(MADV_REMOVE): remove pages from tmpfs shm backing store
2006-01-06 08:33:22 -08:00
mmu.h
[PATCH] powerpc: Add missing icache flushes for hugepages
2005-12-09 16:30:48 +11:00
mmu_context.h
powerpc: Trivially merge several headers from asm-ppc64 to asm-powerpc
2005-11-19 20:17:32 +11:00
mmzone.h
powerpc: Trivially merge several headers from asm-ppc64 to asm-powerpc
2005-11-19 20:17:32 +11:00
module.h
[PATCH] powerpc: Standardize on _ASM_POWERPC header symbol prefix
2005-09-09 22:11:34 +10:00
mpic.h
powerpc: Move smp_mpic_message_pass into mpic.c
2005-10-20 17:09:51 +10:00
msgbuf.h
[PATCH] powerpc: Merge a few more include files
2005-09-09 22:11:35 +10:00
namei.h
[PATCH] powerpc: Standardize on _ASM_POWERPC header symbol prefix
2005-09-09 22:11:34 +10:00
numnodes.h
[PATCH] powerpc: Merge (move) numnodes.h and sparsemem.h
2005-11-02 15:25:42 +11:00
nvram.h
powerpc: Remove an extraneous and incorrect declaration of pmac_nvram_init.
2005-11-15 11:17:02 +11:00
of_device.h
powerpc: Merge of_device.c and of_device.h
2005-10-06 13:22:17 +10:00
ohare.h
powerpc: Merge various powermac-related header files.
2005-10-20 20:53:39 +10:00
oprofile_impl.h
[PATCH] powerpc: merge oprofile headers
2005-09-21 19:21:08 +10:00
paca.h
[PATCH] powerpc: Move various ppc64 files with no ppc32 equivalent to powerpc
2005-11-10 11:24:04 +11:00
page.h
[PATCH] powerpc: Merge page.h
2005-11-14 16:33:05 +11:00
page_32.h
powerpc: Fix 32-bit compile: PPC_MEMSTART was undeclared
2005-11-14 17:32:50 +11:00
page_64.h
[PATCH] powerpc: More hugepage boundary case fixes
2005-11-25 22:12:45 +11:00
param.h
[PATCH] powerpc: Merge a few more include files
2005-09-09 22:11:35 +10:00
parport.h
[PATCH] powerpc: Merge parport.h
2005-10-27 20:50:54 +10:00
pci-bridge.h
powerpc: Trivially merge several headers from asm-ppc64 to asm-powerpc
2005-11-19 20:17:32 +11:00
pci.h
powerpc: Merge pci.h
2005-11-19 20:46:04 +11:00
percpu.h
pgalloc.h
powerpc: Trivially merge several headers from asm-ppc64 to asm-powerpc
2005-11-19 20:17:32 +11:00
pgtable-4k.h
powerpc: Trivially merge several headers from asm-ppc64 to asm-powerpc
2005-11-19 20:17:32 +11:00
pgtable-64k.h
powerpc: Trivially merge several headers from asm-ppc64 to asm-powerpc
2005-11-19 20:17:32 +11:00
pgtable.h
powerpc: Trivially merge several headers from asm-ppc64 to asm-powerpc
2005-11-19 20:17:32 +11:00
pmac_feature.h
powerpc: Merge various powermac-related header files.
2005-10-20 20:53:39 +10:00
pmac_low_i2c.h
powerpc: Merge various powermac-related header files.
2005-10-20 20:53:39 +10:00
pmc.h
[PATCH] ppc32: fix perf_irq extern on e500
2005-11-09 07:55:52 -08:00
poll.h
[PATCH] powerpc: Standardize on _ASM_POWERPC header symbol prefix
2005-09-09 22:11:34 +10:00
posix_types.h
[PATCH] powerpc: Merge asm-ppc*/posix_types.h
2005-09-21 19:21:07 +10:00
ppc-pci.h
powerpc: Merge pci.h
2005-11-19 20:46:04 +11:00
ppc_asm.h
[PATCH] powerpc: Consolidate asm compatibility macros
2005-11-10 13:10:38 +11:00
processor.h
[PATCH] powerpc: Merge vdso's and add vdso support to 32 bits kernel
2005-11-11 22:25:39 +11:00
prom.h
[PATCH] ppc64: SMU partition recovery
2005-11-08 11:17:40 +11:00
pSeries_reconfig.h
powerpc: Merge in the ppc64 version of the prom code.
2005-10-06 12:06:20 +10:00
ptrace.h
powerpc: merge ptrace.h
2005-11-03 16:03:07 +11:00
reg.h
[PATCH] powerpc: merge code values for identifying platforms
2005-11-10 13:37:51 +11:00
reg_8xx.h
[PATCH] powerpc: Merge cacheflush.h and cache.h
2005-11-10 13:09:22 +11:00
resource.h
rtas.h
powerpc: Merge remaining RTAS code
2005-11-03 14:41:19 +11:00
rtc.h
powerpc: Make set_rtc_time() return error code from lower-level function
2005-10-22 15:57:55 +10:00
rwsem.h
Merge ../linux-2.6 by hand
2005-10-31 13:37:12 +11:00
scatterlist.h
[PATCH] powerpc: merge scatterlist.h
2005-10-27 16:45:52 +10:00
seccomp.h
[PATCH] powerpc: Merge asm-ppc*/seccomp.h, drop TIF_32BIT check
2005-09-25 22:38:45 +10:00
sections.h
[PATCH] powerpc: Merge simplified sections.h into asm-powerpc
2005-09-19 09:38:50 +10:00
semaphore.h
Merge ../linux-2.6 by hand
2005-10-31 13:37:12 +11:00
sembuf.h
[PATCH] powerpc: Standardize on _ASM_POWERPC header symbol prefix
2005-09-09 22:11:34 +10:00
serial.h
powerpc: Move a bunch of ppc64 headers to include/asm-powerpc
2005-11-14 17:22:01 +11:00
setup.h
[PATCH] powerpc: Merge a few more include files
2005-09-09 22:11:35 +10:00
shmbuf.h
[PATCH] powerpc: Fix __power64__ typos that should be __powerpc64__
2005-09-09 22:11:35 +10:00
shmparam.h
[PATCH] powerpc: Standardize on _ASM_POWERPC header symbol prefix
2005-09-09 22:11:34 +10:00
sigcontext.h
powerpc: merge sigcontext.h
2005-11-03 16:24:25 +11:00
siginfo.h
[PATCH] ppc64: Add definitions for new PTRACE calls
2005-09-12 17:19:12 +10:00
signal.h
[PATCH] powerpc: Merge signal.h
2005-11-10 11:23:46 +11:00
smp.h
powerpc: Various UP build fixes
2005-11-07 13:18:13 +11:00
smu.h
[PATCH] ppc64: SMU partition recovery
2005-11-08 11:17:40 +11:00
socket.h
[PATCH] powerpc: Standardize on _ASM_POWERPC header symbol prefix
2005-09-09 22:11:34 +10:00
sockios.h
[PATCH] powerpc: Standardize on _ASM_POWERPC header symbol prefix
2005-09-09 22:11:34 +10:00
sparsemem.h
[PATCH] ppc64: Increase sparsemem defaults
2005-11-11 22:21:41 +11:00
spinlock.h
powerpc: Merge spinlock.h
2005-11-19 20:50:46 +11:00
spinlock_types.h
[PATCH] powerpc: merge include/asm-ppc*/spinlock_types.h into include/asm-powerpc/spinlock_types.h
2005-09-21 19:21:09 +10:00
sstep.h
powerpc: Make single-stepping emulation (mostly) usable on 32-bit
2005-10-28 22:48:08 +10:00
stat.h
powerpc: merge stat.h
2005-11-03 16:02:23 +11:00
statfs.h
[PATCH] powerpc: merge include/asm-ppc*/statfs.h into include/asm-powerpc/statfs.h
2005-09-21 19:21:10 +10:00
string.h
[PATCH] powerpc: Standardize on _ASM_POWERPC header symbol prefix
2005-09-09 22:11:34 +10:00
synch.h
[PATCH] powerpc: merge atomic.h, memory.h
2005-09-25 22:38:46 +10:00
system.h
powerpc: Move some extern declarations from C code into headers
2005-11-10 15:53:40 +11:00
tce.h
[PATCH] powerpc: update my email address
2005-11-23 21:23:20 +11:00
termbits.h
[PATCH] powerpc: Standardize on _ASM_POWERPC header symbol prefix
2005-09-09 22:11:34 +10:00
termios.h
powerpc: use asm-generic/termios.h
2005-11-01 14:36:55 +11:00
thread_info.h
[PATCH] ppc64: support 64k pages
2005-11-06 16:56:47 -08:00
time.h
merge filename and modify references to iseries/hv_call.h
2005-11-01 16:59:20 +11:00
timex.h
[PATCH] ppc32: Fix timekeeping
2005-10-12 08:24:47 -07:00
tlb.h
powerpc: merge tlb.h
2005-11-04 10:20:27 +11:00
tlbflush.h
[PATCH] ppc64: support 64k pages
2005-11-06 16:56:47 -08:00
topology.h
[PATCH] powerpc: Fix typo in topology.h
2005-11-18 13:18:11 +11:00
types.h
[PATCH] ppc64: make dma_addr_t 64 bits
2005-10-27 16:45:50 +10:00
uaccess.h
[PATCH] powerpc: Consolidate asm compatibility macros
2005-11-10 13:10:38 +11:00
ucontext.h
powerpc: merge ucontext.h
2005-11-03 16:59:17 +11:00
udbg.h
[PATCH] powerpc: Move udbg code to arch/powerpc
2005-11-11 22:23:34 +11:00
unaligned.h
[PATCH] powerpc: Standardize on _ASM_POWERPC header symbol prefix
2005-09-09 22:11:34 +10:00
uninorth.h
powerpc: Merge various powermac-related header files.
2005-10-20 20:53:39 +10:00
unistd.h
Merge ../linux-2.6 by hand
2005-10-31 13:37:12 +11:00
user.h
[PATCH] powerpc: Merge a few more include files
2005-09-09 22:11:35 +10:00
vdso.h
[PATCH] powerpc: Make the vDSO functions set error code ( #2 )
2005-11-16 14:05:11 +11:00
vdso_datapage.h
[PATCH] powerpc: vdso fixes (take #2 )
2005-11-14 16:35:58 +11:00
vga.h
[PATCH] powerpc: Merge asm-ppc*/vga.h
2005-09-21 19:21:09 +10:00
vio.h
powerpc: Add a shutdown member to vio_driver
2005-10-24 17:40:23 +10:00
xmon.h
powerpc: Simplify and clean up the xmon terminal I/O
2005-11-08 22:55:08 +11:00
xor.h