04 Apr, 2012

1 commit

  • Linus found that the gigantic size of the common audit data caused a big
    perf hit on something as simple as running stat() in a loop. This patch
    requires LSMs to declare the LSM specific portion separately rather than
    doing it in a union. Thus each LSM can be responsible for shrinking their
    portion and don't have to pay a penalty just because other LSMs have a
    bigger space requirement.

    Signed-off-by: Eric Paris
    Signed-off-by: Linus Torvalds

    Eric Paris
     

03 Apr, 2012

12 commits

  • This merges some of the fixes from Paul Gortmaker for the header file
    cleanup fallout.

    Some of the patches are going through arch maintainer trees, and David
    Howells suggested another be done differently, but this at least fixes a
    few cases.

    * emailed from Paul Gortmaker :
    asm-generic: add linux/types.h to cmpxchg.h
    firewire: restore the device.h include in linux/firewire.h
    frv: fix warnings in mb93090-mb00/pci-dma.c about implicit EXPORT_SYMBOL
    parisc: fix missing cmpxchg file error from system.h split
    blackfin: fix cmpxchg build fails from system.h fallout
    avr32: fix build failures from mis-naming of atmel_nand.h
    ARM: mach-msm: fix compile fail from system.h fallout
    irq_work: fix compile failure on MIPS from system.h split

    Linus Torvalds
     
  • Builds of the openrisc or1ksim_defconfig show the following:

    In file included from arch/openrisc/include/generated/asm/cmpxchg.h:1:0,
    from include/asm-generic/atomic.h:18,
    from arch/openrisc/include/generated/asm/atomic.h:1,
    from include/linux/atomic.h:4,
    from include/linux/dcache.h:4,
    from fs/notify/fsnotify.c:19:
    include/asm-generic/cmpxchg.h: In function '__xchg':
    include/asm-generic/cmpxchg.h:34:20: error: expected ')' before 'u8'
    include/asm-generic/cmpxchg.h:34:20: warning: type defaults to 'int' in type name

    and many more lines of similar errors. It seems specific to the or32
    because most other platforms have an arch specific component that would
    have already included types.h ahead of time, but the o32 does not.

    Cc: Arnd Bergmann
    Cc: Jonas Bonn
    Signed-off-by: Paul Gortmaker
    Acked-by: David Howells

    Paul Gortmaker
     
  • Commit 313162d0b838 ("device.h: audit and cleanup users in main include
    dir") exchanged an include for a struct *device but in
    actuality I misread this file when creating 313162d and it should have
    remained an include.

    There were no build regressions since all consumers were already getting
    device.h anyway, but make it right regardless.

    Reported-by: Stefan Richter
    Signed-off-by: Paul Gortmaker
    Signed-off-by: Linus Torvalds

    Paul Gortmaker
     
  • To fix:

    arch/frv/mb93090-mb00/pci-dma.c:31:1: warning: data definition has no type or storage class [enabled by default]
    arch/frv/mb93090-mb00/pci-dma.c:31:1: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL' [-Wimplicit-int]
    arch/frv/mb93090-mb00/pci-dma.c:31:1: warning: parameter names (without types) in function declaration [enabled by default]
    arch/frv/mb93090-mb00/pci-dma.c:38:1: warning: data definition has no type or storage class [enabled by default]

    Signed-off-by: Paul Gortmaker
    Acked-by: David Howells
    Signed-off-by: Linus Torvalds

    Paul Gortmaker
     
  • Commit b4816afa3986 ("Move the asm-generic/system.h xchg()
    implementation to asm-generic/cmpxchg.h") introduced the concept of
    asm/cmpxchg.h but the parisc arch never got one. Fork the cmpxchg
    content out of the asm/atomic.h file to create one.

    Some minor whitespace fixups were done on the block of code that created
    the new file.

    Cc: "James E.J. Bottomley"
    Cc: Helge Deller
    Signed-off-by: Paul Gortmaker
    Acked-by: David Howells
    Signed-off-by: Linus Torvalds

    Paul Gortmaker
     
  • Commit 3bed8d67469c ("Disintegrate asm/system.h for Blackfin [ver #2]")
    introduced arch/blackfin/include/asm/cmpxchg.h but has it also including
    the asm-generic one which causes this:

    CC arch/blackfin/kernel/asm-offsets.s
    In file included from arch/blackfin/include/asm/cmpxchg.h:125:0,
    from arch/blackfin/include/asm/atomic.h:10,
    from include/linux/atomic.h:4,
    from include/linux/spinlock.h:384,
    from include/linux/seqlock.h:29,
    from include/linux/time.h:8,
    from include/linux/timex.h:56,
    from include/linux/sched.h:57,
    from arch/blackfin/kernel/asm-offsets.c:10:
    include/asm-generic/cmpxchg.h:24:15: error: redefinition of '__xchg'
    arch/blackfin/include/asm/cmpxchg.h:82:29: note: previous definition of '__xchg' was here
    make[2]: *** [arch/blackfin/kernel/asm-offsets.s] Error 1

    It really only needs two simple defines from asm-generic, so just use
    those instead.

    Cc: Bob Liu
    Cc: Mike Frysinger
    Signed-off-by: Paul Gortmaker
    Acked-by: David Howells
    Signed-off-by: Linus Torvalds

    Paul Gortmaker
     
  • Commit bf4289cba02b ("ATMEL: fix nand ecc support") indicated that it
    wanted to "Move platform data to a common header
    include/linux/platform_data/atmel_nand.h" and the new header even had
    re-include protectors with:

    #ifndef __ATMEL_NAND_H__

    However, the file that was added was simply called atmel.h
    and this caused avr32 defconfig to fail with:

    In file included from arch/avr32/boards/atstk1000/setup.c:22:
    arch/avr32/mach-at32ap/include/mach/board.h:10:44: error: linux/platform_data/atmel_nand.h: No such file or directory
    In file included from arch/avr32/boards/atstk1000/setup.c:22:
    arch/avr32/mach-at32ap/include/mach/board.h:121: warning: 'struct atmel_nand_data' declared inside parameter list
    arch/avr32/mach-at32ap/include/mach/board.h:121: warning: its scope is only this definition or declaration, which is probably not what you want
    make[2]: *** [arch/avr32/boards/atstk1000/setup.o] Error 1

    It seems the scope of the file contents will expand beyond
    just nand, so ignore the original intention, and fix up the
    users who reference the bad name with the _nand suffix.

    CC: Jean-Christophe PLAGNIOL-VILLARD
    CC: David Woodhouse
    Acked-by: Hans-Christian Egtvedt
    Signed-off-by: Paul Gortmaker
    Signed-off-by: Linus Torvalds

    Paul Gortmaker
     
  • To fix:

    In file included from arm/boot/compressed/misc.c:28:0:
    arm/mach-msm/include/mach/uncompress.h: In function 'putc':
    arch/arm/mach-msm/include/mach/uncompress.h:48:3: error: implicit
    declaration of function 'smp_mb' [-Werror=implicit-function-declaration]

    The putc does a cpu_relax which for this platform is smp_mb.

    Bisect indicates the 1st failing commit as: 0195c00244dc ("Merge tag
    'split-asm_system_h...")

    Signed-off-by: Paul Gortmaker
    Acked-by: David Howells
    Acked-by: David Brown
    Signed-off-by: Linus Torvalds

    Paul Gortmaker
     
  • Pull HSI (High Speed Synchronous Serial Interface) framework from Carlos Chinea:
    "The High Speed Synchronous Serial Interface (HSI) is a serial
    interface mainly used for connecting application engines (APE) with
    cellular modem engines (CMT) in cellular handsets.

    The framework is currently being used for some people and we would
    like to see it integrated into the kernel for 3.3. There is no HW
    controller drivers in this pull, but some people have already some of
    them pending which they would like to push as soon as this integrated.
    I am also working on the acceptance for an TI OMAP one, based on a
    compatible legacy version of the interface called SSI."

    Ok, so it didn't get into 3.3, but here it is pulled into 3.4.

    Several people piped up to say "yeah, we want this".

    * 'for-next' of git://gitorious.org/kernel-hsi/kernel-hsi:
    HSI: hsi_char: Update ioctl-number.txt
    HSI: Add HSI API documentation
    HSI: hsi_char: Add HSI char device kernel configuration
    HSI: hsi_char: Add HSI char device driver
    HSI: hsi: Introducing HSI framework

    Linus Torvalds
     
  • Pull 'make cscope' fix from Michal Marek:
    "The kbuild.git#misc pull request introduced a bug that broke make
    cscope. Apparently, both the original author and me only tested the
    use case that the commit was supposed to improve (make tags/TAGS), and
    not the use case that was not supposed (make cscope)."

    * 'rc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
    tags.sh: Add missing quotes

    Linus Torvalds
     
  • Pull crypto fixes from Herbert Xu:
    - Fix for CPU hotplug hang in padata.
    - Avoid using cpu_active inappropriately in pcrypt and padata.
    - Fix for user-space algorithm lookup hang with IV generators.
    - Fix for netlink dump of algorithms where stuff went missing due to
    incorrect calculation of message size.

    * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
    crypto: user - Fix size of netlink dump message
    crypto: user - Fix lookup of algorithms with IV generator
    crypto: pcrypt - Use the online cpumask as the default
    padata: Fix cpu hotplug
    padata: Use the online cpumask as the default
    padata: Add a reference to the api documentation

    Linus Torvalds
     
  • Pull powerpc fixes from Benjamin Herrenschmidt:
    "This contains a couple more fixes for the system.h disintegration, a
    trivial section mismatch fix, a couple of patches from akpm that I
    didn't quite get he expected me to pickup, and a few more trivialities
    form Kumar that he appear to have forgotten to send me in the previous
    batch."

    * 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
    powerpc/eeh: Fix use of set_current_state() in eeh event handling set_current_state() wart
    powerpc/eeh: Remove eeh_event_handler()->daemonize()
    powerpc/kvm: Fallout from system.h disintegration
    powerpc: Fix fallout from system.h split up
    powerpc: Mark const init data with __initconst instead of __initdata
    powerpc/qe: Update the SNUM table for MPC8569 Rev2.0
    powerpc/dts: Removed fsl,msi property from dts.
    powerpc/epapr: add "memory" as a clobber to all hypercalls
    powerpc/85xx: Enable I2C_CHARDEV and I2C_MPC options in defconfigs
    powerpc/85xx: add the P1020UTM-PC DTS support
    powerpc/85xx: add the P1020MBG-PC DTS support
    powerpc/8xxx: remove 85xx/86xx restrictions from fsl_guts.h

    Linus Torvalds
     

02 Apr, 2012

9 commits

  • Pull cpumask cleanups from Rusty Russell:
    "(Somehow forgot to send this out; it's been sitting in linux-next, and
    if you don't want it, it can sit there another cycle)"

    I'm a sucker for things that actually delete lines of code.

    Fix up trivial conflict in arch/arm/kernel/kprobes.c, where Rusty fixed
    a user of &cpu_online_map to be cpu_online_mask, but that code got
    deleted by commit b21d55e98ac2 ("ARM: 7332/1: extract out code patch
    function from kprobes").

    * tag 'for-linus' of git://github.com/rustyrussell/linux:
    cpumask: remove old cpu_*_map.
    documentation: remove references to cpu_*_map.
    drivers/cpufreq/db8500-cpufreq: remove references to cpu_*_map.
    remove references to cpu_*_map in arch/

    Linus Torvalds
     
  • Builds of the MIPS platform ip32_defconfig fails as of commit
    0195c00244dc ("Merge tag 'split-asm_system_h ...") because MIPS xchg()
    macro uses BUILD_BUG_ON and it was moved in commit b81947c646bf
    ("Disintegrate asm/system.h for MIPS").

    The root cause is that the system.h split wasn't tested on a baseline
    with commit 6c03438edeb5 ("kernel.h: doesn't explicitly use bug.h, so
    don't include it.")

    Since this file uses BUG code in several other places besides the xchg
    call, simply make the inclusion explicit.

    Signed-off-by: Paul Gortmaker
    Acked-by: David Howells
    Signed-off-by: Linus Torvalds

    Paul Gortmaker
     
  • When $remove_structs is empty a test for empty string will turn
    into test -n with no arguments meaning true. Add quotes so an
    empty string is tested and so that make cscope works again.

    Reported-and-tested-by: Jike Song
    Reported-by: Prarit Bhargava
    Acked-by: Yang Bai
    Signed-off-by: Stephen Boyd
    Signed-off-by: Michal Marek

    Stephen Boyd
     
  • That set_current_state() won't work very well: the subsequent mutex_lock()
    might flip the task back into TASK_RUNNING.

    Attempt to put it somewhere where it might have been meant to be, and
    attempt to describe why it might have been added.

    Signed-off-by: Andrew Morton
    Signed-off-by: Benjamin Herrenschmidt

    Andrew Morton
     
  • daemonize() is only needed when a user-space task does kernel_thread().

    eeh_event_handler() thread is created by the worker kthread, and thus it
    doesn't need the soon-to-be-deprecated daemonize().

    Signed-off-by: Oleg Nesterov
    Acked-by: Linas Vepstas
    Acked-by: Tejun Heo
    Acked-by: Matt Fleming
    Signed-off-by: Andrew Morton
    Signed-off-by: Benjamin Herrenschmidt

    Oleg Nesterov
     
  • Add a missing include to fix build

    Signed-off-by: Benjamin Herrenschmidt

    Benjamin Herrenschmidt
     
  • Signed-off-by: Stephen Rothwell
    Signed-off-by: Benjamin Herrenschmidt

    Stephen Rothwell
     
  • As long as there is no other non-const variable marked __initdata in the
    same compilation unit it doesn't hurt. If there were one however
    compilation would fail with

    error: $variablename causes a section type conflict

    because a section containing const variables is marked read only and so
    cannot contain non-const variables.

    Signed-off-by: Uwe Kleine-König
    Cc: Josh Boyer
    Cc: Matt Porter
    Cc: Benjamin Herrenschmidt
    Cc: Paul Mackerras
    Cc: Anatolij Gustschin
    Cc: Kumar Gala
    Cc: Arnd Bergmann
    Cc: linuxppc-dev@lists.ozlabs.org
    Cc: cbe-oss-dev@lists.ozlabs.org
    Signed-off-by: Benjamin Herrenschmidt

    Uwe Kleine-König
     
  • Benjamin Herrenschmidt
     

01 Apr, 2012

18 commits

  • Linus Torvalds
     
  • Pull virtio S3 support patches from Amit Shah:
    "Turns out S3 is not different from S4 for virtio devices: the device
    is assumed to be reset, so the host and guest state are to be assumed
    to be out of sync upon resume. We handle the S4 case with exactly the
    same scenario, so just point the suspend/resume routines to the
    freeze/restore ones.

    Once that is done, we also use the PM API's macro to initialise the
    sleep functions.

    A couple of cleanups are included: there's no need for special thaw
    processing in the balloon driver, so that's addressed in patches 1 and
    2.

    Testing: both S3 and S4 support have been tested using these patches
    using a similar method used earlier during S4 patch development: a
    guest is started with virtio-blk as the only disk, a virtio network
    card, a virtio-serial port and a virtio balloon device. Ping from
    guest to host, dd /dev/zero to a file on the disk, and IO from the
    host on the virtio-serial port, all at once, while exercising S4 and
    S3 (separately) were tested. They all continue to work fine after
    resume. virtio balloon values too were tested by inflating and
    deflating the balloon."

    Pulling from Amit, since Rusty is off getting married (and presumably
    shaving people).

    * 's3-for-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/amit/virtio-console:
    virtio-pci: switch to PM ops macro to initialise PM functions
    virtio-pci: S3 support
    virtio-pci: drop restore_common()
    virtio: drop thaw PM operation
    virtio: balloon: Allow stats update after restore from S4

    Linus Torvalds
     
  • Pull second try at vfs part d#2 from Al Viro:
    "Miklos' first series (with do_lookup() rewrite split into edible
    chunks) + assorted bits and pieces.

    The 'untangling of do_lookup()' series is is a splitup of what used to
    be a monolithic patch from Miklos, so this series is basically "how do
    I convince myself that his patch is correct (or find a hole in it)".
    No holes found and I like the resulting cleanup, so in it went..."

    Changes from try 1: Fix a boot problem with selinux, and commit messages
    prettied up a bit.

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (24 commits)
    vfs: fix out-of-date dentry_unhash() comment
    vfs: split __lookup_hash
    untangling do_lookup() - take __lookup_hash()-calling case out of line.
    untangling do_lookup() - switch to calling __lookup_hash()
    untangling do_lookup() - merge d_alloc_and_lookup() callers
    untangling do_lookup() - merge failure exits in !dentry case
    untangling do_lookup() - massage !dentry case towards __lookup_hash()
    untangling do_lookup() - get rid of need_reval in !dentry case
    untangling do_lookup() - eliminate a loop.
    untangling do_lookup() - expand the area under ->i_mutex
    untangling do_lookup() - isolate !dentry stuff from the rest of it.
    vfs: move MAY_EXEC check from __lookup_hash()
    vfs: don't revalidate just looked up dentry
    vfs: fix d_need_lookup/d_revalidate order in do_lookup
    ext3: move headers to fs/ext3/
    migrate ext2_fs.h guts to fs/ext2/ext2.h
    new helper: ext2_image_size()
    get rid of pointless includes of ext2_fs.h
    ext2: No longer export ext2_fs.h to user space
    mtdchar: kill persistently held vfsmount
    ...

    Linus Torvalds
     
  • Pull scheduler fixes from Ingo Molnar.

    * 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    sched: Fix incorrect usage of for_each_cpu_mask() in select_fallback_rq()
    sched: Fix __schedule_bug() output when called from an interrupt
    sched/arch: Introduce the finish_arch_post_lock_switch() scheduler callback

    Linus Torvalds
     
  • Pull perf updates and fixes from Ingo Molnar:
    "It's mostly fixes, but there's also two late items:

    - preliminary GTK GUI support for perf report
    - PMU raw event format descriptors in sysfs, to be parsed by tooling

    The raw event format in sysfs is a new ABI. For example for the 'CPU'
    PMU we have:

    aldebaran:~> ll /sys/bus/event_source/devices/cpu/format/*
    -r--r--r--. 1 root root 4096 Mar 31 10:29 /sys/bus/event_source/devices/cpu/format/any
    -r--r--r--. 1 root root 4096 Mar 31 10:29 /sys/bus/event_source/devices/cpu/format/cmask
    -r--r--r--. 1 root root 4096 Mar 31 10:29 /sys/bus/event_source/devices/cpu/format/edge
    -r--r--r--. 1 root root 4096 Mar 31 10:29 /sys/bus/event_source/devices/cpu/format/event
    -r--r--r--. 1 root root 4096 Mar 31 10:29 /sys/bus/event_source/devices/cpu/format/inv
    -r--r--r--. 1 root root 4096 Mar 31 10:29 /sys/bus/event_source/devices/cpu/format/offcore_rsp
    -r--r--r--. 1 root root 4096 Mar 31 10:29 /sys/bus/event_source/devices/cpu/format/pc
    -r--r--r--. 1 root root 4096 Mar 31 10:29 /sys/bus/event_source/devices/cpu/format/umask

    those lists of fields contain a specific format:

    aldebaran:~> cat /sys/bus/event_source/devices/cpu/format/offcore_rsp
    config1:0-63

    So, those who wish to specify raw events can now use the following
    event format:

    -e cpu/cmask=1,event=2,umask=3

    Most people will not want to specify any events (let alone raw
    events), they'll just use whatever default event the tools use.

    But for more obscure PMU events that have no cross-architecture
    generic events the above syntax is more usable and a bit more
    structured than specifying hex numbers."

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (41 commits)
    perf tools: Remove auto-generated bison/flex files
    perf annotate: Fix off by one symbol hist size allocation and hit accounting
    perf tools: Add missing ref-cycles event back to event parser
    perf annotate: addr2line wants addresses in same format as objdump
    perf probe: Finder fails to resolve function name to address
    tracing: Fix ent_size in trace output
    perf symbols: Handle NULL dso in dso__name_len
    perf symbols: Do not include libgen.h
    perf tools: Fix bug in raw sample parsing
    perf tools: Fix display of first level of callchains
    perf tools: Switch module.h into export.h
    perf: Move mmap page data_head offset assertion out of header
    perf: Fix mmap_page capabilities and docs
    perf diff: Fix to work with new hists design
    perf tools: Fix modifier to be applied on correct events
    perf tools: Fix various casting issues for 32 bits
    perf tools: Simplify event_read_id exit path
    tracing: Fix ftrace stack trace entries
    tracing: Move the tracing_on/off() declarations into CONFIG_TRACING
    perf report: Add a simple GTK2-based 'perf report' browser
    ...

    Linus Torvalds
     
  • Pull PARISC misc updates from James Bottomley:
    "This is a couple of minor updates (fixing lws futex locking and
    removing some obsolete cpu_*_map calls)."

    * tag 'parisc-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/parisc-2.6:
    [PARISC] remove references to cpu_*_map.
    [PARISC] futex: Use same lock set as lws calls

    Linus Torvalds
     
  • Pull SCSI updates from James Bottomley:
    "This is primarily another round of driver updates (lpfc, bfa, fcoe,
    ipr) plus a new ufshcd driver. There shouldn't be anything
    controversial in here (The final deletion of scsi proc_ops which
    caused some build breakage has been held over until the next merge
    window to give us more time to stabilise it).

    I'm afraid, with me moving continents at exactly the wrong time,
    anything submitted after the merge window opened has been held over to
    the next merge window."

    * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (63 commits)
    [SCSI] ipr: Driver version 2.5.3
    [SCSI] ipr: Increase alignment boundary of command blocks
    [SCSI] ipr: Increase max concurrent oustanding commands
    [SCSI] ipr: Remove unnecessary memory barriers
    [SCSI] ipr: Remove unnecessary interrupt clearing on new adapters
    [SCSI] ipr: Fix target id allocation re-use problem
    [SCSI] atp870u, mpt2sas, qla4xxx use pci_dev->revision
    [SCSI] fcoe: Drop the rtnl_mutex before calling fcoe_ctlr_link_up
    [SCSI] bfa: Update the driver version to 3.0.23.0
    [SCSI] bfa: BSG and User interface fixes.
    [SCSI] bfa: Fix to avoid vport delete hang on request queue full scenario.
    [SCSI] bfa: Move service parameter programming logic into firmware.
    [SCSI] bfa: Revised Fabric Assigned Address(FAA) feature implementation.
    [SCSI] bfa: Flash controller IOC pll init fixes.
    [SCSI] bfa: Serialize the IOC hw semaphore unlock logic.
    [SCSI] bfa: Modify ISR to process pending completions
    [SCSI] bfa: Add fc host issue lip support
    [SCSI] mpt2sas: remove extraneous sas_log_info messages
    [SCSI] libfc: fcoe_transport_create fails in single-CPU environment
    [SCSI] fcoe: reduce contention for fcoe_rx_list lock [v2]
    ...

    Linus Torvalds
     
  • 64252c75a2196a0cf1e0d3777143ecfe0e3ae650 "vfs: remove dget() from
    dentry_unhash()" changed the implementation but not the comment.

    Cc: Sage Weil
    Signed-off-by: J. Bruce Fields
    Signed-off-by: Al Viro

    J. Bruce Fields
     
  • Split __lookup_hash into two component functions:

    lookup_dcache - tries cached lookup, returns whether real lookup is needed
    lookup_real - calls i_op->lookup

    This eliminates code duplication between d_alloc_and_lookup() and
    d_inode_lookup().

    Signed-off-by: Miklos Szeredi
    Signed-off-by: Al Viro

    Miklos Szeredi
     
  • Signed-off-by: Al Viro

    Al Viro
     
  • now we have __lookup_hash() open-coded if !dentry case;
    just call the damn thing instead...

    Signed-off-by: Al Viro

    Al Viro
     
  • Signed-off-by: Al Viro

    Al Viro
     
  • Signed-off-by: Al Viro

    Al Viro
     
  • Reorder if-else cases for starters...

    Signed-off-by: Al Viro

    Al Viro
     
  • Everything arriving into if (!dentry) will have need_reval = 1.
    Indeed, the only way to get there with need_reval reset to 0 would
    be via
    if (unlikely(d_need_lookup(dentry)))
    goto unlazy;
    if (unlikely(dentry->d_flags & DCACHE_OP_REVALIDATE)) {
    status = d_revalidate(dentry, nd);
    if (unlikely(status

    Al Viro
     
  • d_lookup() *will* fail after successful d_invalidate(), if we are
    holding i_mutex all along. IOW, we don't need to jump back to
    l: - we know what path will be taken there and can do that (i.e.
    d_alloc_and_lookup()) directly.

    Signed-off-by: Al Viro

    Al Viro
     
  • keep holding ->i_mutex over revalidation parts

    Signed-off-by: Al Viro

    Al Viro
     
  • Duplicate the revalidation-related parts into if (!dentry) branch.
    Next step will be to pull them under i_mutex.

    This and the next 8 commits are more or less a splitup of patch
    by Miklos; folks, when you are working with something that convoluted,
    carve your patches up into easily reviewed steps, especially when
    a lot of codepaths involved are rarely hit...

    Signed-off-by: Al Viro

    Al Viro