1. 18 Jun, 2014 4 commits
    • Alexander Gordeev's avatar
      blk-mq: bitmap tag: fix races in bt_get() function · 86fb5c56
      Alexander Gordeev authored
      This update fixes few issues in bt_get() function:
      - list_empty(&wait.task_list) check is not protected;
      - was_empty check is always true which results in *every* thread
        entering the loop resets bt_wait_state::wait_cnt counter rather
        than every bt->wake_cnt'th thread;
      - 'bt_wait_state::wait_cnt' counter update is redundant, since
        it also gets reset in bt_clear_tag() function;
      Cc: Christoph Hellwig <hch@infradead.org>
      Cc: Ming Lei <tom.leiming@gmail.com>
      Cc: Jens Axboe <axboe@kernel.dk>
      Signed-off-by: default avatarAlexander Gordeev <agordeev@redhat.com>
      Signed-off-by: default avatarJens Axboe <axboe@fb.com>
    • Alexander Gordeev's avatar
      blk-mq: bitmap tag: fix race on blk_mq_bitmap_tags::wake_cnt · 2971c35f
      Alexander Gordeev authored
      This piece of code in bt_clear_tag() function is racy:
      	bs = bt_wake_ptr(bt);
      	if (bs && atomic_dec_and_test(&bs->wait_cnt)) {
      		atomic_set(&bs->wait_cnt, bt->wake_cnt);
      Since nothing prevents bt_wake_ptr() from returning the very
      same 'bs' address on multiple CPUs, the following scenario is
          CPU1                                CPU2
          ----                                ----
      0.  bs = bt_wake_ptr(bt);               bs = bt_wake_ptr(bt);
      1.  atomic_dec_and_test(&bs->wait_cnt)
      2.                                      atomic_dec_and_test(&bs->wait_cnt)
      3.  atomic_set(&bs->wait_cnt, bt->wake_cnt);
      If the decrement in [1] yields zero then for some amount of time
      the decrement in [2] results in a negative/overflow value, which
      is not expected. The follow-up assignment in [3] overwrites the
      invalid value with the batch value (and likely prevents the issue
      from being severe) which is still incorrect and should be a lesser.
      Cc: Ming Lei <tom.leiming@gmail.com>
      Cc: Jens Axboe <axboe@kernel.dk>
      Signed-off-by: default avatarAlexander Gordeev <agordeev@redhat.com>
      Signed-off-by: default avatarJens Axboe <axboe@fb.com>
    • Alexander Gordeev's avatar
      blk-mq: bitmap tag: fix races on shared ::wake_index fields · 8537b120
      Alexander Gordeev authored
      Fix racy updates of shared blk_mq_bitmap_tags::wake_index
      and blk_mq_hw_ctx::wake_index fields.
      Cc: Ming Lei <tom.leiming@gmail.com>
      Signed-off-by: default avatarAlexander Gordeev <agordeev@redhat.com>
      Signed-off-by: default avatarJens Axboe <axboe@fb.com>
    • Jens Axboe's avatar
      block: blk_max_size_offset() should check ->max_sectors · 736ed4de
      Jens Axboe authored
      Commit 762380ad
       inadvertently changed a check for max_sectors
      to max_hw_sectors. Revert that part, so we still compare against
      Signed-off-by: default avatarJens Axboe <axboe@fb.com>
  2. 16 Jun, 2014 1 commit
  3. 13 Jun, 2014 2 commits
  4. 11 Jun, 2014 14 commits
    • Matias Bjørling's avatar
      block: remove WQ_POWER_EFFICIENT from kblockd · 28747fcd
      Matias Bjørling authored
      blk-mq issues async requests through kblockd. To issue a work request on
      a specific CPU, kblockd_schedule_delayed_work_on is used. However, the
      specific CPU choice may not be honored, if the power_efficient option
      for workqueues is set. blk-mq requires that we have strict per-cpu
      scheduling, so it wont work properly if kblockd is marked
      POWER_EFFICIENT and power_efficient is set.
      Remove the kblockd WQ_POWER_EFFICIENT flag to prevent this behavior.
      This essentially reverts part of commit 695588f9
      , which added
      the WQ_POWER_EFFICIENT marker to kblockd.
      Signed-off-by: default avatarMatias Bjørling <m@bjorling.me>
      Signed-off-by: default avatarJens Axboe <axboe@fb.com>
    • Mike Snitzer's avatar
      null_blk: fix name and description of 'queue_mode' module parameter · 54ae81cd
      Mike Snitzer authored
      'use_mq' is not the name of the module parameter, 'queue_mode' is.
      Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
      Signed-off-by: default avatarJens Axboe <axboe@fb.com>
    • Christoph Hellwig's avatar
      block: remove elv_abort_queue and blk_abort_flushes · 2940474a
      Christoph Hellwig authored
      elv_abort_queue has no callers, and blk_abort_flushes is only called by
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarJens Axboe <axboe@fb.com>
    • Linus Torvalds's avatar
      Merge tag 'soc2-for-3.16' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 2dc24b0d
      Linus Torvalds authored
      Pull part two of ARM SoC updates from Arnd Bergmann:
       "This is a small follow-up to the larger ARM SoC updates merged last
        week, almost entirely for the keystone platform.
        The main change here is to use the new dma-ranges parsing code that
        came in through Russell's ARM tree.  This allows the keystone platform
        to do cache-coherent DMA and to finally support all the available
        physical memory when LPAE is enabled.
        Aside from this, the keystone reset driver has been rewritten, and
        there is a small bug fix to allow building the orion5x platform again"
      * tag 'soc2-for-3.16' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
        ARM: keystone: Drop use of meminfo since its not available anymore
        ARM: orion5x: fix mvebu_mbus_dt_init call
        ARM: configs: keystone: enable reset driver support
        ARM: dts: keystone: update reset node to work with reset driver
        ARM: keystone: remove redundant reset stuff
        ARM: keystone: Update the dma offset for non-dt platform devices
        ARM: keystone: Switch over to coherent memory address space
        ARM: configs: keystone: add MTD_SPI_NOR (new dependency for M25P80)
        ARM: configs: keystone: drop CONFIG_COMMON_CLK_DEBUG
    • Linus Torvalds's avatar
      Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs · 2840c566
      Linus Torvalds authored
      Pull reiserfs and ext3 changes from Jan Kara:
       "Big reiserfs cleanup from Jeff, an ext3 deadlock fix, and some small
      * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs: (34 commits)
        reiserfs: Fix compilation breakage with CONFIG_REISERFS_CHECK
        ext3: Fix deadlock in data=journal mode when fs is frozen
        reiserfs: call truncate_setsize under tailpack mutex
        fs/jbd/revoke.c: replace shift loop by ilog2
        reiserfs: remove obsolete __constant_cpu_to_le32
        reiserfs: balance_leaf refactor, split up balance_leaf_when_delete
        reiserfs: balance_leaf refactor, format balance_leaf_finish_node
        reiserfs: balance_leaf refactor, format balance_leaf_new_nodes_paste
        reiserfs: balance_leaf refactor, format balance_leaf_paste_right
        reiserfs: balance_leaf refactor, format balance_leaf_insert_right
        reiserfs: balance_leaf refactor, format balance_leaf_paste_left
        reiserfs: balance_leaf refactor, format balance_leaf_insert_left
        reiserfs: balance_leaf refactor, pull out balance_leaf{left, right, new_nodes, finish_node}
        reiserfs: balance_leaf refactor, pull out balance_leaf_finish_node_paste
        reiserfs: balance_leaf refactor pull out balance_leaf_finish_node_insert
        reiserfs: balance_leaf refactor, pull out balance_leaf_new_nodes_paste
        reiserfs: balance_leaf refactor, pull out balance_leaf_new_nodes_insert
        reiserfs: balance_leaf refactor, pull out balance_leaf_paste_right
        reiserfs: balance_leaf refactor, pull out balance_leaf_insert_right
        reiserfs: balance_leaf refactor, pull out balance_leaf_paste_left
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs · 859862dd
      Linus Torvalds authored
      Pull btrfs updates from Chris Mason:
       "The biggest change here is Josef's rework of the btrfs quota
        accounting, which improves the in-memory tracking of delayed extent
        I had been working on Btrfs stack usage for a while, mostly because it
        had become impossible to do long stress runs with slab, lockdep and
        pagealloc debugging turned on without blowing the stack.  Even though
        you upgraded us to a nice king sized stack, I kept most of the
        We also have some very hard to find corruption fixes, an awesome sysfs
        use after free, and the usual assortment of optimizations, cleanups
        and other fixes"
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (80 commits)
        Btrfs: convert smp_mb__{before,after}_clear_bit
        Btrfs: fix scrub_print_warning to handle skinny metadata extents
        Btrfs: make fsync work after cloning into a file
        Btrfs: use right type to get real comparison
        Btrfs: don't check nodes for extent items
        Btrfs: don't release invalid page in btrfs_page_exists_in_range()
        Btrfs: make sure we retry if page is a retriable exception
        Btrfs: make sure we retry if we couldn't get the page
        btrfs: replace EINVAL with EOPNOTSUPP for dev_replace raid56
        trivial: fs/btrfs/ioctl.c: fix typo s/substract/subtract/
        Btrfs: fix leaf corruption after __btrfs_drop_extents
        Btrfs: ensure btrfs_prev_leaf doesn't miss 1 item
        Btrfs: fix clone to deal with holes when NO_HOLES feature is enabled
        btrfs: free delayed node outside of root->inode_lock
        btrfs: replace EINVAL with ERANGE for resize when ULLONG_MAX
        Btrfs: fix transaction leak during fsync call
        btrfs: Avoid trucating page or punching hole in a already existed hole.
        Btrfs: update commit root on snapshot creation after orphan cleanup
        Btrfs: ioctl, don't re-lock extent range when not necessary
        Btrfs: avoid visiting all extent items when cloning a range
    • Linus Torvalds's avatar
      Merge tag 'xfs-for-linus-3.16-rc1' of git://oss.sgi.com/xfs/xfs · 412dd3a6
      Linus Torvalds authored
      Pull xfs updates from Dave Chinner:
       "This update contains:
         - cleanup removing unused function args
         - rework of the filestreams allocator to use dentry cache parent
         - new on-disk free inode btree and optimised inode allocator
         - various bug fixes
         - rework of internal attribute API
         - cleanup of superblock feature bit support to remove historic cruft
         - more fixes and minor cleanups
         - added a new directory/attribute geometry abstraction
         - yet more fixes and minor cleanups"
      * tag 'xfs-for-linus-3.16-rc1' of git://oss.sgi.com/xfs/xfs: (86 commits)
        xfs: fix xfs_da_args sparse warning in xfs_readdir
        xfs: Fix rounding in xfs_alloc_fix_len()
        xfs: tone down writepage/releasepage WARN_ONs
        xfs: small cleanup in xfs_lowbit64()
        xfs: kill xfs_buf_geterror()
        xfs: xfs_readsb needs to check for magic numbers
        xfs: block allocation work needs to be kswapd aware
        xfs: remove redundant geometry information from xfs_da_state
        xfs: replace attr LBSIZE with xfs_da_geometry
        xfs: pass xfs_da_args to xfs_attr_leaf_newentsize
        xfs: use xfs_da_geometry for block size in attr code
        xfs: remove mp->m_dir_geo from directory logging
        xfs: reduce direct usage of mp->m_dir_geo
        xfs: move node entry counts to xfs_da_geometry
        xfs: convert dir/attr btree threshold to xfs_da_geometry
        xfs: convert m_dirblksize to xfs_da_geometry
        xfs: convert m_dirblkfsbs to xfs_da_geometry
        xfs: convert directory segment limits to xfs_da_geometry
        xfs: convert directory db conversion to xfs_da_geometry
        xfs: convert directory dablk conversion to xfs_da_geometry
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.dk/linux-block · 23d4ed53
      Linus Torvalds authored
      Pull block layer fixes from Jens Axboe:
       "Final small batch of fixes to be included before -rc1.  Some general
        cleanups in here as well, but some of the blk-mq fixes we need for the
        NVMe conversion and/or scsi-mq.  The pull request contains:
         - Support for not merging across a specified "chunk size", if set by
           the driver.  Some NVMe devices perform poorly for IO that crosses
           such a chunk, so we need to support it generically as part of
           request merging avoid having to do complicated split logic.  From
         - Bump max tag depth to 10Ki tags.  Some scsi devices have a huge
           shared tag space.  Before we failed with EINVAL if a too large tag
           depth was specified, now we truncate it and pass back the actual
           value.  From me.
         - Various blk-mq rq init fixes from me and others.
         - A fix for enter on a dying queue for blk-mq from Keith.  This is
           needed to prevent oopsing on hot device removal.
         - Fixup for blk-mq timer addition from Ming Lei.
         - Small round of performance fixes for mtip32xx from Sam Bradshaw.
         - Minor stack leak fix from Rickard Strandqvist.
         - Two __init annotations from Fabian Frederick"
      * 'for-linus' of git://git.kernel.dk/linux-block:
        block: add __init to blkcg_policy_register
        block: add __init to elv_register
        block: ensure that bio_add_page() always accepts a page for an empty bio
        blk-mq: add timer in blk_mq_start_request
        blk-mq: always initialize request->start_time
        block: blk-exec.c: Cleaning up local variable address returnd
        mtip32xx: minor performance enhancements
        blk-mq: ->timeout should be cleared in blk_mq_rq_ctx_init()
        blk-mq: don't allow queue entering for a dying queue
        blk-mq: bump max tag depth to 10K tags
        block: add blk_rq_set_block_pc()
        block: add notion of a chunk size for request merging
    • Linus Torvalds's avatar
      Merge tag 'for-linus-20140610' of git://git.infradead.org/linux-mtd · e413a19a
      Linus Torvalds authored
      Pull MTD updates from Brian Norris:
       - refactor m25p80.c driver for use as a general SPI NOR framework for
         other drivers which may speak to SPI NOR flash without providing full
         SPI support (i.e., not part of drivers/spi/)
       - new Freescale QuadSPI driver (utilizing new SPI NOR framework)
       - updates for the STMicro "FSM" SPI NOR driver
       - fix sync/flush behavior on mtd_blkdevs
       - fixup subpage write support on a few NAND drivers
       - correct the MTD OOB test for odd-sized OOB areas
       - add BCH-16 support for OMAP NAND
       - fix warnings and trivial refactoring
       - utilize new ECC DT bindings in pxa3xx NAND driver
       - new LPDDR NVM driver
       - address a few assorted bugs caught by Coverity
       - add new imx6sx support for GPMI NAND
       - use a bounce buffer for NAND when non-DMA-able buffers are used
      * tag 'for-linus-20140610' of git://git.infradead.org/linux-mtd: (77 commits)
        mtd: gpmi: add gpmi support for imx6sx
        mtd: maps: remove check for CONFIG_MTD_SUPERH_RESERVE
        mtd: bf5xx_nand: use the managed version of kzalloc
        mtd: pxa3xx_nand: make the driver work on big-endian systems
        mtd: nand: omap: fix omap_calculate_ecc_bch() for-loop error
        mtd: nand: r852: correct write_buf loop bounds
        mtd: nand_bbt: handle error case for nand_create_badblock_pattern()
        mtd: nand_bbt: remove unused variable
        mtd: maps: sc520cdp: fix warnings
        mtd: slram: fix unused variable warning
        mtd: pfow: remove unused variable
        mtd: lpddr: fix Kconfig dependency, for I/O accessors
        mtd: nand: pxa3xx: Add supported ECC strength and step size to the DT binding
        mtd: nand: pxa3xx: Use ECC strength and step size devicetree binding
        mtd: nand: pxa3xx: Clean pxa_ecc_init() error handling
        mtd: nand: Warn the user if the selected ECC strength is too weak
        mtd: nand: omap: Documentation: How to select correct ECC scheme for your device ?
        mtd: nand: omap: add support for BCH16_ECC - NAND driver updates
        mtd: nand: omap: add support for BCH16_ECC - ELM driver updates
        mtd: nand: omap: add support for BCH16_ECC - GPMC driver updates
    • Linus Torvalds's avatar
      Merge tag 'md/3.16' of git://neil.brown.name/md · 8d0304e6
      Linus Torvalds authored
      Pull md updates from Neil Brown:
       "Assorted md fixes for 3.16
        Mostly performance improvements with a few corner-case bug fixes"
      * tag 'md/3.16' of git://neil.brown.name/md:
        raid5: speedup sync_request processing
        md/raid5: deadlock between retry_aligned_read with barrier io
        raid5: add an option to avoid copy data from bio to stripe cache
        md/bitmap: remove confusing code from filemap_get_page.
        raid5: avoid release list until last reference of the stripe
        md: md_clear_badblocks should return an error code on failure.
        md/raid56: Don't perform reads to support writes until stripe is ready.
        md: refuse to change shape of array if it is active but read-only
    • Jan Kara's avatar
      reiserfs: Fix compilation breakage with CONFIG_REISERFS_CHECK · 19ef1229
      Jan Kara authored
      There was a bug in debug printout when CONFIG_REISERFS_CHECK was
      enabled so one of the assertions in do_balan.c didn't compile. Fix it.
      Fixes: 0080e9f9
      Signed-off-by: default avatarJan Kara <jack@suse.cz>
    • Brian Norris's avatar
      Merge MTD pullreq from 3.15-rc5 · f1900c79
      Brian Norris authored
    • Linus Torvalds's avatar
      Merge git://www.linux-watchdog.org/linux-watchdog · dfb94547
      Linus Torvalds authored
      Pull watchdog updates from Wim Van Sebroeck:
       "This contains:
         - addition of the Intel MID watchdog
         - removal of W83697HF and W83697UG drivers (code was merged into
           w83627hf_wdt driver)
         - addition of Armada 375/380 SoC support
         - conversion of imx2_wdt to regmap API and to watchdog core API
         - lots of other small improvements and fixes"
      [ Wim was also tagged by gmail as a spammer, but not delayed by days
        unlike Ben ]
      * git://www.linux-watchdog.org/linux-watchdog: (25 commits)
        x86: intel-mid: add watchdog platform code for Merrifield
        watchdog: add Intel MID watchdog driver support
        watchdog: sp805: Set watchdog_device->timeout from ->set_timeout()
        booke/watchdog: refine and clean up the codes
        watchdog: iop_wdt only builds for mach-iop13xx
        watchdog: Remove drivers for W83697HF and W83697UG
        watchdog: w83627hf_wdt: Add early_disable module parameter
        ARM: mvebu: Add A375/A380 watchdog binding documentation
        watchdog: orion: Add Armada 375/380 SoC support
        watchdog: orion: Introduce per-SoC enabled() function
        watchdog: orion: Introduce per-SoC stop() function
        watchdog: orion: Remove unneeded atomic access
        watchdog: orion: Introduce a SoC-specific RSTOUT mapping
        watchdog: orion: Move the register ioremap'ing to its own function
        watchdog: xilinx: Make of_device_id array const
        watchdog: imx2_wdt: convert to watchdog core api
        watchdog: imx2_wdt: convert to use regmap API.
        watchdog: imx2_wdt: Sort the header files alphabetically
        watchdog: ath79_wdt: switch to clk_prepare/clk_disable
        watchdog: ath79_wdt: avoid spurious restarts on AR934x
    • Linus Torvalds's avatar
      Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc · c5aec4c7
      Linus Torvalds authored
      Pull powerpc updates from Ben Herrenschmidt:
       "Here is the bulk of the powerpc changes for this merge window.  It got
        a bit delayed in part because I wasn't paying attention, and in part
        because I discovered I had a core PCI change without a PCI maintainer
        ack in it.  Bjorn eventually agreed it was ok to merge it though we'll
        probably improve it later and I didn't want to rebase to add his ack.
        There is going to be a bit more next week, essentially fixes that I
        still want to sort through and test.
        The biggest item this time is the support to build the ppc64 LE kernel
        with our new v2 ABI.  We previously supported v2 userspace but the
        kernel itself was a tougher nut to crack.  This is now sorted mostly
        thanks to Anton and Rusty.
        We also have a fairly big series from Cedric that add support for
        64-bit LE zImage boot wrapper.  This was made harder by the fact that
        traditionally our zImage wrapper was always 32-bit, but our new LE
        toolchains don't really support 32-bit anymore (it's somewhat there
        but not really "supported") so we didn't want to rely on it.  This
        meant more churn that just endian fixes.
        This brings some more LE bits as well, such as the ability to run in
        LE mode without a hypervisor (ie. under OPAL firmware) by doing the
        right OPAL call to reinitialize the CPU to take HV interrupts in the
        right mode and the usual pile of endian fixes.
        There's another series from Gavin adding EEH improvements (one day we
        *will* have a release with less than 20 EEH patches, I promise!).
        Another highlight is the support for the "Split core" functionality on
        P8 by Michael.  This allows a P8 core to be split into "sub cores" of
        4 threads which allows the subcores to run different guests under KVM
        (the HW still doesn't support a partition per thread).
        And then the usual misc bits and fixes ..."
      [ Further delayed by gmail deciding that BenH is a dirty spammer.
        Google knows.  ]
      * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc: (155 commits)
        powerpc/powernv: Add missing include to LPC code
        selftests/powerpc: Test the THP bug we fixed in the previous commit
        powerpc/mm: Check paca psize is up to date for huge mappings
        powerpc/powernv: Pass buffer size to OPAL validate flash call
        powerpc/pseries: hcall functions are exported to modules, need _GLOBAL_TOC()
        powerpc: Exported functions __clear_user and copy_page use r2 so need _GLOBAL_TOC()
        powerpc/powernv: Set memory_block_size_bytes to 256MB
        powerpc: Allow ppc_md platform hook to override memory_block_size_bytes
        powerpc/powernv: Fix endian issues in memory error handling code
        powerpc/eeh: Skip eeh sysfs when eeh is disabled
        powerpc: 64bit sendfile is capped at 2GB
        powerpc/powernv: Provide debugfs access to the LPC bus via OPAL
        powerpc/serial: Use saner flags when creating legacy ports
        powerpc: Add cpu family documentation
        powerpc/xmon: Fix up xmon format strings
        powerpc/powernv: Add calls to support little endian host
        powerpc: Document sysfs DSCR interface
        powerpc: Fix regression of per-CPU DSCR setting
        powerpc: Split __SYSFS_SPRSETUP macro
        arch: powerpc/fadump: Cleaning up inconsistent NULL checks
  5. 10 Jun, 2014 19 commits