14 Jan, 2013

1 commit


22 Dec, 2012

39 commits

  • Linus Torvalds
     
  • Pull watchdog updates from Wim Van Sebroeck:
    "This includes some fixes and code improvements (like
    clk_prepare_enable and clk_disable_unprepare), conversion from the
    omap_wdt and twl4030_wdt drivers to the watchdog framework, addition
    of the SB8x0 chipset support and the DA9055 Watchdog driver and some
    OF support for the davinci_wdt driver."

    * git://www.linux-watchdog.org/linux-watchdog: (22 commits)
    watchdog: mei: avoid oops in watchdog unregister code path
    watchdog: Orion: Fix possible null-deference in orion_wdt_probe
    watchdog: sp5100_tco: Add SB8x0 chipset support
    watchdog: davinci_wdt: add OF support
    watchdog: da9052: Fix invalid free of devm_ allocated data
    watchdog: twl4030_wdt: Change TWL4030_MODULE_PM_RECEIVER to TWL_MODULE_PM_RECEIVER
    watchdog: remove depends on CONFIG_EXPERIMENTAL
    watchdog: Convert dev_printk(KERN_ to dev_(
    watchdog: DA9055 Watchdog driver
    watchdog: omap_wdt: eliminate goto
    watchdog: omap_wdt: delete redundant platform_set_drvdata() calls
    watchdog: omap_wdt: convert to devm_ functions
    watchdog: omap_wdt: convert to new watchdog core
    watchdog: WatchDog Timer Driver Core: fix comment
    watchdog: s3c2410_wdt: use clk_prepare_enable and clk_disable_unprepare
    watchdog: imx2_wdt: Select the driver via ARCH_MXC
    watchdog: cpu5wdt.c: add missing del_timer call
    watchdog: hpwdt.c: Increase version string
    watchdog: Convert twl4030_wdt to watchdog core
    davinci_wdt: preparation for switch to common clock framework
    ...

    Linus Torvalds
     
  • Pull CIFS fixes from Steve French:
    "Misc small cifs fixes"

    * 'for-next' of git://git.samba.org/sfrench/cifs-2.6:
    cifs: eliminate cifsERROR variable
    cifs: don't compare uniqueids in cifs_prime_dcache unless server inode numbers are in use
    cifs: fix double-free of "string" in cifs_parse_mount_options

    Linus Torvalds
     
  • Pull dm update from Alasdair G Kergon:
    "Miscellaneous device-mapper fixes, cleanups and performance
    improvements.

    Of particular note:
    - Disable broken WRITE SAME support in all targets except linear and
    striped. Use it when kcopyd is zeroing blocks.
    - Remove several mempools from targets by moving the data into the
    bio's new front_pad area(which dm calls 'per_bio_data').
    - Fix a race in thin provisioning if discards are misused.
    - Prevent userspace from interfering with the ioctl parameters and
    use kmalloc for the data buffer if it's small instead of vmalloc.
    - Throttle some annoying error messages when I/O fails."

    * tag 'dm-3.8-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-dm: (36 commits)
    dm stripe: add WRITE SAME support
    dm: remove map_info
    dm snapshot: do not use map_context
    dm thin: dont use map_context
    dm raid1: dont use map_context
    dm flakey: dont use map_context
    dm raid1: rename read_record to bio_record
    dm: move target request nr to dm_target_io
    dm snapshot: use per_bio_data
    dm verity: use per_bio_data
    dm raid1: use per_bio_data
    dm: introduce per_bio_data
    dm kcopyd: add WRITE SAME support to dm_kcopyd_zero
    dm linear: add WRITE SAME support
    dm: add WRITE SAME support
    dm: prepare to support WRITE SAME
    dm ioctl: use kmalloc if possible
    dm ioctl: remove PF_MEMALLOC
    dm persistent data: improve improve space map block alloc failure message
    dm thin: use DMERR_LIMIT for errors
    ...

    Linus Torvalds
     
  • This reverts commit 79f77bf9a4e3dd5ead006b8f17e7c4ff07d8374e.

    This is obviously wrong, and I have no idea how I missed seeing the
    warning in testing: I must just not have looked at the right logs. The
    caller bumps rq_resused/rq_next_page, so it will always be hit on a
    large enough read.

    Reported-by: Dave Jones
    Signed-off-by: J. Bruce Fields
    Signed-off-by: Linus Torvalds

    J. Bruce Fields
     
  • Pull more infiniband changes from Roland Dreier:
    "Second batch of InfiniBand/RDMA changes for 3.8:
    - cxgb4 changes to fix lookup engine hash collisions
    - mlx4 changes to make flow steering usable
    - fix to IPoIB to avoid pinning dst reference for too long"

    * tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband:
    RDMA/cxgb4: Fix bug for active and passive LE hash collision path
    RDMA/cxgb4: Fix LE hash collision bug for passive open connection
    RDMA/cxgb4: Fix LE hash collision bug for active open connection
    mlx4_core: Allow choosing flow steering mode
    mlx4_core: Adjustments to Flow Steering activation logic for SR-IOV
    mlx4_core: Fix error flow in the flow steering wrapper
    mlx4_core: Add QPN enforcement for flow steering rules set by VFs
    cxgb4: Add LE hash collision bug fix path in LLD driver
    cxgb4: Add T4 filter support
    IPoIB: Call skb_dst_drop() once skb is enqueued for sending

    Linus Torvalds
     
  • Pull asm-generic cleanup from Arnd Bergmann:
    "These are a few cleanups for asm-generic:

    - a set of patches from Lars-Peter Clausen to generalize asm/mmu.h
    and use it in the architectures that don't need any special
    handling.
    - A patch from Will Deacon to remove the {read,write}s{b,w,l} as
    discussed during the arm64 review
    - A patch from James Hogan that helps with the meta architecture
    series."

    * tag 'asm-generic' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic:
    xtensa: Use generic asm/mmu.h for nommu
    h8300: Use generic asm/mmu.h
    c6x: Use generic asm/mmu.h
    asm-generic/mmu.h: Add support for FDPIC
    asm-generic/mmu.h: Remove unused vmlist field from mm_context_t
    asm-generic: io: remove {read,write} string functions
    asm-generic/io.h: remove asm/cacheflush.h include

    Linus Torvalds
     
  • Commit db5b0ae00712 ("Merge tag 'dt' of git://git.kernel.org/.../arm-soc")
    causes a duplicated build target. This patch fixes it and sorts out the
    build target alphabetically so that we can recognize something wrong
    easily.

    Cc: Olof Johansson
    Cc: Arnd Bergmann
    Signed-off-by: Kukjin Kim
    Signed-off-by: Linus Torvalds

    Kukjin Kim
     
  • Rename stripe_map_discard to stripe_map_range and reuse it for WRITE
    SAME bio processing.

    Signed-off-by: Mike Snitzer
    Signed-off-by: Alasdair G Kergon

    Mike Snitzer
     
  • This patch removes map_info from bio-based device mapper targets.
    map_info is still used for request-based targets.

    Signed-off-by: Mikulas Patocka
    Signed-off-by: Alasdair G Kergon

    Mikulas Patocka
     
  • Eliminate struct map_info from dm-snap.

    map_info->ptr was used in dm-snap to indicate if the bio was tracked.
    If map_info->ptr was non-NULL, the bio was linked in tracked_chunk_hash.

    This patch removes the use of map_info->ptr. We determine if the bio was
    tracked based on hlist_unhashed(&c->node). If hlist_unhashed is true,
    the bio is not tracked, if it is false, the bio is tracked.

    Signed-off-by: Mikulas Patocka
    Signed-off-by: Alasdair G Kergon

    Mikulas Patocka
     
  • This patch removes endio_hook_pool from dm-thin and uses per-bio data instead.

    This patch removes any use of map_info in preparation for the next patch
    that removes map_info from bio-based device mapper.

    Signed-off-by: Mikulas Patocka
    Signed-off-by: Alasdair G Kergon

    Mikulas Patocka
     
  • Don't use map_info any more in dm-raid1.

    map_info was used for writes to hold the region number. For this purpose
    we add a new field dm_bio_details to dm_raid1_bio_record.

    map_info was used for reads to hold a pointer to dm_raid1_bio_record (if
    the pointer was non-NULL, bio details were saved; if the pointer was
    NULL, bio details were not saved). We use
    dm_raid1_bio_record.details->bi_bdev for this purpose. If bi_bdev is
    NULL, details were not saved, if bi_bdev is non-NULL, details were
    saved.

    Signed-off-by: Mikulas Patocka
    Signed-off-by: Alasdair G Kergon

    Mikulas Patocka
     
  • Replace map_info with a per-bio structure "struct per_bio_data" in dm-flakey.

    Signed-off-by: Mikulas Patocka
    Signed-off-by: Alasdair G Kergon

    Mikulas Patocka
     
  • Rename struct read_record to bio_record in dm-raid1.

    In the following patch, the structure will be used for both read and
    write bios, so rename it.

    Signed-off-by: Mikulas Patocka
    Signed-off-by: Alasdair G Kergon

    Mikulas Patocka
     
  • This patch moves target_request_nr from map_info to dm_target_io and
    makes it accessible with dm_bio_get_target_request_nr.

    This patch is a preparation for the next patch that removes map_info.

    Signed-off-by: Mikulas Patocka
    Signed-off-by: Alasdair G Kergon

    Mikulas Patocka
     
  • Replace tracked_chunk_pool with per_bio_data in dm-snap.

    Signed-off-by: Mikulas Patocka
    Signed-off-by: Alasdair G Kergon

    Mikulas Patocka
     
  • Replace io_mempool with per_bio_data in dm-verity.

    Signed-off-by: Mikulas Patocka
    Signed-off-by: Alasdair G Kergon

    Mikulas Patocka
     
  • Replace read_record_pool with per_bio_data in dm-raid1.

    Signed-off-by: Mikulas Patocka
    Signed-off-by: Alasdair G Kergon

    Mikulas Patocka
     
  • Introduce a field per_bio_data_size in struct dm_target.

    Targets can set this field in the constructor. If a target sets this
    field to a non-zero value, "per_bio_data_size" bytes of auxiliary data
    are allocated for each bio submitted to the target. These data can be
    used for any purpose by the target and help us improve performance by
    removing some per-target mempools.

    Per-bio data is accessed with dm_per_bio_data. The
    argument data_size must be the same as the value per_bio_data_size in
    dm_target.

    If the target has a pointer to per_bio_data, it can get a pointer to
    the bio with dm_bio_from_per_bio_data() function (data_size must be the
    same as the value passed to dm_per_bio_data).

    Signed-off-by: Mikulas Patocka
    Signed-off-by: Alasdair G Kergon

    Mikulas Patocka
     
  • Add WRITE SAME support to dm-io and make it accessible to
    dm_kcopyd_zero(). dm_kcopyd_zero() provides an asynchronous interface
    whereas the blkdev_issue_write_same() interface is synchronous.

    WRITE SAME is a SCSI command that can be leveraged for more efficient
    zeroing of a specified logical extent of a device which supports it.
    Only a single zeroed logical block is transfered to the target for each
    WRITE SAME and the target then writes that same block across the
    specified extent.

    The dm thin target uses this.

    Signed-off-by: Mike Snitzer
    Signed-off-by: Alasdair G Kergon

    Mike Snitzer
     
  • The linear target can already support WRITE SAME requests so signal
    this by setting num_write_same_requests to 1.

    Signed-off-by: Mike Snitzer
    Signed-off-by: Alasdair G Kergon

    Mike Snitzer
     
  • WRITE SAME bios have a payload that contain a single page. When
    cloning WRITE SAME bios DM has no need to modify the bi_io_vec
    attributes (and doing so would be detrimental). DM need only alter the
    start and end of the WRITE SAME bio accordingly.

    Rather than duplicate __clone_and_map_discard, factor out a common
    function that is also used by __clone_and_map_write_same.

    Signed-off-by: Mike Snitzer
    Signed-off-by: Alasdair G Kergon

    Mike Snitzer
     
  • Allow targets to opt in to WRITE SAME support by setting
    'num_write_same_requests' in the dm_target structure.

    A dm device will only advertise WRITE SAME support if all its
    targets and all its underlying devices support it.

    Signed-off-by: Mike Snitzer
    Signed-off-by: Alasdair G Kergon

    Mike Snitzer
     
  • If the parameter buffer is small enough, try to allocate it with kmalloc()
    rather than vmalloc().

    vmalloc is noticeably slower than kmalloc because it has to manipulate
    page tables.

    In my tests, on PA-RISC this patch speeds up activation 13 times.
    On Opteron this patch speeds up activation by 5%.

    This patch introduces a new function free_params() to free the
    parameters and this uses new flags that record whether or not vmalloc()
    was used and whether or not the input buffer must be wiped after use.

    Signed-off-by: Mikulas Patocka
    Signed-off-by: Alasdair G Kergon

    Mikulas Patocka
     
  • When allocating memory for the userspace ioctl data, set some
    appropriate GPF flags directly instead of using PF_MEMALLOC.

    Signed-off-by: Mikulas Patocka
    Signed-off-by: Alasdair G Kergon

    Mikulas Patocka
     
  • Improve space map error message when unable to allocate a new
    metadata block.

    Signed-off-by: Joe Thornber
    Signed-off-by: Alasdair G Kergon

    Joe Thornber
     
  • Throttle all errors logged from the IO path by dm thin.

    Signed-off-by: Mike Snitzer
    Signed-off-by: Alasdair G Kergon

    Mike Snitzer
     
  • Nearly all of persistent-data is in the IO path so throttle error
    messages with DMERR_LIMIT to limit the amount logged when
    something has gone wrong.

    Signed-off-by: Mike Snitzer
    Signed-off-by: Alasdair G Kergon

    Mike Snitzer
     
  • Reinstate a useful error message when the block manager buffer validator fails.
    This was mistakenly eliminated when the block manager was converted to use
    dm-bufio.

    Signed-off-by: Mike Snitzer
    Signed-off-by: Alasdair G Kergon

    Mike Snitzer
     
  • If the user does not supply a bitmap region_size to the dm raid target,
    a reasonable size is computed automatically. If this is not a power of 2,
    the md code will report an error later.

    This patch catches the problem early and rounds the region_size to the
    next power of two.

    Signed-off-by: Jonathan Brassow
    Signed-off-by: Alasdair G Kergon

    Jonathan Brassow
     
  • Remove unused @data_block parameter from cell_defer.
    Change thin_bio_map to use many returns rather than setting a variable.

    Signed-off-by: Joe Thornber
    Signed-off-by: Mike Snitzer
    Signed-off-by: Alasdair G Kergon

    Joe Thornber
     
  • Rename cell_defer_except() to cell_defer_no_holder() which describes
    its function more clearly.

    Signed-off-by: Joe Thornber
    Signed-off-by: Mike Snitzer
    Signed-off-by: Alasdair G Kergon

    Joe Thornber
     
  • track_chunk is always called with interrupts enabled. Consequently, we
    do not need to save and restore interrupt state in "flags" variable.
    This patch changes spin_lock_irqsave to spin_lock_irq and
    spin_unlock_irqrestore to spin_unlock_irq.

    Signed-off-by: Mikulas Patocka
    Signed-off-by: Alasdair G Kergon

    Mikulas Patocka
     
  • Use a defined macro DM_ENDIO_INCOMPLETE instead of a numeric constant.

    Signed-off-by: Mikulas Patocka
    Signed-off-by: Alasdair G Kergon

    Mikulas Patocka
     
  • mempool_alloc can't fail if __GFP_WAIT is specified, so the condition
    that tests if read_record is non-NULL is always true.

    Signed-off-by: Mikulas Patocka
    Signed-off-by: Alasdair G Kergon

    Mikulas Patocka
     
  • If "ignore_discard" is specified when creating the thin pool device then
    discard support is disabled for that device. The pool device's status
    should reflect this fact rather than stating "no_discard_passdown"
    (which implies discards are enabled but passdown is disabled).

    Reported-by: Zdenek Kabelac
    Signed-off-by: Mike Snitzer
    Signed-off-by: Alasdair G Kergon

    Mike Snitzer
     
  • When deleting nested btrees, the code forgets to delete the innermost
    btree. The thin-metadata code serendipitously compensates for this by
    claiming there is one extra layer in the tree.

    This patch corrects both problems.

    Signed-off-by: Joe Thornber
    Signed-off-by: Alasdair G Kergon

    Joe Thornber
     
  • When discards are prepared it is best to directly wake the worker that
    will process them. The worker will be woken anyway, via periodic
    commit, but there is no reason to not wake_worker here.

    Signed-off-by: Joe Thornber
    Signed-off-by: Mike Snitzer
    Signed-off-by: Alasdair G Kergon

    Joe Thornber