1. 07 Jan, 2011 25 commits
    • Linus Torvalds's avatar
      Merge branch 'edac-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp · 442d1ba2
      Linus Torvalds authored
      * 'edac-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp:
        amd64_edac: Disable DRAM ECC injection on K8
        EDAC: Fixup scrubrate manipulation
        amd64_edac: Remove two-stage initialization
        amd64_edac: Check ECC capabilities initially
        amd64_edac: Carve out ECC-related hw settings
        amd64_edac: Remove PCI ECS enabling functions
        amd64_edac: Remove explicit Kconfig PCI dependency
        amd64_edac: Allocate driver instances dynamically
        amd64_edac: Rework printk macros
        amd64_edac: Rename CPU PCI devices
        amd64_edac: Concentrate per-family init even more
        amd64_edac: Cleanup the CPU PCI device reservation
        amd64_edac: Simplify CPU family detection
        amd64_edac: Add per-family init function
        amd64_edac: Use cached extended CPU model
        amd64_edac: Remove F11h support
      442d1ba2
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 · fb5131e1
      Linus Torvalds authored
      * 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6: (65 commits)
        [S390] prevent unneccesary loops_per_jiffy recalculation
        [S390] cpuinfo: use get_online_cpus() instead of preempt_disable()
        [S390] smp: remove cpu hotplug messages
        [S390] mutex: enable spinning mutex on s390
        [S390] mutex: Introduce arch_mutex_cpu_relax()
        [S390] cio: fix ccwgroup unregistration race condition
        [S390] perf: add DWARF register lookup for s390
        [S390] cleanup ftrace backend functions
        [S390] ptrace cleanup
        [S390] smp/idle: call init_idle() before starting a new cpu
        [S390] smp: delay idle task creation
        [S390] dasd: Correct retry counter for terminated I/O.
        [S390] dasd: Add support for raw ECKD access.
        [S390] dasd: Prevent deadlock during suspend/resume.
        [S390] dasd: Improve handling of stolen DASD reservation
        [S390] dasd: do path verification for paths added at runtime
        [S390] dasd: add High Performance FICON multitrack support
        [S390] cio: reduce memory consumption of itcw structures
        [S390] nmi: enable machine checks early
        [S390] qeth: buffer count imbalance
        ...
      fb5131e1
    • Linus Torvalds's avatar
      Merge branch 'rmobile-latest' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 · d074b104
      Linus Torvalds authored
      * 'rmobile-latest' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6: (67 commits)
        ARM: mach-shmobile: update for SMP changes.
        ARM: mach-shmobile: update for GIC changes.
        ARM: mach-shmobile: Fix up clkdev fallout for SH73A0.
        dma: shdma: don't register the global die notifier multiple times
        ARM: mach-shmobile: Rely on run-time IRQ handlers
        ARM: mach-shmobile: Run-time IRQ handler for GIC
        ARM: mach-shmobile: Run-time IRQ handler for INTCA
        ARM: mach-shmobile: Enable CONFIG_MULTI_IRQ_HANDLER
        ARM: mach-shmobile: Use shared GIC entry macros
        ARM: mach-shmobile: mackerel: Add zboot support
        ARM: mach-shmobile: mackerel: Add HDMI sound support
        ARM: mach-shmobile: mackerel: add HDMI video support
        ARM: mach-shmobile: ap4evb: fixup clk_put timing of fsib_clk
        ARM: mach-shmobile: sh73a0: fix div4 table
        ARM: mach-shmobile: ap4/mackerel: modify wrong comment out of USB
        ARM: mach-shmobile: Mackerel VGA camera support
        mmc: sh_mmcif: make DMA support by the driver unconditional
        ARM: mach-shmobile: Add eMMC support through MMCIF on AG5EVM
        ARM: mach-shmobile: Use pullups for AG5EVM KEYSC pins
        ARM: mach-shmobile: sh73a0 GPIO pullup improvement
        ...
      d074b104
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input · 31b6ca0a
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (58 commits)
        Input: wacom_w8001 - support pen or touch only devices
        Input: wacom_w8001 - use __set_bit to set keybits
        Input: bu21013_ts - fix misuse of logical operation in place of bitop
        Input: i8042 - add Acer Aspire 5100 to the Dritek list
        Input: wacom - add support for digitizer in Lenovo W700
        Input: psmouse - disable the synaptics extension on OLPC machines
        Input: psmouse - fix up Synaptics comment
        Input: synaptics - ignore bogus mt packet
        Input: synaptics - add multi-finger and semi-mt support
        Input: synaptics - report clickpad property
        input: mt: Document interface updates
        Input: fix double equality sign in uevent
        Input: introduce device properties
        hid: egalax: Add support for Wetab (726b)
        Input: include MT library as source for kerneldoc
        MAINTAINERS: Update input-mt entry
        hid: egalax: Add support for Samsung NB30 netbook
        hid: egalax: Document the new devices in Kconfig
        hid: egalax: Add support for Wetab
        hid: egalax: Convert to MT slots
        ...
      
      Fixed up trivial conflict in drivers/input/keyboard/Kconfig
      31b6ca0a
    • Linus Torvalds's avatar
      Merge branch 'tty-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6 · 56b85f32
      Linus Torvalds authored
      * 'tty-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6: (36 commits)
        serial: apbuart: Fixup apbuart_console_init()
        TTY: Add tty ioctl to figure device node of the system console.
        tty: add 'active' sysfs attribute to tty0 and console device
        drivers: serial: apbuart: Handle OF failures gracefully
        Serial: Avoid unbalanced IRQ wake disable during resume
        tty: fix typos/errors in tty_driver.h comments
        pch_uart : fix warnings for 64bit compile
        8250: fix uninitialized FIFOs
        ip2: fix compiler warning on ip2main_pci_tbl
        specialix: fix compiler warning on specialix_pci_tbl
        rocket: fix compiler warning on rocket_pci_ids
        8250: add a UPIO_DWAPB32 for 32 bit accesses
        8250: use container_of() instead of casting
        serial: omap-serial: Add support for kernel debugger
        serial: fix pch_uart kconfig & build
        drivers: char: hvc: add arm JTAG DCC console support
        RS485 documentation: add 16C950 UART description
        serial: ifx6x60: fix memory leak
        serial: ifx6x60: free IRQ on error
        Serial: EG20T: add PCH_UART driver
        ...
      
      Fixed up conflicts in drivers/serial/apbuart.c with evil merge that
      makes the code look fairly sane (unlike either side).
      56b85f32
    • Linus Torvalds's avatar
      Merge branch 'usb-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 · 3e5b08cb
      Linus Torvalds authored
      * 'usb-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6: (144 commits)
        USB: add support for Dream Cheeky DL100B Webmail Notifier (1d34:0004)
        USB: serial: ftdi_sio: add support for TIOCSERGETLSR
        USB: ehci-mxc: Setup portsc register prior to accessing OTG viewport
        USB: atmel_usba_udc: fix freeing irq in usba_udc_remove()
        usb: ehci-omap: fix tll channel enable mask
        usb: ohci-omap3: fix trivial typo
        USB: gadget: ci13xxx: don't assume that PAGE_SIZE is 4096
        USB: gadget: ci13xxx: fix complete() callback for no_interrupt rq's
        USB: gadget: update ci13xxx to work with g_ether
        USB: gadgets: ci13xxx: fix probing of compiled-in gadget drivers
        Revert "USB: musb: pm: don't rely fully on clock support"
        Revert "USB: musb: blackfin: pm: make it work"
        USB: uas: Use GFP_NOIO instead of GFP_KERNEL in I/O submission path
        USB: uas: Ensure we only bind to a UAS interface
        USB: uas: Rename sense pipe and sense urb to status pipe and status urb
        USB: uas: Use kzalloc instead of kmalloc
        USB: uas: Fix up the Sense IU
        usb: musb: core: kill unneeded #include's
        DA8xx: assign name to MUSB IRQ resource
        usb: gadget: g_ncm added
        ...
      
      Manually fix up trivial conflicts in USB Kconfig changes in:
      	arch/arm/mach-omap2/Kconfig
      	arch/sh/Kconfig
      	drivers/usb/Kconfig
      	drivers/usb/host/ehci-hcd.c
      and annoying chip clock data conflicts in:
      	arch/arm/mach-omap2/clock3xxx_data.c
      	arch/arm/mach-omap2/clock44xx_data.c
      3e5b08cb
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 · da40d036
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (147 commits)
        [SCSI] arcmsr: fix write to device check
        [SCSI] lpfc: lower stack use in lpfc_fc_frame_check
        [SCSI] eliminate an unnecessary local variable from scsi_remove_target()
        [SCSI] libiscsi: use bh locking instead of irq with session lock
        [SCSI] libiscsi: do not take host lock in queuecommand
        [SCSI] be2iscsi: fix null ptr when accessing task hdr
        [SCSI] be2iscsi: fix gfp use in alloc_pdu
        [SCSI] libiscsi: add more informative failure message during iscsi scsi eh
        [SCSI] gdth: Add missing call to gdth_ioctl_free
        [SCSI] bfa: remove unused defintions and misc cleanups
        [SCSI] bfa: remove inactive functions
        [SCSI] bfa: replace bfa_assert with WARN_ON
        [SCSI] qla2xxx: Use sg_next to fetch next sg element while walking sg list.
        [SCSI] qla2xxx: Fix to avoid recursive lock failure during BSG timeout.
        [SCSI] qla2xxx: Remove code to not reset ISP82xx on failure.
        [SCSI] qla2xxx: Display mailbox register 4 during 8012 AEN for ISP82XX parts.
        [SCSI] qla2xxx: Don't perform a BIG_HAMMER if Get-ID (0x20) mailbox command fails on CNAs.
        [SCSI] qla2xxx: Remove redundant module parameter permission bits
        [SCSI] qla2xxx: Add sysfs node for displaying board temperature.
        [SCSI] qla2xxx: Code cleanup to remove unwanted comments and code.
        ...
      da40d036
    • Dan Carpenter's avatar
      input/tc3589x: fix compile error · aa58abc2
      Dan Carpenter authored
      
      
      There was a semi-colon missing and it broke the compile.
      Signed-off-by: default avatarDan Carpenter <error27@gmail.com>
      Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@stericsson.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      aa58abc2
    • Linus Torvalds's avatar
      Merge branch 'vfs-scale-working' of... · b4a45f5f
      Linus Torvalds authored
      Merge branch 'vfs-scale-working' of git://git.kernel.org/pub/scm/linux/kernel/git/npiggin/linux-npiggin
      
      * 'vfs-scale-working' of git://git.kernel.org/pub/scm/linux/kernel/git/npiggin/linux-npiggin: (57 commits)
        fs: scale mntget/mntput
        fs: rename vfsmount counter helpers
        fs: implement faster dentry memcmp
        fs: prefetch inode data in dcache lookup
        fs: improve scalability of pseudo filesystems
        fs: dcache per-inode inode alias locking
        fs: dcache per-bucket dcache hash locking
        bit_spinlock: add required includes
        kernel: add bl_list
        xfs: provide simple rcu-walk ACL implementation
        btrfs: provide simple rcu-walk ACL implementation
        ext2,3,4: provide simple rcu-walk ACL implementation
        fs: provide simple rcu-walk generic_check_acl implementation
        fs: provide rcu-walk aware permission i_ops
        fs: rcu-walk aware d_revalidate method
        fs: cache optimise dentry and inode for rcu-walk
        fs: dcache reduce branches in lookup path
        fs: dcache remove d_mounted
        fs: fs_struct use seqlock
        fs: rcu-walk for path lookup
        ...
      b4a45f5f
    • Borislav Petkov's avatar
      amd64_edac: Disable DRAM ECC injection on K8 · a135cef7
      Borislav Petkov authored
      
      
      K8 does not allow for an atomic RMW to a cacheline as F10h does so
      disable the error injection interface for it.
      Signed-off-by: default avatarBorislav Petkov <borislav.petkov@amd.com>
      a135cef7
    • Borislav Petkov's avatar
      EDAC: Fixup scrubrate manipulation · 39094443
      Borislav Petkov authored
      
      
      Make the ->{get|set}_sdram_scrub_rate return the actual scrub rate
      bandwidth it succeeded setting and remove superfluous arg pointer used
      for that. A negative value returned still means that an error occurred
      while setting the scrubrate. Document this for future reference.
      Signed-off-by: default avatarBorislav Petkov <borislav.petkov@amd.com>
      39094443
    • Borislav Petkov's avatar
      amd64_edac: Remove two-stage initialization · 360b7f3c
      Borislav Petkov authored
      
      
      Now that all prerequisites are in place, drop the two-stage driver
      instances initialization in favor of the following simple init sequence:
      
      1. Probe PCI device: we only test ECC capabilities here and if none exit
      early.
      
      2. If the hw supports ECC and it is/can be enabled, we init the per-node
      instance.
      
      Remove "amd64_" prefix from static functions touched, while at it.
      
      There actually should be no visible functional change resulting from
      this patch.
      Signed-off-by: default avatarBorislav Petkov <borislav.petkov@amd.com>
      360b7f3c
    • Borislav Petkov's avatar
      amd64_edac: Check ECC capabilities initially · 2299ef71
      Borislav Petkov authored
      
      
      Rework the code to check the hardware ECC capabilities at PCI probing
      time. We do all further initialization only if we actually can/have ECC
      enabled.
      
      While at it:
      0. Fix function naming.
      1. Simplify/clarify debug output.
      2. Remove amd64_ prefix from the static functions
      3. Reorganize code.
      Signed-off-by: default avatarBorislav Petkov <borislav.petkov@amd.com>
      2299ef71
    • Borislav Petkov's avatar
      amd64_edac: Carve out ECC-related hw settings · ae7bb7c6
      Borislav Petkov authored
      
      
      This is in preparation for the init path reorganization where we want
      only to
      
      1) test whether a particular node supports ECC
      2) can it be enabled
      
      and only then do the necessary allocation/initialization. For that,
      we need to decouple the ECC settings of the node from the instance's
      descriptor.
      
      The should be no functional change introduced by this patch.
      Signed-off-by: default avatarBorislav Petkov <borislav.petkov@amd.com>
      ae7bb7c6
    • Borislav Petkov's avatar
      amd64_edac: Remove PCI ECS enabling functions · f1db274e
      Borislav Petkov authored
      
      
      PCI ECS is being enabled by default since 2.6.26 on AMD so this code is
      just superfluous now, remove it.
      Signed-off-by: default avatarBorislav Petkov <borislav.petkov@amd.com>
      f1db274e
    • Borislav Petkov's avatar
      amd64_edac: Remove explicit Kconfig PCI dependency · 027dbd6f
      Borislav Petkov authored
      
      
      AMD_NB pulls in the dependency on PCI. Clarify/fix help text while at it.
      Signed-off-by: default avatarBorislav Petkov <borislav.petkov@amd.com>
      027dbd6f
    • Borislav Petkov's avatar
      amd64_edac: Allocate driver instances dynamically · cc4d8860
      Borislav Petkov authored
      
      
      Remove static allocation in favor of dynamically allocating space for as
      many driver instances as northbridges present on the system.
      
      There should be no functional change resulting from this patch.
      Signed-off-by: default avatarBorislav Petkov <borislav.petkov@amd.com>
      cc4d8860
    • Borislav Petkov's avatar
      amd64_edac: Rework printk macros · 24f9a7fe
      Borislav Petkov authored
      
      
      Add a macro per printk level, shorten up error messages. Add relevant
      information to KERN_INFO level. No functional change.
      Signed-off-by: default avatarBorislav Petkov <borislav.petkov@amd.com>
      24f9a7fe
    • Borislav Petkov's avatar
      amd64_edac: Rename CPU PCI devices · 8d5b5d9c
      Borislav Petkov authored
      
      
      Rename variables representing PCI devices to their BKDG names for faster
      search and shorter, clearer code.
      Signed-off-by: default avatarBorislav Petkov <borislav.petkov@amd.com>
      8d5b5d9c
    • Borislav Petkov's avatar
      amd64_edac: Concentrate per-family init even more · b8cfa02f
      Borislav Petkov authored
      
      
      Move the remaining per-family init code into the proper place and
      simplify the rest of the initialization. Reorganize error handling in
      amd64_init_one_instance().
      Signed-off-by: default avatarBorislav Petkov <borislav.petkov@amd.com>
      b8cfa02f
    • Borislav Petkov's avatar
      amd64_edac: Cleanup the CPU PCI device reservation · bbd0c1f6
      Borislav Petkov authored
      
      
      Shorten code and clarify comments, return proper -E* values on error.
      Signed-off-by: default avatarBorislav Petkov <borislav.petkov@amd.com>
      bbd0c1f6
    • Borislav Petkov's avatar
      amd64_edac: Simplify CPU family detection · 0092b20d
      Borislav Petkov authored
      
      
      Concentrate CPU family detection in the per-family init function.
      Signed-off-by: default avatarBorislav Petkov <borislav.petkov@amd.com>
      0092b20d
    • Borislav Petkov's avatar
      amd64_edac: Add per-family init function · 395ae783
      Borislav Petkov authored
      
      
      Run a per-family init function which does all the settings based on
      the family this driver instance is running on. Move the scrubrate
      calculation in it and simplify code.
      Signed-off-by: default avatarBorislav Petkov <borislav.petkov@amd.com>
      395ae783
    • Borislav Petkov's avatar
      amd64_edac: Use cached extended CPU model · 9f56da0e
      Borislav Petkov authored
      
      
      ... instead of computing it needlessly again.
      Signed-off-by: default avatarBorislav Petkov <borislav.petkov@amd.com>
      9f56da0e
    • Borislav Petkov's avatar
      amd64_edac: Remove F11h support · 3ab0e7dc
      Borislav Petkov authored
      
      
      F11h doesn't support DRAM ECC so whack it away.
      Signed-off-by: default avatarBorislav Petkov <borislav.petkov@amd.com>
      3ab0e7dc
  2. 06 Jan, 2011 15 commits
    • Nick Piggin's avatar
      fs: scale mntget/mntput · b3e19d92
      Nick Piggin authored
      
      
      The problem that this patch aims to fix is vfsmount refcounting scalability.
      We need to take a reference on the vfsmount for every successful path lookup,
      which often go to the same mount point.
      
      The fundamental difficulty is that a "simple" reference count can never be made
      scalable, because any time a reference is dropped, we must check whether that
      was the last reference. To do that requires communication with all other CPUs
      that may have taken a reference count.
      
      We can make refcounts more scalable in a couple of ways, involving keeping
      distributed counters, and checking for the global-zero condition less
      frequently.
      
      - check the global sum once every interval (this will delay zero detection
        for some interval, so it's probably a showstopper for vfsmounts).
      
      - keep a local count and only taking the global sum when local reaches 0 (this
        is difficult for vfsmounts, because we can't hold preempt off for the life of
        a reference, so a counter would need to be per-thread or tied strongly to a
        particular CPU which requires more locking).
      
      - keep a local difference of increments and decrements, which allows us to sum
        the total difference and hence find the refcount when summing all CPUs. Then,
        keep a single integer "long" refcount for slow and long lasting references,
        and only take the global sum of local counters when the long refcount is 0.
      
      This last scheme is what I implemented here. Attached mounts and process root
      and working directory references are "long" references, and everything else is
      a short reference.
      
      This allows scalable vfsmount references during path walking over mounted
      subtrees and unattached (lazy umounted) mounts with processes still running
      in them.
      
      This results in one fewer atomic op in the fastpath: mntget is now just a
      per-CPU inc, rather than an atomic inc; and mntput just requires a spinlock
      and non-atomic decrement in the common case. However code is otherwise bigger
      and heavier, so single threaded performance is basically a wash.
      Signed-off-by: default avatarNick Piggin <npiggin@kernel.dk>
      b3e19d92
    • Nick Piggin's avatar
      fs: rename vfsmount counter helpers · c6653a83
      Nick Piggin authored
      
      
      Suggested by Andreas, mnt_ prefix is clearer namespace, follows kernel
      conventions better, and is easier for tab complete. I introduced these
      names so I'll admit they were not good choices.
      Signed-off-by: default avatarNick Piggin <npiggin@kernel.dk>
      c6653a83
    • Nick Piggin's avatar
      fs: implement faster dentry memcmp · 9d55c369
      Nick Piggin authored
      
      
      The standard memcmp function on a Westmere system shows up hot in
      profiles in the `git diff` workload (both parallel and single threaded),
      and it is likely due to the costs associated with trapping into
      microcode, and little opportunity to improve memory access (dentry
      name is not likely to take up more than a cacheline).
      
      So replace it with an open-coded byte comparison. This increases code
      size by 8 bytes in the critical __d_lookup_rcu function, but the
      speedup is huge, averaging 10 runs of each:
      
      git diff st   user   sys   elapsed  CPU
      before        1.15   2.57  3.82      97.1
      after         1.14   2.35  3.61      96.8
      
      git diff mt   user   sys   elapsed  CPU
      before        1.27   3.85  1.46     349
      after         1.26   3.54  1.43     333
      
      Elapsed time for single threaded git diff at 95.0% confidence:
              -0.21  +/- 0.01
              -5.45% +/- 0.24%
      
      It's -0.66% +/- 0.06% elapsed time on my Opteron, so rep cmp costs on the
      fam10h seem to be relatively smaller, but there is still a win.
      Signed-off-by: default avatarNick Piggin <npiggin@kernel.dk>
      9d55c369
    • Nick Piggin's avatar
      fs: prefetch inode data in dcache lookup · e1bb5782
      Nick Piggin authored
      
      
      This makes single threaded git diff -1.25% +/- 0.05% elapsed time on my
      2s12c24t Westmere system, and -0.86% +/- 0.05% on my 2s8c Barcelona, by
      prefetching the important first cacheline of the inode in while we do the
      actual name compare and other operations on the dentry.
      
      There was no measurable slowdown in the single file stat case, or the creat
      case (where negative dentries would be common).
      Signed-off-by: default avatarNick Piggin <npiggin@kernel.dk>
      e1bb5782
    • Nick Piggin's avatar
      fs: improve scalability of pseudo filesystems · 4b936885
      Nick Piggin authored
      
      
      Regardless of how much we possibly try to scale dcache, there is likely
      always going to be some fundamental contention when adding or removing children
      under the same parent. Pseudo filesystems do not seem need to have connected
      dentries because by definition they are disconnected.
      Signed-off-by: default avatarNick Piggin <npiggin@kernel.dk>
      4b936885
    • Nick Piggin's avatar
      fs: dcache per-inode inode alias locking · 873feea0
      Nick Piggin authored
      
      
      dcache_inode_lock can be replaced with per-inode locking. Use existing
      inode->i_lock for this. This is slightly non-trivial because we sometimes
      need to find the inode from the dentry, which requires d_inode to be
      stabilised (either with refcount or d_lock).
      Signed-off-by: default avatarNick Piggin <npiggin@kernel.dk>
      873feea0
    • Nick Piggin's avatar
      fs: dcache per-bucket dcache hash locking · ceb5bdc2
      Nick Piggin authored
      
      
      We can turn the dcache hash locking from a global dcache_hash_lock into
      per-bucket locking.
      Signed-off-by: default avatarNick Piggin <npiggin@kernel.dk>
      ceb5bdc2
    • Nick Piggin's avatar
      bit_spinlock: add required includes · 626d6074
      Nick Piggin authored
      
      Signed-off-by: default avatarNick Piggin <npiggin@kernel.dk>
      626d6074
    • Nick Piggin's avatar
      kernel: add bl_list · 4e35e607
      Nick Piggin authored
      
      
      Introduce a type of hlist that can support the use of the lowest bit in the
      hlist_head. This will be subsequently used to implement per-bucket bit spinlock
      for inode and dentry hashes, and may be useful in other cases such as network
      hashes.
      Reviewed-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      Signed-off-by: default avatarNick Piggin <npiggin@kernel.dk>
      4e35e607
    • Nick Piggin's avatar
      xfs: provide simple rcu-walk ACL implementation · 880566e1
      Nick Piggin authored
      
      
      This simple implementation just checks for no ACLs on the inode, and
      if so, then the rcu-walk may proceed, otherwise fail it.
      Signed-off-by: default avatarNick Piggin <npiggin@kernel.dk>
      880566e1
    • Nick Piggin's avatar
      btrfs: provide simple rcu-walk ACL implementation · 258a5aa8
      Nick Piggin authored
      
      
      This simple implementation just checks for no ACLs on the inode, and
      if so, then the rcu-walk may proceed, otherwise fail it.
      Signed-off-by: default avatarNick Piggin <npiggin@kernel.dk>
      258a5aa8
    • Nick Piggin's avatar
      ext2,3,4: provide simple rcu-walk ACL implementation · 73598611
      Nick Piggin authored
      
      
      This simple implementation just checks for no ACLs on the inode, and
      if so, then the rcu-walk may proceed, otherwise fail it.
      Signed-off-by: default avatarNick Piggin <npiggin@kernel.dk>
      73598611
    • Nick Piggin's avatar
      fs: provide simple rcu-walk generic_check_acl implementation · 1e1743eb
      Nick Piggin authored
      
      
      This simple implementation just checks for no ACLs on the inode, and
      if so, then the rcu-walk may proceed, otherwise fail it.
      
      This could easily be extended to put acls under RCU and check them
      under seqlock, if need be. But this implementation is enough to show
      the rcu-walk aware permissions code for path lookups is working, and
      will handle cases where there are no ACLs or ACLs in just the final
      element.
      
      This patch implicity converts tmpfs to rcu-aware permission check.
      Subsequent patches onvert ext*, xfs, and, btrfs. Each of these uses
      acl/permission code in a different way, so convert them all to provide
      templates and proof of concept.
      Signed-off-by: default avatarNick Piggin <npiggin@kernel.dk>
      1e1743eb
    • Nick Piggin's avatar
      fs: provide rcu-walk aware permission i_ops · b74c79e9
      Nick Piggin authored
      
      Signed-off-by: default avatarNick Piggin <npiggin@kernel.dk>
      b74c79e9
    • Nick Piggin's avatar
      fs: rcu-walk aware d_revalidate method · 34286d66
      Nick Piggin authored
      
      
      Require filesystems be aware of .d_revalidate being called in rcu-walk
      mode (nd->flags & LOOKUP_RCU). For now do a simple push down, returning
      -ECHILD from all implementations.
      Signed-off-by: default avatarNick Piggin <npiggin@kernel.dk>
      34286d66