1. 28 Mar, 2012 40 commits
    • Linus Torvalds's avatar
      Merge tag 'dm-3.4-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-dm · 89e5d6f0
      Linus Torvalds authored
      Pull device-mapper changes for 3.4 from Alasdair Kergon:
      
       - Update thin provisioning to support read-only external snapshot
         origins and discards.
       - A new target, dm verity, for device content validation.
       - Mark dm uevent and dm raid as no-longer-experimental.
       - Miscellaneous other fixes and clean-ups.
      
      * tag 'dm-3.4-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-dm: (27 commits)
        dm: add verity target
        dm bufio: prefetch
        dm thin: add pool target flags to control discard
        dm thin: support discards
        dm thin: prepare to support discard
        dm thin: use dm_target_offset
        dm thin: support read only external snapshot origins
        dm thin: relax hard limit on the maximum size of a metadata device
        dm persistent data: remove space map ref_count entries if redundant
        dm thin: commit outstanding data every second
        dm: reject trailing characters in sccanf input
        dm raid: handle failed devices during start up
        dm thin metadata: pass correct space map to dm_sm_root_size
        dm persistent data: remove redundant value_size arg from value_ptr
        dm mpath: detect invalid map_context
        dm: clear bi_end_io on remapping failure
        dm table: simplify call to free_devices
        dm thin: correct comments
        dm raid: no longer experimental
        dm uevent: no longer experimental
        ...
      89e5d6f0
    • Linus Torvalds's avatar
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · 516e7797
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "gma500 build fix + some regression fixes for nouveau/radeon"
      
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
        drm/radeon: Only warn if the intra-domain offset actually exceeds the limit.
        drm/radeon/kms: add htile support to the cs checker v3
        drm/radeon/kms/atom: force bpc to 8 for now
        drm/nouveau/i2c: fix thinko/regression on really old chipsets
        drm/nouveau: default to 8bpc for non-LVDS panels if EDID isn't useful
        drm/nouveau: fix thinko causing init to fail on cards without accel
        gma500: medfield: fix build without CONFIG_BACKLIGHT_CLASS_DEVICE
      516e7797
    • Linus Torvalds's avatar
      Merge tag 'common-clk-api' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 735e941c
      Linus Torvalds authored
      Pull "drivers/clk: common clock framework" from Olof Johansson:
       "This branch contains patches from Mike Turquette adding a common clock
        framework to be shared across platforms.  This is part of the work
        towards building a common zImage for several ARM platforms."
      
      * tag 'common-clk-api' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
        clk: make CONFIG_COMMON_CLK invisible
        clk: basic clock hardware types
        clk: introduce the common clock framework
        Documentation: common clk API
      735e941c
    • Linus Torvalds's avatar
      Merge tag 'dt2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 09893ee8
      Linus Torvalds authored
      Pull "ARM: More device tree support updates" from Olof Johansson:
       "This branch contains a number of updates for device tree support on
        several ARM platforms, in particular:
      
         * AT91 continues the device tree conversion adding support for a
           number of on-chip drivers and other functionality
         * ux500 adds probing of some of the core SoC blocks through device
           tree
         * Initial device tree support for ST SPEAr600 platforms
         * kirkwood continues the conversion to device-tree probing"
      
      Manually merge arch/arm/mach-ux500/Kconfig due to MACH_U8500 rename, and
      drivers/usb/gadget/at91_udc.c due to header file include cleanups.
      
      Also do an "evil merge" for the MACH_U8500 config option rename that the
      affected RMI4 touchscreen driver in staging.  It's called MACH_MOP500
      now, and it was missed during previous merges.
      
      * tag 'dt2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (48 commits)
        ARM: SPEAr600: Add device-tree support to SPEAr600 boards
        ARM: ux500: Provide local timer support for Device Tree
        ARM: ux500: Enable PL022 SSP Controller in Device Tree
        ARM: ux500: Enable PL310 Level 2 Cache Controller in Device Tree
        ARM: ux500: Enable PL011 AMBA UART Controller for Device Tree
        ARM: ux500: Enable Cortex-A9 GIC (Generic Interrupt Controller) in Device Tree
        ARM: ux500: db8500: list most devices in the snowball device tree
        ARM: ux500: split dts file for snowball into generic part
        ARM: ux500: combine the board init functions for DT boot
        ARM: ux500: Initial Device Tree support for Snowball
        ARM: ux500: CONFIG: Enable Device Tree support for future endeavours
        ARM: kirkwood: use devicetree for rtc-mv
        ARM: kirkwood: rtc-mv devicetree bindings
        ARM: kirkwood: fdt: define uart[01] as disabled, enable uart0
        ARM: kirkwood: fdt: facilitate new boards during fdt migration
        ARM: kirkwood: fdt: absorb kirkwood_init()
        ARM: kirkwood: fdt: use mrvl ticker symbol
        ARM: orion: wdt: use resource vice direct access
        ARM: Kirkwood: Remove tclk from kirkwood_asoc_platform_data.
        ARM: orion: spi: remove enable_clock_fix which is not used
        ...
      09893ee8
    • Linus Torvalds's avatar
      Merge tag 'soc2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 4bb2d100
      Linus Torvalds authored
      Pull "ARM: More SoC support updates" from Olof Johansson:
       "This branch contains a handful of updates of SoC base code that had
        dependencies on other external trees that have now been merged:
      
         * Support for the new EXYNOS5250 SoC from Samsung
         * SMP and power domain support for Tegra3 from NVIDIA
         * ux500 updates for exporting SoC information through sysfs"
      
      Fix up trivial merge conflicts as per Olof.
      
      * tag 'soc2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (30 commits)
        ARM: mach-shmobile: ap4evb: Reserve DMA memory for the frame buffer
        ARM: EXYNOS: Fix compilation error with mach-exynos4-dt board
        ARM: dts: add initial dts file for EXYNOS5250, SMDK5250
        ARM: EXYNOS: add support device tree enabled board file for EXYNOS5
        ARM: EXYNOS: add support ARCH_EXYNOS5 for EXYNOS5 SoCs
        ARM: EXYNOS: add support get_core_count() for EXYNOS5250
        ARM: EXYNOS: support EINT for EXYNOS4 and EXYNOS5
        ARM: EXYNOS: add interrupt definitions for EXYNOS5250
        ARM: EXYNOS: add support for EXYNOS5250 SoC
        ARM: EXYNOS: add support uart for EXYNOS4 and EXYNOS5
        ARM: EXYNOS: add initial setup-i2c0 for EXYNOS5
        ARM: EXYNOS: add clock part for EXYNOS5250 SoC
        ARM: EXYNOS: use exynos_init_uarts() instead of exynos4_init_uarts()
        ARM: EXYNOS: to declare static for mach-exynos/common.c
        ARM: EXYNOS: Add clkdev lookup entry for lcd clock
        ARM: dt: Explicitly configure all serial ports on Tegra Cardhu
        ARM: tegra: support for secondary cores on Tegra30
        ARM: tegra: support for Tegra30 CPU powerdomains
        ARM: tegra: add support for Tegra30 powerdomains
        ARM: tegra: export tegra_powergate_is_powered()
        ...
      4bb2d100
    • Linus Torvalds's avatar
      Merge tag 'drivers2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · ff877c49
      Linus Torvalds authored
      Pull "ARM: More SoC driver updates" from Olof Johansson:
       "This branch contains a handful of driver updates, mostly to the
        LPC32xx platform but also for Samsung EXYNOS and Davinci.
      
        It had a few context conflicts against patches already merged through
        fixes-non-critical.  We should have resolved this early during the
        development cycle by pulling them in as a dependency, instead I did it
        after the fact this time."
      
      * tag 'drivers2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
        gpio/samsung: use ioremap() for EXYNOS4 GPIOlib
        gpio/samsung: add support GPIOlib for EXYNOS5250
        ARM: EXYNOS: add support GPIO for EXYNOS5250
        ARM: LPC32xx: Ethernet support
        ARM: LPC32xx: USB Support
        ARM: davinci: dm644x evm: add support for VPBE display
        ARM: davinci: dm644x: add support for v4l2 video display
        ARM: EXYNOS: Hook up JPEG PD to generic PD infrastructure
        ARM: EXYNOS: Hook up G2D PD to generic PD infrastructure
        arm: lpc32xx: phy3250: add rtc & touch device
        ARM: LPC32xx: clock.c: Clock registration fixes
        ARM: LPC32xx: clock.c: jiffies wrapping
        ARM: LPC32xx: clock.c: Missing header file
        ARM: LPC32XX: Remove broken non-static declaration
        ARM: LPC32xx: clock.c: Fix mutex lock issues
        ARM: LPC32xx: clock.c: warning fix
        ARM: LPC32xx: Added lpc32xx_defconfig
      ff877c49
    • Mikulas Patocka's avatar
      dm: add verity target · a4ffc152
      Mikulas Patocka authored
      This device-mapper target creates a read-only device that transparently
      validates the data on one underlying device against a pre-generated tree
      of cryptographic checksums stored on a second device.
      
      Two checksum device formats are supported: version 0 which is already
      shipping in Chromium OS and version 1 which incorporates some
      improvements.
      Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
      Signed-off-by: default avatarMandeep Singh Baines <msb@chromium.org>
      Signed-off-by: default avatarWill Drewry <wad@chromium.org>
      Signed-off-by: default avatarElly Jones <ellyjones@chromium.org>
      Cc: Milan Broz <mbroz@redhat.com>
      Cc: Olof Johansson <olofj@chromium.org>
      Cc: Steffen Klassert <steffen.klassert@secunet.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      a4ffc152
    • Mikulas Patocka's avatar
      dm bufio: prefetch · a66cc28f
      Mikulas Patocka authored
      This patch introduces a new function dm_bufio_prefetch. It prefetches
      the specified range of blocks into dm-bufio cache without waiting
      for i/o completion.
      Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      a66cc28f
    • Joe Thornber's avatar
      dm thin: add pool target flags to control discard · 67e2e2b2
      Joe Thornber authored
      Add dm thin target arguments to control discard support.
      
      ignore_discard: Disables discard support
      
      no_discard_passdown: Don't pass discards down to the underlying data
      device, but just remove the mapping within the thin provisioning target.
      Signed-off-by: default avatarJoe Thornber <ejt@redhat.com>
      Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      67e2e2b2
    • Joe Thornber's avatar
      dm thin: support discards · 104655fd
      Joe Thornber authored
      Support discards in the thin target.
      
      On discard the corresponding mapping(s) are removed from the thin
      device.  If the associated block(s) are no longer shared the discard
      is passed to the underlying device.
      
      All bios other than discards now have an associated deferred_entry
      that is saved to the 'all_io_entry' in endio_hook.  When non-discard
      IO completes and associated mappings are quiesced any discards that
      were deferred, via ds_add_work() in process_discard(), will be queued
      for processing by the worker thread.
      Signed-off-by: default avatarJoe Thornber <ejt@redhat.com>
      Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      
      drivers/md/dm-thin.c |  173 ++++++++++++++++++++++++++++++++++++++++++++++----
       drivers/md/dm-thin.c |  172 ++++++++++++++++++++++++++++++++++++++++++++++-----
       1 file changed, 158 insertions(+), 14 deletions(-)
      104655fd
    • Joe Thornber's avatar
      dm thin: prepare to support discard · eb2aa48d
      Joe Thornber authored
      This patch contains the ground work needed for dm-thin to support discard.
      
        - Adds endio function that replaces shared_read_endio.
      
        - Introduce an explicit 'quiesced' flag into the new_mapping structure.
          Before, this was implicitly indicated by m->list being empty.
      
        - The map_info->ptr remains constant for the duration of a bio's trip
          through the thin target.  Make it easier to reason about it.
      Signed-off-by: default avatarJoe Thornber <ejt@redhat.com>
      Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      eb2aa48d
    • Alasdair G Kergon's avatar
      dm thin: use dm_target_offset · 6efd6e83
      Alasdair G Kergon authored
      Use dm_target_offset wrapper instead of referencing the awkward ti->begin
      explicitly.
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      6efd6e83
    • Joe Thornber's avatar
      dm thin: support read only external snapshot origins · 2dd9c257
      Joe Thornber authored
      Support the use of an external _read only_ device as an origin for a thin
      device.
      
      Any read to an unprovisioned area of the thin device will be passed
      through to the origin.  Writes trigger allocation of new blocks as
      usual.
      
      One possible use case for this would be VM hosts that want to run
      guests on thinly-provisioned volumes but have the base image on another
      device (possibly shared between many VMs).
      Signed-off-by: default avatarJoe Thornber <ejt@redhat.com>
      Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      2dd9c257
    • Mike Snitzer's avatar
      dm thin: relax hard limit on the maximum size of a metadata device · c4a69ecd
      Mike Snitzer authored
      The thin metadata format can only make use of a device that is <=
      THIN_METADATA_MAX_SECTORS (currently 15.9375 GB).  Therefore, there is no
      practical benefit to using a larger device.
      
      However, it may be that other factors impose a certain granularity for
      the space that is allocated to a device (E.g. lvm2 can impose a coarse
      granularity through the use of large, >= 1 GB, physical extents).
      
      Rather than reject a larger metadata device, during thin-pool device
      construction, switch to allowing it but issue a warning if a device
      larger than THIN_METADATA_MAX_SECTORS_WARNING (16 GB) is
      provided.  Any space over 15.9375 GB will not be used.
      Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      c4a69ecd
    • Joe Thornber's avatar
      dm persistent data: remove space map ref_count entries if redundant · 71fd5ae2
      Joe Thornber authored
      Save space by removing entries from the space map ref_count tree if
      they're no longer needed.
      
      Ref counts are stored in two places: a bitmap if the ref_count is
      below 3, or a btree of uint32_t if 3 or above.
      
      When a ref_count that was above 3 drops below we can remove it from
      the tree and save some metadata space.  This removal was commented out
      before because I was unsure why this was causing under-populated btree
      nodes.  Earlier patches have fixed this issue.
      Signed-off-by: default avatarJoe Thornber <ejt@redhat.com>
      Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      71fd5ae2
    • Joe Thornber's avatar
      dm thin: commit outstanding data every second · 905e51b3
      Joe Thornber authored
      Commit unwritten data every second to prevent too much building up.
      
      Released blocks don't become available until after the next commit
      (for crash resilience).  Prior to this patch commits were only
      triggered by a message to the target or a REQ_{FLUSH,FUA} bio.  This
      allowed far too big a position to build up.
      
      The interval is hard-coded to 1 second.  This is a sensible setting.
      I'm not making this user configurable, since there isn't much to be
      gained by tweaking this - and a lot lost by setting it far too high.
      Signed-off-by: default avatarJoe Thornber <ejt@redhat.com>
      Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      905e51b3
    • Mikulas Patocka's avatar
      dm: reject trailing characters in sccanf input · 31998ef1
      Mikulas Patocka authored
      Device mapper uses sscanf to convert arguments to numbers. The problem is that
      the way we use it ignores additional unmatched characters in the scanned string.
      
      For example, this `if (sscanf(string, "%d", &number) == 1)' will match a number,
      but also it will match number with some garbage appended, like "123abc".
      
      As a result, device mapper accepts garbage after some numbers. For example
      the command `dmsetup create vg1-new --table "0 16384 linear 254:1bla 34816bla"'
      will pass without an error.
      
      This patch fixes all sscanf uses in device mapper. It appends "%c" with
      a pointer to a dummy character variable to every sscanf statement.
      
      The construct `if (sscanf(string, "%d%c", &number, &dummy) == 1)' succeeds
      only if string is a null-terminated number (optionally preceded by some
      whitespace characters). If there is some character appended after the number,
      sscanf matches "%c", writes the character to the dummy variable and returns 2.
      We check the return value for 1 and consequently reject numbers with some
      garbage appended.
      Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
      Acked-by: default avatarMike Snitzer <snitzer@redhat.com>
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      31998ef1
    • Jonathan E Brassow's avatar
      dm raid: handle failed devices during start up · 0447568f
      Jonathan E Brassow authored
      The dm-raid code currently fails to create a RAID array if any of the
      superblocks cannot be read.  This was an oversight as there is already
      code to handle this case if the values ('- -') were provided for the
      failed array position.
      
      With this patch, if a superblock cannot be read, the array position's
      fields are initialized as though '- -' was set in the table.  That is,
      the device is failed and the position should not be used, but if there
      is sufficient redundancy, the array should still be activated.
      Signed-off-by: default avatarJonathan Brassow <jbrassow@redhat.com>
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      0447568f
    • Joe Thornber's avatar
      dm thin metadata: pass correct space map to dm_sm_root_size · fef838cc
      Joe Thornber authored
      Fix a harmless typo.
      
      The root is a chunk of data that gets written to the superblock.  This
      data is used to recreate the space map when opening a metadata area.
      We have two space maps; one tracking space on the metadata device and
      one of the data device.  Both of these use the same format for their
      root, so this typo was harmless.
      Signed-off-by: default avatarJoe Thornber <ejt@redhat.com>
      Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      fef838cc
    • Joe Thornber's avatar
      dm persistent data: remove redundant value_size arg from value_ptr · a3aefb39
      Joe Thornber authored
      Now that the value_size is held within every node of the btrees we can
      remove this argument from value_ptr().
      
      For the last few months a BUG_ON has been checking this argument is
      the same as that held in the node.  No issues were reported.  So this
      is a safe change.
      Signed-off-by: default avatarJoe Thornber <ejt@redhat.com>
      Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      a3aefb39
    • Jun'ichi Nomura's avatar
      dm mpath: detect invalid map_context · 466891f9
      Jun'ichi Nomura authored
      The map_context pointer should always be set. However, we have reports
      that upon requeuing it is not set correctly.  So add set and clear
      functions with a BUG_ON() to track the issue properly.
      Signed-off-by: default avatarJun'ichi Nomura <j-nomura@ce.jp.nec.com>
      Cc: Mike Snitzer <snitzer@redhat.com>
      Acked-by: default avatarHannes Reinecke <hare@suse.de>
      Tested-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Acked-by: default avatarDave Wysochanski <dwysocha@redhat.com>
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      466891f9
    • Hannes Reinecke's avatar
      dm: clear bi_end_io on remapping failure · 4d7b38b7
      Hannes Reinecke authored
      As a precaution, set bi_end_io to NULL when failing to remap.
      Signed-off-by: default avatarHannes Reinecke <hare@suse.de>
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      4d7b38b7
    • Hannes Reinecke's avatar
      dm table: simplify call to free_devices · 574ce07e
      Hannes Reinecke authored
      free_devices in dm_table.c already uses list_for_each(), so we don't
      need to check if the list is empty.
      Signed-off-by: default avatarHannes Reinecke <hare@suse.de>
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      574ce07e
    • Joe Thornber's avatar
      dm thin: correct comments · fe878f34
      Joe Thornber authored
      Remove documentation for unimplemented 'trim' message.
      
      I'd planned a 'trim' target message for shrinking thin devices, but
      this is better handled via the discard ioctl.
      Signed-off-by: default avatarJoe Thornber <ejt@redhat.com>
      Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      fe878f34
    • Alasdair G Kergon's avatar
      dm raid: no longer experimental · 035220b3
      Alasdair G Kergon authored
      The dm raid module (using md) is becoming the preferred way of creating long-lived
      mirrors through userspace LVM so remove the EXPERIMENTAL tag.
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      035220b3
    • Alasdair G Kergon's avatar
      dm uevent: no longer experimental · e0b215da
      Alasdair G Kergon authored
      Drop EXPERIMENTAL tag from dm-uevent.
      
      It's not changed for a while and some userspace tools are relying upon it.
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      e0b215da
    • Alasdair G Kergon's avatar
      dm: add persistent data to MAINTAINERS · 854ecaad
      Alasdair G Kergon authored
      Update device-mapper MAINTAINERS entry to mention quilt working tree location
      and persistent-data subdirectory.
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      854ecaad
    • Milan Broz's avatar
      dm: document sysfs entries · 1d330ec6
      Milan Broz authored
      Describe attributes provided by device-mapper in /sys/block.
      Signed-off-by: default avatarMilan Broz <mbroz@redhat.com>
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      1d330ec6
    • Joe Thornber's avatar
      dm persistent data: fix btree rebalancing after remove · b0988900
      Joe Thornber authored
      When we remove an entry from a node we sometimes rebalance with it's
      two neighbours.  This wasn't being done correctly; in some cases
      entries have to move all the way from the right neighbour to the left
      neighbour, or vice versa.  This patch pretty much re-writes the
      balancing code to fix it.
      
      This code is barely used currently; only when you delete a thin
      device, and then only if you have hundreds of them in the same pool.
      Once we have discard support, which removes mappings, this will be used
      much more heavily.
      Signed-off-by: default avatarJoe Thornber <ejt@redhat.com>
      Cc: stable@kernel.org
      Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      b0988900
    • Joe Thornber's avatar
      dm thin: fix stacked bi_next usage · 6f94a4c4
      Joe Thornber authored
      Avoid using the bi_next field for the holder of a cell when deferring
      bios because a stacked device below might change it.  Store the
      holder in a new field in struct cell instead.
      
      When a cell is created, the bio that triggered creation (the holder) was
      added to the same bio list as subsequent bios.  In some cases we pass
      this holder bio directly to devices underneath.  If those devices use
      the bi_next field there will be trouble...
      
      This also simplifies some code that had to work out which bio was the
      holder.
      Signed-off-by: default avatarJoe Thornber <ejt@redhat.com>
      Cc: stable@kernel.org
      Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      6f94a4c4
    • Mikulas Patocka's avatar
      dm crypt: add missing error handling · 72c6e7af
      Mikulas Patocka authored
      Always set io->error to -EIO when an error is detected in dm-crypt.
      
      There were cases where an error code would be set only if we finish
      processing the last sector. If there were other encryption operations in
      flight, the error would be ignored and bio would be returned with
      success as if no error happened.
      
      This bug is present in kcryptd_crypt_write_convert, kcryptd_crypt_read_convert
      and kcryptd_async_done.
      Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
      Cc: stable@kernel.org
      Reviewed-by: default avatarMilan Broz <mbroz@redhat.com>
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      72c6e7af
    • Mikulas Patocka's avatar
      dm crypt: fix mempool deadlock · aeb2deae
      Mikulas Patocka authored
      This patch fixes a possible deadlock in dm-crypt's mempool use.
      
      Currently, dm-crypt reserves a mempool of MIN_BIO_PAGES reserved pages.
      It allocates first MIN_BIO_PAGES with non-failing allocation (the allocation
      cannot fail and waits until the mempool is refilled). Further pages are
      allocated with different gfp flags that allow failing.
      
      Because allocations may be done in parallel, this code can deadlock. Example:
      There are two processes, each tries to allocate MIN_BIO_PAGES and the processes
      run simultaneously.
      It may end up in a situation where each process allocates (MIN_BIO_PAGES / 2)
      pages. The mempool is exhausted. Each process waits for more pages to be freed
      to the mempool, which never happens.
      
      To avoid this deadlock scenario, this patch changes the code so that only
      the first page is allocated with non-failing gfp mask. Allocation of further
      pages may fail.
      Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
      Cc: stable@kernel.org
      Signed-off-by: default avatarMilan Broz <mbroz@redhat.com>
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      aeb2deae
    • Andrei Warkentin's avatar
      dm exception store: fix init error path · aadbe266
      Andrei Warkentin authored
      Call the correct exit function on failure in dm_exception_store_init.
      Signed-off-by: default avatarAndrei Warkentin <andrey.warkentin@gmail.com>
      Acked-by: default avatarMike Snitzer <snitzer@redhat.com>
      Cc: stable@kernel.org
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      aadbe266
    • Linus Torvalds's avatar
      Merge tag 'writeback-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux · 529b73fc
      Linus Torvalds authored
      Pull trivial writeback fixes from Wu Fengguang:
       "They've been tested in linux-next for 20 days actually."
      
      * tag 'writeback-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux:
        writeback: Remove outdated comment
        fs: Remove bogus wait in write_inode_now()
      529b73fc
    • Linus Torvalds's avatar
      Merge tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 · 69e1aadd
      Linus Torvalds authored
      Pull ext4 updates for 3.4 from Ted Ts'o:
       "Ext4 commits for 3.3 merge window; mostly cleanups and bug fixes
      
        The changes to export dirty_writeback_interval are from Artem's s_dirt
        cleanup patch series.  The same is true of the change to remove the
        s_dirt helper functions which never got used by anyone in-tree.  I've
        run these changes by Al Viro, and am carrying them so that Artem can
        more easily fix up the rest of the file systems during the next merge
        window.  (Originally we had hopped to remove the use of s_dirt from
        ext4 during this merge window, but his patches had some bugs, so I
        ultimately ended dropping them from the ext4 tree.)"
      
      * tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (66 commits)
        vfs: remove unused superblock helpers
        mm: export dirty_writeback_interval
        ext4: remove useless s_dirt assignment
        ext4: write superblock only once on unmount
        ext4: do not mark superblock as dirty unnecessarily
        ext4: correct ext4_punch_hole return codes
        ext4: remove restrictive checks for EOFBLOCKS_FL
        ext4: always set then trimmed blocks count into len
        ext4: fix trimmed block count accunting
        ext4: fix start and len arguments handling in ext4_trim_fs()
        ext4: update s_free_{inodes,blocks}_count during online resize
        ext4: change some printk() calls to use ext4_msg() instead
        ext4: avoid output message interleaving in ext4_error_<foo>()
        ext4: remove trailing newlines from ext4_msg() and ext4_error() messages
        ext4: add no_printk argument validation, fix fallout
        ext4: remove redundant "EXT4-fs: " from uses of ext4_msg
        ext4: give more helpful error message in ext4_ext_rm_leaf()
        ext4: remove unused code from ext4_ext_map_blocks()
        ext4: rewrite punch hole to use ext4_ext_remove_space()
        jbd2: cleanup journal tail after transaction commit
        ...
      69e1aadd
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client · 56b59b42
      Linus Torvalds authored
      Pull Ceph updates for 3.4-rc1 from Sage Weil:
       "Alex has been busy.  There are a range of rbd and libceph cleanups,
        especially surrounding device setup and teardown, and a few critical
        fixes in that code.  There are more cleanups in the messenger code,
        virtual xattrs, a fix for CRC calculation/checks, and lots of other
        miscellaneous stuff.
      
        There's a patch from Amon Ott to make inos behave a bit better on
        32-bit boxes, some decode check fixes from Xi Wang, and network
        throttling fix from Jim Schutt, and a couple RBD fixes from Josh
        Durgin.
      
        No new functionality, just a lot of cleanup and bug fixing."
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client: (65 commits)
        rbd: move snap_rwsem to the device, rename to header_rwsem
        ceph: fix three bugs, two in ceph_vxattrcb_file_layout()
        libceph: isolate kmap() call in write_partial_msg_pages()
        libceph: rename "page_shift" variable to something sensible
        libceph: get rid of zero_page_address
        libceph: only call kernel_sendpage() via helper
        libceph: use kernel_sendpage() for sending zeroes
        libceph: fix inverted crc option logic
        libceph: some simple changes
        libceph: small refactor in write_partial_kvec()
        libceph: do crc calculations outside loop
        libceph: separate CRC calculation from byte swapping
        libceph: use "do" in CRC-related Boolean variables
        ceph: ensure Boolean options support both senses
        libceph: a few small changes
        libceph: make ceph_tcp_connect() return int
        libceph: encapsulate some messenger cleanup code
        libceph: make ceph_msgr_wq private
        libceph: encapsulate connection kvec operations
        libceph: move prepare_write_banner()
        ...
      56b59b42
    • Linus Torvalds's avatar
      Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs · 9a7259d5
      Linus Torvalds authored
      Pull ext3, UDF, and quota fixes from Jan Kara:
       "A couple of ext3 & UDF fixes and also one improvement in quota
        locking."
      
      * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:
        ext3: fix start and len arguments handling in ext3_trim_fs()
        udf: Fix deadlock in udf_release_file()
        udf: Fix file entry logicalBlocksRecorded
        udf: Fix handling of i_blocks
        quota: Make quota code not call tty layer with dqptr_sem held
        udf: Init/maintain file entry checkpoint field
        ext3: Update ctime in ext3_splice_branch() only when needed
        ext3: Don't call dquot_free_block() if we don't update anything
        udf: Remove unnecessary OOM messages
      9a7259d5
    • Linus Torvalds's avatar
      Merge tag 'for-linus-3.4-merge-window' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs · e9c0f152
      Linus Torvalds authored
      Pull 9p changes for the 3.4 merge window from Eric Van Hensbergen.
      
      * tag 'for-linus-3.4-merge-window' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs:
        9p: statfs should not override server f_type
        net/9p: handle flushed Tclunk/Tremove
        net/9p: don't allow Tflush to be interrupted
      e9c0f152
    • Michel Lespinasse's avatar
      vfs: fix d_ancestor() case in d_materialize_unique · b18dafc8
      Michel Lespinasse authored
      In d_materialise_unique() there are 3 subcases to the 'aliased dentry'
      case; in two subcases the inode i_lock is properly released but this
      does not occur in the -ELOOP subcase.
      
      This seems to have been introduced by commit 18367501 ("fix loop
      checks in d_materialise_unique()").
      Signed-off-by: default avatarMichel Lespinasse <walken@google.com>
      Cc: stable@vger.kernel.org # v3.0+
      [ Added a comment, and moved the unlock to where we generate the -ELOOP,
        which seems to be more natural.
      
        You probably can't actually trigger this without a buggy network file
        server - d_materialize_unique() is for finding aliases on non-local
        filesystems, and the d_ancestor() case is for a hardlinked directory
        loop.
      
        But we should be robust in the case of such buggy servers anyway. ]
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      b18dafc8
    • Michel Dänzer's avatar