android_kernel_xiaomi_sm8350/mm
David M. Grimes 91828a405a [PATCH] knfsd: add nfs-export support to tmpfs
We need to encode a decode the 'file' part of a handle.  We simply use the
inode number and generation number to construct the filehandle.

The generation number is the time when the file was created.  As inode numbers
cycle through the full 32 bits before being reused, there is no real chance of
the same inum being allocated to different files in the same second so this is
suitably unique.  Using time-of-day rather than e.g.  jiffies makes it less
likely that the same filehandle can be created after a reboot.

In order to be able to decode a filehandle we need to be able to lookup by
inum, which means that the inode needs to be added to the inode hash table
(tmpfs doesn't currently hash inodes as there is never a need to lookup by
inum).  To avoid overhead when not exporting, we only hash an inode when it is
first exported.  This requires a lock to ensure it isn't hashed twice.

This code is separate from the patch posted in June06 from Atal Shargorodsky
which provided the same functionality, but does borrow slightly from it.

Locking comment: Most filesystems that hash their inodes do so at the point
where the 'struct inode' is initialised, and that has suitable locking
(I_NEW).  Here in shmem, we are hashing the inode later, the first time we
need an NFS file handle for it.  We no longer have I_NEW to ensure only one
thread tries to add it to the hash table.

Cc: Atal Shargorodsky <atal@codefidence.com>
Cc: Gilad Ben-Yossef <gilad@codefidence.com>
Signed-off-by: David M. Grimes <dgrimes@navisite.com>
Signed-off-by: Neil Brown <neilb@suse.de>
Acked-by: Hugh Dickins <hugh@veritas.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-10-17 08:18:43 -07:00
..
allocpercpu.c
bootmem.c
bounce.c [PATCH] BLOCK: Separate the bounce buffering code from the highmem code [try #6] 2006-09-30 20:32:11 +02:00
fadvise.c
filemap_xip.c
filemap.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6 2006-10-04 09:06:16 -07:00
filemap.h Remove all inclusions of <linux/config.h> 2006-10-04 03:38:54 -04:00
fremap.c [PATCH] paravirt: pte clear not present 2006-10-01 00:39:33 -07:00
highmem.c [PATCH] BLOCK: Separate the bounce buffering code from the highmem code [try #6] 2006-09-30 20:32:11 +02:00
hugetlb.c [PATCH] hugetlb: fix linked list corruption in unmap_hugepage_range() 2006-10-11 11:14:15 -07:00
internal.h
Kconfig Fix "can not" in Documentation and Kconfig 2006-10-03 22:53:09 +02:00
madvise.c
Makefile [PATCH] BLOCK: Make it possible to disable the block layer [try #6] 2006-09-30 20:52:31 +02:00
memory_hotplug.c [PATCH] hot-add-mem x86_64: use CONFIG_MEMORY_HOTPLUG_RESERVE 2006-10-01 00:39:18 -07:00
memory.c [PATCH] page fault retry with NOPAGE_REFAULT 2006-10-06 08:53:40 -07:00
mempolicy.c [PATCH] Fix do_mbind warning with CONFIG_MIGRATION=n 2006-10-11 11:14:19 -07:00
mempool.c
migrate.c [PATCH] BLOCK: Make it possible to disable the block layer [try #6] 2006-09-30 20:52:31 +02:00
mincore.c
mlock.c
mmap.c Fix VM_MAYEXEC calculation 2006-10-15 14:09:55 -07:00
mmzone.c
mprotect.c [PATCH] paravirt: lazy mmu mode hooks.patch 2006-10-01 00:39:33 -07:00
mremap.c [PATCH] paravirt: lazy mmu mode hooks.patch 2006-10-01 00:39:33 -07:00
msync.c
nommu.c Spelling fix: "control" instead of "cotrol" 2006-10-03 23:21:02 +02:00
oom_kill.c [PATCH] oom: don't kill current when another OOM in progress 2006-09-29 09:18:21 -07:00
page_alloc.c [PATCH] mm: locks_freed fix 2006-10-11 11:14:19 -07:00
page_io.c
page-writeback.c fix file specification in comments 2006-10-03 23:01:26 +02:00
pdflush.c
prio_tree.c
readahead.c
rmap.c [PATCH] move rmap BUG_ON outside DEBUG_VM 2006-10-11 11:14:19 -07:00
shmem_acl.c [PATCH] Fix typos in mm/shmem_acl.c 2006-10-11 11:14:23 -07:00
shmem.c [PATCH] knfsd: add nfs-export support to tmpfs 2006-10-17 08:18:43 -07:00
slab.c [PATCH] slab: remove wrongly placed BUG_ON 2006-10-07 10:51:14 -07:00
slob.c
sparse.c
swap_state.c
swap.c
swapfile.c [PATCH] valid_swaphandles() fix 2006-09-29 09:18:23 -07:00
thrash.c
tiny-shmem.c
truncate.c [PATCH] invalidate: remove_mapping() fix 2006-10-17 08:18:43 -07:00
util.c [PATCH] slab: clean up leak tracking ifdefs a little bit 2006-10-04 07:55:13 -07:00
vmalloc.c Spelling fix: "control" instead of "cotrol" 2006-10-03 23:21:02 +02:00
vmscan.c [PATCH] invalidate: remove_mapping() fix 2006-10-17 08:18:43 -07:00
vmstat.c Remove all inclusions of <linux/config.h> 2006-10-04 03:38:54 -04:00