01 Apr, 2009

14 commits

  • The mlock() facility does not exist for NOMMU since all mappings are
    effectively locked anyway, so we don't make the bits available when
    they're not useful.

    Signed-off-by: David Howells
    Reviewed-by: KOSAKI Motohiro
    Cc: Peter Zijlstra
    Cc: Greg Ungerer
    Cc: Johannes Weiner
    Cc: Rik van Riel
    Cc: Lee Schermerhorn
    Cc: Enrik Berkhan
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Howells
     
  • Use debug_kmap_atomic in kmap_atomic, kmap_atomic_pfn, and
    iomap_atomic_prot_pfn.

    Signed-off-by: Akinobu Mita
    Cc: Thomas Gleixner
    Cc: Ingo Molnar
    Cc: "H. Peter Anvin"
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Akinobu Mita
     
  • x86 has debug_kmap_atomic_prot() which is error checking function for
    kmap_atomic. It is usefull for the other architectures, although it needs
    CONFIG_TRACE_IRQFLAGS_SUPPORT.

    This patch exposes it to the other architectures.

    Signed-off-by: Akinobu Mita
    Cc: Thomas Gleixner
    Cc: Ingo Molnar
    Cc: "H. Peter Anvin"
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Akinobu Mita
     
  • Change the page_mkwrite prototype to take a struct vm_fault, and return
    VM_FAULT_xxx flags. There should be no functional change.

    This makes it possible to return much more detailed error information to
    the VM (and also can provide more information eg. virtual_address to the
    driver, which might be important in some special cases).

    This is required for a subsequent fix. And will also make it easier to
    merge page_mkwrite() with fault() in future.

    Signed-off-by: Nick Piggin
    Cc: Chris Mason
    Cc: Trond Myklebust
    Cc: Miklos Szeredi
    Cc: Steven Whitehouse
    Cc: Mark Fasheh
    Cc: Joel Becker
    Cc: Artem Bityutskiy
    Cc: Felix Blyakher
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Nick Piggin
     
  • On PowerPC we allocate large boot time hashes on node 0. This leads to an
    imbalance in the free memory, for example on a 64GB box (4 x 16GB nodes):

    Free memory:
    Node 0: 97.03%
    Node 1: 98.54%
    Node 2: 98.42%
    Node 3: 98.53%

    If we switch to using vmalloc (like ia64 and x86-64) things are more
    balanced:

    Free memory:
    Node 0: 97.53%
    Node 1: 98.35%
    Node 2: 98.33%
    Node 3: 98.33%

    For many HPC applications we are limited by the free available memory on
    the smallest node, so even though the same amount of memory is used the
    better balancing helps.

    Since all 64bit NUMA capable architectures should have sufficient vmalloc
    space, it makes sense to enable it via CONFIG_64BIT.

    Signed-off-by: Anton Blanchard
    Acked-by: David S. Miller
    Acked-by: Benjamin Herrenschmidt
    Acked-by: Ralf Baechle
    Cc: Heiko Carstens
    Cc: Martin Schwidefsky
    Cc: Ivan Kokshaysky
    Cc: Richard Henderson
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Anton Blanchard
     
  • Addresses http://bugzilla.kernel.org/show_bug.cgi?id=9838

    On i386, HZ=1000, jiffies_to_clock_t() converts time in a somewhat strange
    way from the user's point of view:

    # echo 500 >/proc/sys/vm/dirty_writeback_centisecs
    # cat /proc/sys/vm/dirty_writeback_centisecs
    499

    So, we have 5000 jiffies converted to only 499 clock ticks and reported
    back.

    TICK_NSEC = 999848
    ACTHZ = 256039

    Keeping in-kernel variable in units passed from userspace will fix issue
    of course, but this probably won't be right for every sysctl.

    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: Alexey Dobriyan
    Cc: Peter Zijlstra
    Cc: Nick Piggin
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexey Dobriyan
     
  • CONFIG_DEBUG_PAGEALLOC is now supported by x86, powerpc, sparc64, and
    s390. This patch implements it for the rest of the architectures by
    filling the pages with poison byte patterns after free_pages() and
    verifying the poison patterns before alloc_pages().

    This generic one cannot detect invalid page accesses immediately but
    invalid read access may cause invalid dereference by poisoned memory and
    invalid write access can be detected after a long delay.

    Signed-off-by: Akinobu Mita
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Akinobu Mita
     
  • I notice there are many places doing copy_from_user() which follows
    kmalloc():

    dst = kmalloc(len, GFP_KERNEL);
    if (!dst)
    return -ENOMEM;
    if (copy_from_user(dst, src, len)) {
    kfree(dst);
    return -EFAULT
    }

    memdup_user() is a wrapper of the above code. With this new function, we
    don't have to write 'len' twice, which can lead to typos/mistakes. It
    also produces smaller code and kernel text.

    A quick grep shows 250+ places where memdup_user() *may* be used. I'll
    prepare a patchset to do this conversion.

    Signed-off-by: Li Zefan
    Cc: KOSAKI Motohiro
    Cc: Americo Wang
    Cc: Alexey Dobriyan
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Li Zefan
     
  • pagevec_swap_free() is now unused.

    Signed-off-by: KOSAKI Motohiro
    Cc: Johannes Weiner
    Cc: Rik van Riel
    Acked-by: Hugh Dickins
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    KOSAKI Motohiro
     
  • Add a helper function account_page_dirtied(). Use that from two
    callsites. reiser4 adds a function which adds a third callsite.

    Signed-off-by: Edward Shishkin
    Cc: Nick Piggin
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Edward Shishkin
     
  • Impact: cleanup

    In almost cases, for_each_zone() is used with populated_zone(). It's
    because almost function doesn't need memoryless node information.
    Therefore, for_each_populated_zone() can help to make code simplify.

    This patch has no functional change.

    [akpm@linux-foundation.org: small cleanup]
    Signed-off-by: KOSAKI Motohiro
    Cc: KAMEZAWA Hiroyuki
    Cc: Mel Gorman
    Reviewed-by: Johannes Weiner
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    KOSAKI Motohiro
     
  • Andrew pointed out get_mm_hiwater_xxx() evaluate "mm" argument thrice/twice,
    make them inline.

    Signed-off-by: Oleg Nesterov
    Cc: Hugh Dickins
    Reviewed-by: KOSAKI Motohiro
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Oleg Nesterov
     
  • struct tty_operations::proc_fops took it's place and there is one less
    create_proc_read_entry() user now!

    Signed-off-by: Alexey Dobriyan
    Cc: Alan Cox
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexey Dobriyan
     
  • Used for gradual switch of TTY drivers from using ->read_proc which helps
    with gradual switch from ->read_proc for the whole tree.

    As side effect, fix possible race condition when ->data initialized after
    PDE is hooked into proc tree.

    ->proc_fops takes precedence over ->read_proc.

    Signed-off-by: Alexey Dobriyan
    Cc: Alan Cox
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexey Dobriyan
     

31 Mar, 2009

26 commits

  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6:
    wireless: remove duplicated .ndo_set_mac_address
    netfilter: xtables: fix IPv6 dependency in the cluster match
    tg3: Add GRO support.
    niu: Add GRO support.
    ucc_geth: Fix use-after-of_node_put() in ucc_geth_probe().
    gianfar: Fix use-after-of_node_put() in gfar_of_init().
    kernel: remove HIPQUAD()
    netpoll: store local and remote ip in net-endian
    netfilter: fix endian bug in conntrack printks
    dmascc: fix incomplete conversion to network_device_ops
    gso: Fix support for linear packets
    skbuff.h: fix missing kernel-doc
    ni5010: convert to net_device_ops

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-cpumask:
    oprofile: Thou shalt not call __exit functions from __init functions
    cpumask: remove the now-obsoleted pcibus_to_cpumask(): generic
    cpumask: remove cpumask_t from core
    cpumask: convert rcutorture.c
    cpumask: use new cpumask_ functions in core code.
    cpumask: remove references to struct irqaction's mask field.
    cpumask: use mm_cpumask() wrapper: kernel/fork.c
    cpumask: use set_cpu_active in init/main.c
    cpumask: remove node_to_first_cpu
    cpumask: fix seq_bitmap_*() functions.
    cpumask: remove dangerous CPU_MASK_ALL_PTR, &CPU_MASK_ALL

    Linus Torvalds
     
  • * 'hwmon-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6:
    hwmon: (fschmd) Add support for the FSC Hades IC
    hwmon: (fschmd) Add support for the FSC Syleus IC
    i2c-i801: Instantiate FSC hardware montioring chips
    dmi: Let dmi_walk() users pass private data
    hwmon: Define a standard interface for chassis intrusion detection
    Move the pcf8591 driver to hwmon
    hwmon: (w83627ehf) Only expose in6 or temp3 on the W83667HG
    hwmon: (w83627ehf) Add support for W83667HG
    hwmon: (w83627ehf) Invert fan pin variables logic
    hwmon: (hdaps) Fix Thinkpad X41 axis inversion
    hwmon: (hdaps) Allow inversion of separate axis
    hwmon: (ds1621) Clean up documentation
    hwmon: (ds1621) Avoid unneeded register access
    hwmon: (ds1621) Clean up register access
    hwmon: (ds1621) Reorder code statements

    Linus Torvalds
     
  • * 'locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (33 commits)
    lockdep: fix deadlock in lockdep_trace_alloc
    lockdep: annotate reclaim context (__GFP_NOFS), fix SLOB
    lockdep: annotate reclaim context (__GFP_NOFS), fix
    lockdep: build fix for !PROVE_LOCKING
    lockstat: warn about disabled lock debugging
    lockdep: use stringify.h
    lockdep: simplify check_prev_add_irq()
    lockdep: get_user_chars() redo
    lockdep: simplify get_user_chars()
    lockdep: add comments to mark_lock_irq()
    lockdep: remove macro usage from mark_held_locks()
    lockdep: fully reduce mark_lock_irq()
    lockdep: merge the !_READ mark_lock_irq() helpers
    lockdep: merge the _READ mark_lock_irq() helpers
    lockdep: simplify mark_lock_irq() helpers #3
    lockdep: further simplify mark_lock_irq() helpers
    lockdep: simplify the mark_lock_irq() helpers
    lockdep: split up mark_lock_irq()
    lockdep: generate usage strings
    lockdep: generate the state bit definitions
    ...

    Linus Torvalds
     
  • * 'proc-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/adobriyan/proc:
    Revert "proc: revert /proc/uptime to ->read_proc hook"
    proc 2/2: remove struct proc_dir_entry::owner
    proc 1/2: do PDE usecounting even for ->read_proc, ->write_proc
    proc: fix sparse warnings in pagemap_read()
    proc: move fs/proc/inode-alloc.txt comment into a source file

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6:
    PCI PM: Make pci_prepare_to_sleep() disable wake-up if needed
    radeonfb: Use __pci_complete_power_transition()
    PCI PM: Introduce __pci_[start|complete]_power_transition() (rev. 2)
    PCI PM: Restore config spaces of all devices during early resume
    PCI PM: Make pci_set_power_state() handle devices with no PM support
    PCI PM: Put devices into low power states during late suspend (rev. 2)
    PCI PM: Move pci_restore_standard_config to pci-driver.c
    PCI PM: Use pci_set_power_state during early resume
    PCI PM: Consistently use variable name "error" for pm call return values
    kexec: Change kexec jump code ordering
    PM: Change hibernation code ordering
    PM: Change suspend code ordering
    PM: Rework handling of interrupts during suspend-resume
    PM: Introduce functions for suspending and resuming device interrupts

    Linus Torvalds
     
  • Fix this build error when REISERFS_FS_POSIX_ACL is not set:

    fs/reiserfs/inode.c: In function 'reiserfs_new_inode':
    fs/reiserfs/inode.c:1919: warning: passing argument 1 of 'reiserfs_inherit_default_acl' from incompatible pointer type
    fs/reiserfs/inode.c:1919: warning: passing argument 2 of 'reiserfs_inherit_default_acl' from incompatible pointer type
    fs/reiserfs/inode.c:1919: warning: passing argument 3 of 'reiserfs_inherit_default_acl' from incompatible pointer type
    fs/reiserfs/inode.c:1919: error: too many arguments to function 'reiserfs_inherit_default_acl'

    due to a missing transaction-handle argument in the non-acl
    compatibility function.

    Signed-off-by: Alexander Beregalov
    Acked-by: Jeff Mahoney
    Signed-off-by: Linus Torvalds

    Alexander Beregalov
     
  • Setting ->owner as done currently (pde->owner = THIS_MODULE) is racy
    as correctly noted at bug #12454. Someone can lookup entry with NULL
    ->owner, thus not pinning enything, and release it later resulting
    in module refcount underflow.

    We can keep ->owner and supply it at registration time like ->proc_fops
    and ->data.

    But this leaves ->owner as easy-manipulative field (just one C assignment)
    and somebody will forget to unpin previous/pin current module when
    switching ->owner. ->proc_fops is declared as "const" which should give
    some thoughts.

    ->read_proc/->write_proc were just fixed to not require ->owner for
    protection.

    rmmod'ed directories will be empty and return "." and ".." -- no harm.
    And directories with tricky enough readdir and lookup shouldn't be modular.
    We definitely don't want such modular code.

    Removing ->owner will also make PDE smaller.

    So, let's nuke it.

    Kudos to Jeff Layton for reminding about this, let's say, oversight.

    http://bugzilla.kernel.org/show_bug.cgi?id=12454

    Signed-off-by: Alexey Dobriyan

    Alexey Dobriyan
     
  • * 'drm-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6: (53 commits)
    drm: detect hdmi monitor by hdmi identifier (v3)
    drm: drm_fops.c unlock missing on error path
    drm: reorder struct drm_ioctl_desc to save space on 64 bit builds
    radeon: add some new pci ids
    drm: read EDID extensions from monitor
    drm: Use a little stash on the stack to avoid kmalloc in most DRM ioctls.
    drm/radeon: add regs required for occlusion queries support
    drm/i915: check the return value from the copy from user
    drm/radeon: fix logic in r600_page_table_init() to match ati_gart
    drm/radeon: r600 ptes are 64-bit, cleanup cleanup function.
    drm/radeon: don't call irq changes on r600 suspend/resume
    drm/radeon: fix r600 writeback across suspend/resume
    drm/radeon: fix r600 writeback setup.
    drm: fix warnings about new mappings in info code.
    drm/radeon: NULL noise: drivers/gpu/drm/radeon/radeon_*.c
    drm/radeon: fix r600 pci mapping calls.
    drm/radeon: r6xx/r7xx: fix possible oops in r600_page_table_cleanup()
    radeon: call the correct idle function, logic got inverted.
    drm/radeon: RS600: fix interrupt handling
    drm/r600: fix rptr address along lines of previous fixes to radeon.
    ...

    Linus Torvalds
     
  • * 'iommu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (60 commits)
    dma-debug: make memory range checks more consistent
    dma-debug: warn of unmapping an invalid dma address
    dma-debug: fix dma_debug_add_bus() definition for !CONFIG_DMA_API_DEBUG
    dma-debug/x86: register pci bus for dma-debug leak detection
    dma-debug: add a check dma memory leaks
    dma-debug: add checks for kernel text and rodata
    dma-debug: print stacktrace of mapping path on unmap error
    dma-debug: Documentation update
    dma-debug: x86 architecture bindings
    dma-debug: add function to dump dma mappings
    dma-debug: add checks for sync_single_sg_*
    dma-debug: add checks for sync_single_range_*
    dma-debug: add checks for sync_single_*
    dma-debug: add checking for [alloc|free]_coherent
    dma-debug: add add checking for map/unmap_sg
    dma-debug: add checking for map/unmap_page/single
    dma-debug: add core checking functions
    dma-debug: add debugfs interface
    dma-debug: add kernel command line parameters
    dma-debug: add initialization code
    ...

    Fix trivial conflicts due to whitespace changes in arch/x86/kernel/pci-nommu.c

    Linus Torvalds
     
  • The radeonfb driver needs to program the device's PMCSR directly due
    to some quirky hardware it has to handle (see
    http://bugzilla.kernel.org/show_bug.cgi?id=12846 for details) and
    after doing that it needs to call the platform (usually ACPI) to
    finish the power transition of the device. Currently it uses
    pci_set_power_state() for this purpose, however making a specific
    assumption about the internal behavior of this function, which has
    changed recently so that this assumption is no longer satisfied.
    For this reason, introduce __pci_complete_power_transition() that may
    be called by the radeonfb driver to complete the power transition of
    the device. For symmetry, introduce __pci_start_power_transition().

    Signed-off-by: Rafael J. Wysocki
    Acked-by: Jesse Barnes

    Rafael J. Wysocki
     
  • Introduce helper functions allowing us to prevent device drivers from
    getting any interrupts (without disabling interrupts on the CPU)
    during suspend (or hibernation) and to make them start to receive
    interrupts again during the subsequent resume. These functions make it
    possible to keep timer interrupts enabled while the "late" suspend and
    "early" resume callbacks provided by device drivers are being
    executed. In turn, this allows device drivers' "late" suspend and
    "early" resume callbacks to sleep, execute ACPI callbacks etc.

    The functions introduced here will be used to rework the handling of
    interrupts during suspend (hibernation) and resume. Namely,
    interrupts will only be disabled on the CPU right before suspending
    sysdevs, while device drivers will be prevented from receiving
    interrupts, with the help of the new helper function, before their
    "late" suspend callbacks run (and analogously during resume).

    Signed-off-by: Rafael J. Wysocki
    Acked-by: Ingo Molnar

    Rafael J. Wysocki
     
  • At the moment, dmi_walk() lacks flexibility, users can't pass data to
    the callback function. Add a pointer for private data to make this
    function more flexible.

    Signed-off-by: Jean Delvare
    Cc: Hans de Goede
    Cc: Matthew Garrett
    Cc: Roland Dreier

    Jean Delvare
     
  • * reiserfs-updates: (35 commits)
    reiserfs: rename [cn]_* variables
    reiserfs: rename p_._ variables
    reiserfs: rename p_s_tb to tb
    reiserfs: rename p_s_inode to inode
    reiserfs: rename p_s_bh to bh
    reiserfs: rename p_s_sb to sb
    reiserfs: strip trailing whitespace
    reiserfs: cleanup path functions
    reiserfs: factor out buffer_info initialization
    reiserfs: add atomic addition of selinux attributes during inode creation
    reiserfs: use generic readdir for operations across all xattrs
    reiserfs: journaled xattrs
    reiserfs: use generic xattr handlers
    reiserfs: remove i_has_xattr_dir
    reiserfs: make per-inode xattr locking more fine grained
    reiserfs: eliminate per-super xattr lock
    reiserfs: simplify xattr internal file lookups/opens
    reiserfs: Clean up xattrs when REISERFS_FS_XATTR is unset
    reiserfs: remove IS_PRIVATE helpers
    reiserfs: remove link detection code
    ...

    Fixed up conflicts manually due to:
    - quota name cleanups vs variable naming changes:
    fs/reiserfs/inode.c
    fs/reiserfs/namei.c
    fs/reiserfs/stree.c
    fs/reiserfs/xattr.c
    - exported include header cleanups
    include/linux/reiserfs_fs.h

    Linus Torvalds
     
  • This patch is a simple s/p_._//g to the reiserfs code. This is the
    fifth in a series of patches to rip out some of the awful variable
    naming in reiserfs.

    Signed-off-by: Jeff Mahoney
    Signed-off-by: Linus Torvalds

    Jeff Mahoney
     
  • This patch is a simple s/p_s_tb/tb/g to the reiserfs code. This is the
    fourth in a series of patches to rip out some of the awful variable
    naming in reiserfs.

    Signed-off-by: Jeff Mahoney
    Signed-off-by: Linus Torvalds

    Jeff Mahoney
     
  • This patch is a simple s/p_s_inode/inode/g to the reiserfs code. This
    is the third in a series of patches to rip out some of the awful
    variable naming in reiserfs.

    Signed-off-by: Jeff Mahoney
    Signed-off-by: Linus Torvalds

    Jeff Mahoney
     
  • This patch is a simple s/p_s_bh/bh/g to the reiserfs code. This is the
    second in a series of patches to rip out some of the awful variable
    naming in reiserfs.

    Signed-off-by: Jeff Mahoney
    Signed-off-by: Linus Torvalds

    Jeff Mahoney
     
  • This patch is a simple s/p_s_sb/sb/g to the reiserfs code. This is the
    first in a series of patches to rip out some of the awful variable
    naming in reiserfs.

    Signed-off-by: Jeff Mahoney
    Signed-off-by: Linus Torvalds

    Jeff Mahoney
     
  • This patch strips trailing whitespace from the reiserfs code.

    Signed-off-by: Jeff Mahoney
    Signed-off-by: Linus Torvalds

    Jeff Mahoney
     
  • Some time ago, some changes were made to make security inode attributes
    be atomically written during inode creation. ReiserFS fell behind in
    this area, but with the reworking of the xattr code, it's now fairly
    easy to add.

    The following patch adds the ability for security attributes to be added
    automatically during inode creation.

    Signed-off-by: Jeff Mahoney
    Signed-off-by: Linus Torvalds

    Jeff Mahoney
     
  • The current reiserfs xattr implementation open codes reiserfs_readdir
    and frees the path before calling the filldir function. Typically, the
    filldir function is something that modifies the file system, such as a
    chown or an inode deletion that also require reading of an inode
    associated with each direntry. Since the file system is modified, the
    path retained becomes invalid for the next run. In addition, it runs
    backwards in attempt to minimize activity.

    This is clearly suboptimal from a code cleanliness perspective as well
    as performance-wise.

    This patch implements a generic reiserfs_for_each_xattr that uses the
    generic readdir and a specific filldir routine that simply populates an
    array of dentries and then performs a specific operation on them. When
    all files have been operated on, it then calls the operation on the
    directory itself.

    The result is a noticable code reduction and better performance.

    Signed-off-by: Jeff Mahoney
    Signed-off-by: Linus Torvalds

    Jeff Mahoney
     
  • Deadlocks are possible in the xattr code between the journal lock and the
    xattr sems.

    This patch implements journalling for xattr operations. The benefit is
    twofold:
    * It gets rid of the deadlock possibility by always ensuring that xattr
    write operations are initiated inside a transaction.
    * It corrects the problem where xattr backing files aren't considered any
    differently than normal files, despite the fact they are metadata.

    I discussed the added journal load with Chris Mason, and we decided that
    since xattrs (versus other journal activity) is fairly rare, the introduction
    of larger transactions to support journaled xattrs wouldn't be too big a deal.

    Signed-off-by: Jeff Mahoney
    Signed-off-by: Linus Torvalds

    Jeff Mahoney
     
  • Christoph Hellwig had asked me quite some time ago to port the reiserfs
    xattrs to the generic xattr interface.

    This patch replaces the reiserfs-specific xattr handling code with the
    generic struct xattr_handler.

    However, since reiserfs doesn't split the prefix and name when accessing
    xattrs, it can't leverage generic_{set,get,list,remove}xattr without
    needlessly reconstructing the name on the back end.

    Update 7/26/07: Added missing dput() to deletion path.
    Update 8/30/07: Added missing mark_inode_dirty when i_mode is used to
    represent an ACL and no previous ACL existed.

    Signed-off-by: Jeff Mahoney
    Signed-off-by: Linus Torvalds

    Jeff Mahoney
     
  • The per-inode locking can be made more fine-grained to surround just the
    interaction with the filesystem itself. This really only applies to
    protecting reads during a write, since concurrent writes are barred with
    inode->i_mutex at the vfs level.

    Signed-off-by: Jeff Mahoney
    Signed-off-by: Linus Torvalds

    Jeff Mahoney
     
  • With the switch to using inode->i_mutex locking during lookups/creation
    in the xattr root, the per-super xattr lock is no longer needed.

    This patch removes it.

    Signed-off-by: Jeff Mahoney
    Signed-off-by: Linus Torvalds

    Jeff Mahoney