Revision 6328650bb4d854a7dc1498d1c0048b838b0d340c authored by Hugh Dickins on 03 August 2011, 23:21:18 UTC, committed by Linus Torvalds on 04 August 2011, 00:25:22 UTC
A patchset to extend tmpfs to MAX_LFS_FILESIZE by abandoning its peculiar swap vector, instead keeping a file's swap entries in the same radix tree as its struct page pointers: thus saving memory, and simplifying its code and locking. This patch: The radix_tree is used by several subsystems for different purposes. A major use is to store the struct page pointers of a file's pagecache for memory management. But what if mm wanted to store something other than page pointers there too? The low bit of a radix_tree entry is already used to denote an indirect pointer, for internal use, and the unlikely radix_tree_deref_retry() case. Define the next bit as denoting an exceptional entry, and supply inline functions radix_tree_exception() to return non-0 in either unlikely case, and radix_tree_exceptional_entry() to return non-0 in the second case. If a subsystem already uses radix_tree with that bit set, no problem: it does not affect internal workings at all, but is defined for the convenience of those storing well-aligned pointers in the radix_tree. The radix_tree_gang_lookups have an implicit assumption that the caller can deduce the offset of each entry returned e.g. by the page->index of a struct page. But that may not be feasible for some kinds of item to be stored there. radix_tree_gang_lookup_slot() allow for an optional indices argument, output array in which to return those offsets. The same could be added to other radix_tree_gang_lookups, but for now keep it to the only one for which we need it. Signed-off-by: Hugh Dickins <hughd@google.com> Acked-by: Rik van Riel <riel@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent 70d3271
File | Mode | Size |
---|---|---|
basic | ||
coccinelle | ||
dtc | ||
genksyms | ||
kconfig | ||
ksymoops | ||
mod | ||
package | ||
rt-tester | ||
selinux | ||
tracing | ||
.gitignore | -rw-r--r-- | 96 bytes |
Kbuild.include | -rw-r--r-- | 10.1 KB |
Lindent | -rwxr-xr-x | 460 bytes |
Makefile | -rw-r--r-- | 1.2 KB |
Makefile.asm-generic | -rw-r--r-- | 681 bytes |
Makefile.build | -rw-r--r-- | 14.5 KB |
Makefile.clean | -rw-r--r-- | 3.2 KB |
Makefile.fwinst | -rw-r--r-- | 2.0 KB |
Makefile.headersinst | -rw-r--r-- | 3.7 KB |
Makefile.help | -rw-r--r-- | 68 bytes |
Makefile.host | -rw-r--r-- | 6.5 KB |
Makefile.lib | -rw-r--r-- | 12.0 KB |
Makefile.modbuiltin | -rw-r--r-- | 1.8 KB |
Makefile.modinst | -rw-r--r-- | 1.0 KB |
Makefile.modpost | -rw-r--r-- | 5.1 KB |
bin2c.c | -rw-r--r-- | 702 bytes |
bloat-o-meter | -rwxr-xr-x | 1.8 KB |
bootgraph.pl | -rw-r--r-- | 5.6 KB |
checkincludes.pl | -rwxr-xr-x | 1.8 KB |
checkkconfigsymbols.sh | -rwxr-xr-x | 1.8 KB |
checkpatch.pl | -rwxr-xr-x | 88.2 KB |
checkstack.pl | -rwxr-xr-x | 5.2 KB |
checksyscalls.sh | -rwxr-xr-x | 5.5 KB |
checkversion.pl | -rwxr-xr-x | 1.9 KB |
cleanfile | -rwxr-xr-x | 3.4 KB |
cleanpatch | -rwxr-xr-x | 5.0 KB |
coccicheck | -rwxr-xr-x | 2.9 KB |
config | -rwxr-xr-x | 2.8 KB |
conmakehash.c | -rw-r--r-- | 6.0 KB |
decodecode | -rwxr-xr-x | 1.9 KB |
depmod.sh | -rwxr-xr-x | 1.3 KB |
diffconfig | -rwxr-xr-x | 3.6 KB |
docproc.c | -rw-r--r-- | 14.1 KB |
export_report.pl | -rw-r--r-- | 4.5 KB |
extract-ikconfig | -rwxr-xr-x | 1.6 KB |
gcc-goto.sh | -rw-r--r-- | 224 bytes |
gcc-version.sh | -rw-r--r-- | 819 bytes |
gcc-x86_32-has-stack-protector.sh | -rw-r--r-- | 183 bytes |
gcc-x86_64-has-stack-protector.sh | -rw-r--r-- | 199 bytes |
gen_initramfs_list.sh | -rw-r--r-- | 7.4 KB |
get_maintainer.pl | -rwxr-xr-x | 53.8 KB |
gfp-translate | -rw-r--r-- | 1.7 KB |
headerdep.pl | -rwxr-xr-x | 3.5 KB |
headers.sh | -rwxr-xr-x | 530 bytes |
headers_check.pl | -rw-r--r-- | 2.7 KB |
headers_install.pl | -rw-r--r-- | 1.8 KB |
kallsyms.c | -rw-r--r-- | 15.2 KB |
kernel-doc | -rwxr-xr-x | 62.3 KB |
makelst | -rwxr-xr-x | 773 bytes |
markup_oops.pl | -rw-r--r-- | 8.1 KB |
mkcompile_h | -rwxr-xr-x | 2.5 KB |
mkmakefile | -rw-r--r-- | 1.2 KB |
mksysmap | -rw-r--r-- | 1.3 KB |
mkuboot.sh | -rwxr-xr-x | 379 bytes |
mkversion | -rw-r--r-- | 74 bytes |
module-common.lds | -rw-r--r-- | 737 bytes |
namespace.pl | -rwxr-xr-x | 13.0 KB |
patch-kernel | -rwxr-xr-x | 9.8 KB |
pnmtologo.c | -rw-r--r-- | 11.7 KB |
profile2linkerlist.pl | -rw-r--r-- | 375 bytes |
recordmcount.c | -rw-r--r-- | 11.9 KB |
recordmcount.h | -rw-r--r-- | 16.3 KB |
recordmcount.pl | -rwxr-xr-x | 17.5 KB |
setlocalversion | -rwxr-xr-x | 3.9 KB |
show_delta | -rwxr-xr-x | 3.0 KB |
tags.sh | -rwxr-xr-x | 4.9 KB |
unifdef.c | -rw-r--r-- | 34.8 KB |
ver_linux | -rwxr-xr-x | 3.1 KB |
xz_wrap.sh | -rw-r--r-- | 559 bytes |
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...