David Howells
e36cb0b89c
VFS: (Scripted) Convert S_ISLNK/DIR/REG(dentry->d_inode) to d_is_*(dentry)
...
Convert the following where appropriate:
(1) S_ISLNK(dentry->d_inode) to d_is_symlink(dentry).
(2) S_ISREG(dentry->d_inode) to d_is_reg(dentry).
(3) S_ISDIR(dentry->d_inode) to d_is_dir(dentry). This is actually more
complicated than it appears as some calls should be converted to
d_can_lookup() instead. The difference is whether the directory in
question is a real dir with a ->lookup op or whether it's a fake dir with
a ->d_automount op.
In some circumstances, we can subsume checks for dentry->d_inode not being
NULL into this, provided we the code isn't in a filesystem that expects
d_inode to be NULL if the dirent really *is* negative (ie. if we're going to
use d_inode() rather than d_backing_inode() to get the inode pointer).
Note that the dentry type field may be set to something other than
DCACHE_MISS_TYPE when d_inode is NULL in the case of unionmount, where the VFS
manages the fall-through from a negative dentry to a lower layer. In such a
case, the dentry type of the negative union dentry is set to the same as the
type of the lower dentry.
However, if you know d_inode is not NULL at the call site, then you can use
the d_is_xxx() functions even in a filesystem.
There is one further complication: a 0,0 chardev dentry may be labelled
DCACHE_WHITEOUT_TYPE rather than DCACHE_SPECIAL_TYPE. Strictly, this was
intended for special directory entry types that don't have attached inodes.
The following perl+coccinelle script was used:
use strict;
my @callers;
open($fd, 'git grep -l \'S_IS[A-Z].*->d_inode\' |') ||
die "Can't grep for S_ISDIR and co. callers";
@callers = <$fd>;
close($fd);
unless (@callers) {
print "No matches\n";
exit(0);
}
my @cocci = (
'@@',
'expression E;',
'@@',
'',
'- S_ISLNK(E->d_inode->i_mode)',
'+ d_is_symlink(E)',
'',
'@@',
'expression E;',
'@@',
'',
'- S_ISDIR(E->d_inode->i_mode)',
'+ d_is_dir(E)',
'',
'@@',
'expression E;',
'@@',
'',
'- S_ISREG(E->d_inode->i_mode)',
'+ d_is_reg(E)' );
my $coccifile = "tmp.sp.cocci";
open($fd, ">$coccifile") || die $coccifile;
print($fd "$_\n") || die $coccifile foreach (@cocci);
close($fd);
foreach my $file (@callers) {
chomp $file;
print "Processing ", $file, "\n";
system("spatch", "--sp-file", $coccifile, $file, "--in-place", "--no-show-diff") == 0 ||
die "spatch failed";
}
[AV: overlayfs parts skipped]
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2015-02-22 11:38:41 -05:00
..
kasan
kasan: enable instrumentation of global variables
2015-02-13 21:21:42 -08:00
backing-dev.c
Merge branch 'lazytime' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2015-02-17 16:12:34 -08:00
balloon_compaction.c
mm/balloon_compaction: fix deflation when compaction is disabled
2014-10-29 16:33:15 -07:00
bootmem.c
mem-hotplug: reset node managed pages when hot-adding a new pgdat
2014-11-13 16:17:06 -08:00
cleancache.c
mm: fix cleancache debugfs directory path
2015-01-20 14:08:31 +01:00
cma.c
mm: cma: fix totalcma_pages to include DT defined CMA regions
2015-02-11 17:06:03 -08:00
compaction.c
mm: page_alloc: add kasan hooks on alloc and free paths
2015-02-13 21:21:41 -08:00
debug-pagealloc.c
mm/debug-pagealloc: make debug-pagealloc boottime configurable
2014-12-13 12:42:48 -08:00
debug.c
mm: account pmd page tables to the process
2015-02-11 17:06:04 -08:00
dmapool.c
mm/dmapool.c: fixed a brace coding style issue
2014-10-09 22:26:00 -04:00
early_ioremap.c
mm: create generic early_ioremap() support
2014-04-07 16:36:15 -07:00
fadvise.c
vfs: remove get_xip_mem
2015-02-16 17:56:03 -08:00
failslab.c
switch debugfs to umode_t
2012-01-03 22:54:56 -05:00
filemap.c
dax,ext2: replace XIP read and write with DAX I/O
2015-02-16 17:56:03 -08:00
frontswap.c
mm/frontswap.c: fix the condition in BUG_ON
2014-12-10 17:41:08 -08:00
gup.c
Tighten rules for ACCESS_ONCE
2015-02-14 10:54:28 -08:00
highmem.c
mm/highmem: make kmap cache coloring aware
2014-08-06 18:01:22 -07:00
huge_memory.c
mm: numa: avoid unnecessary TLB flushes when setting NUMA hinting entries
2015-02-12 18:54:08 -08:00
hugetlb.c
mm: account pmd page tables to the process
2015-02-11 17:06:04 -08:00
hugetlb_cgroup.c
mm: page_counter: pull "-1" handling out of page_counter_memparse()
2015-02-11 17:06:02 -08:00
hwpoison-inject.c
mm/hwpoison-inject.c: remove unnecessary null test before debugfs_remove_recursive
2014-08-06 18:01:19 -07:00
init-mm.c
atomic: use <linux/atomic.h>
2011-07-26 16:49:47 -07:00
internal.h
mm/internal.h: don't split printk call in two
2015-02-12 18:54:10 -08:00
interval_tree.c
mm: replace vma->sharead.linear with vma->shared
2015-02-10 14:30:31 -08:00
iov_iter.c
new helper: iov_iter_bvec()
2015-01-29 00:13:11 -05:00
Kconfig
mm/zsmalloc: add statistics support
2015-02-12 18:54:12 -08:00
Kconfig.debug
mm/debug_pagealloc: remove obsolete Kconfig options
2015-01-08 15:10:52 -08:00
kmemcheck.c
mm/slab_common: move kmem_cache definition to internal header
2014-10-09 22:25:50 -04:00
kmemleak-test.c
mm/kmemleak-test.c: use pr_fmt for logging
2014-06-06 16:08:18 -07:00
kmemleak.c
kmemleak: disable kasan instrumentation for kmemleak
2015-02-13 21:21:41 -08:00
ksm.c
mm: remove rest usage of VM_NONLINEAR and pte_file()
2015-02-10 14:30:31 -08:00
list_lru.c
memcg: reparent list_lrus and free kmemcg_id on css offline
2015-02-12 18:54:10 -08:00
maccess.c
mm: Map most files to use export.h instead of module.h
2011-10-31 09:20:12 -04:00
madvise.c
vfs: remove get_xip_mem
2015-02-16 17:56:03 -08:00
Makefile
vfs: remove get_xip_mem
2015-02-16 17:56:03 -08:00
memblock.c
mm/memblock.c: refactor functions to set/clear MEMBLOCK_HOTPLUG
2014-12-13 12:42:46 -08:00
memcontrol.c
memcg: cleanup static keys decrement
2015-02-12 18:54:10 -08:00
memory-failure.c
mm: hwpoison: drop lru_add_drain_all() in __soft_offline_page()
2015-02-12 18:54:11 -08:00
memory.c
mm: allow page fault handlers to perform the COW
2015-02-16 17:56:03 -08:00
memory_hotplug.c
mm, memory_hotplug/failure: drain single zone pcplists
2014-12-10 17:41:05 -08:00
mempolicy.c
mm: use %*pb[l] to print bitmaps including cpumasks and nodemasks
2015-02-13 21:21:38 -08:00
mempool.c
mm/mempool.c: update the kmemleak stack trace for mempool allocations
2014-06-06 16:08:17 -07:00
migrate.c
mm: convert p[te|md]_mknonnuma and remaining page table manipulations
2015-02-12 18:54:08 -08:00
mincore.c
mincore: apply page table walker on do_mincore()
2015-02-11 17:06:06 -08:00
mlock.c
Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2014-10-13 15:44:12 +02:00
mm_init.c
mm/mm_init.c: mark mminit_loglevel __meminitdata
2015-02-12 18:54:11 -08:00
mmap.c
mm/mmap.c: fix arithmetic overflow in __vm_enough_memory()
2015-02-11 17:06:07 -08:00
mmu_context.c
sched/mm: call finish_arch_post_lock_switch in idle_task_exit and use_mm
2014-02-21 08:50:17 +01:00
mmu_notifier.c
mmu_notifier: add the callback for mmu_notifier_invalidate_range()
2014-11-13 13:46:09 +11:00
mmzone.c
mm: microoptimize zonelist operations
2015-02-11 17:06:02 -08:00
mprotect.c
mm: numa: avoid unnecessary TLB flushes when setting NUMA hinting entries
2015-02-12 18:54:08 -08:00
mremap.c
mm: remove rest usage of VM_NONLINEAR and pte_file()
2015-02-10 14:30:31 -08:00
msync.c
mm: remove rest usage of VM_NONLINEAR and pte_file()
2015-02-10 14:30:31 -08:00
nobootmem.c
mem-hotplug: reset node managed pages when hot-adding a new pgdat
2014-11-13 16:17:06 -08:00
nommu.c
Merge branch 'for-3.20/bdi' of git://git.kernel.dk/linux-block
2015-02-12 13:50:21 -08:00
oom_kill.c
mm: account pmd page tables to the process
2015-02-11 17:06:04 -08:00
page-writeback.c
Merge branch 'for-3.20/bdi' of git://git.kernel.dk/linux-block
2015-02-12 13:50:21 -08:00
page_alloc.c
mm: page_alloc: add kasan hooks on alloc and free paths
2015-02-13 21:21:41 -08:00
page_counter.c
mm: page_counter: pull "-1" handling out of page_counter_memparse()
2015-02-11 17:06:02 -08:00
page_ext.c
mm/page_owner: keep track of page owners
2014-12-13 12:42:48 -08:00
page_io.c
new helper: iov_iter_bvec()
2015-01-29 00:13:11 -05:00
page_isolation.c
mm, page_isolation: drain single zone pcplists
2014-12-10 17:41:05 -08:00
page_owner.c
mm/page_owner.c: remove unnecessary stack_trace field
2015-02-11 17:06:07 -08:00
pagewalk.c
mm: pagewalk: fix misbehavior of walk_page_range for vma(VM_PFNMAP)
2015-02-11 17:06:06 -08:00
percpu-km.c
percpu: implmeent pcpu_nr_empty_pop_pages and chunk->nr_populated
2014-09-02 14:46:05 -04:00
percpu-vm.c
percpu: move region iterations out of pcpu_[de]populate_chunk()
2014-09-02 14:46:02 -04:00
percpu.c
percpu: use %*pb[l] to print bitmaps including cpumasks and nodemasks
2015-02-13 21:21:37 -08:00
pgtable-generic.c
mm: convert p[te|md]_mknonnuma and remaining page table manipulations
2015-02-12 18:54:08 -08:00
process_vm_access.c
mm: gup: use get_user_pages_unlocked
2015-02-11 17:06:05 -08:00
quicklist.c
mm: delete various needless include <linux/module.h>
2011-10-31 09:20:11 -04:00
readahead.c
fs: export inode_to_bdi and use it in favor of mapping->backing_dev_info
2015-01-20 14:03:04 -07:00
rmap.c
mm: memcontrol: track move_lock state internally
2015-02-11 17:06:00 -08:00
shmem.c
VFS: (Scripted) Convert S_ISLNK/DIR/REG(dentry->d_inode) to d_is_*(dentry)
2015-02-22 11:38:41 -05:00
slab.c
slub: make dead caches discard free slabs immediately
2015-02-12 18:54:10 -08:00
slab.h
slub: make dead caches discard free slabs immediately
2015-02-12 18:54:10 -08:00
slab_common.c
mm: slub: add kernel address sanitizer support for slub allocator
2015-02-13 21:21:41 -08:00
slob.c
slub: make dead caches discard free slabs immediately
2015-02-12 18:54:10 -08:00
slub.c
mm: slub: add kernel address sanitizer support for slub allocator
2015-02-13 21:21:41 -08:00
sparse-vmemmap.c
mm/sparse: use memblock apis for early memory allocations
2014-01-21 16:19:47 -08:00
sparse.c
mm: use macros from compiler.h instead of __attribute__((...))
2014-04-07 16:35:54 -07:00
swap.c
Merge branch 'for-3.20/bdi' of git://git.kernel.dk/linux-block
2015-02-12 13:50:21 -08:00
swap_cgroup.c
mm: page_cgroup: rename file to mm/swap_cgroup.c
2014-12-10 17:41:09 -08:00
swap_state.c
fs: remove mapping->backing_dev_info
2015-01-20 14:03:05 -07:00
swapfile.c
mm: page_cgroup: rename file to mm/swap_cgroup.c
2014-12-10 17:41:09 -08:00
truncate.c
fs: export inode_to_bdi and use it in favor of mapping->backing_dev_info
2015-01-20 14:03:04 -07:00
util.c
mm/util: add kstrdup_const
2015-02-13 21:21:35 -08:00
vmacache.c
mm,vmacache: count number of system-wide flushes
2014-12-13 12:42:48 -08:00
vmalloc.c
mm: vmalloc: pass additional vm_flags to __vmalloc_node_range()
2015-02-13 21:21:42 -08:00
vmpressure.c
mm/vmpressure.c: fix race in vmpressure_work_fn()
2014-12-02 17:32:07 -08:00
vmscan.c
Merge branch 'akpm' (patches from Andrew)
2015-02-12 18:54:28 -08:00
vmstat.c
vmstat: Reduce time interval to stat update on idle cpu
2015-02-11 17:06:07 -08:00
workingset.c
list_lru: add helpers to isolate items
2015-02-12 18:54:10 -08:00
zbud.c
mm/zpool: add name argument to create zpool
2015-02-12 18:54:12 -08:00
zpool.c
mm/zpool: add name argument to create zpool
2015-02-12 18:54:12 -08:00
zsmalloc.c
mm/zsmalloc: add statistics support
2015-02-12 18:54:12 -08:00
zswap.c
mm/zpool: add name argument to create zpool
2015-02-12 18:54:12 -08:00