1. 28 Mar, 2012 40 commits
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security · 683c5e85
      Linus Torvalds authored
      Pull an Apparmor bugfix from James Morris.
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security:
        apparmor: Fix change_onexec when called from a confined task
      683c5e85
    • Linus Torvalds's avatar
      Merge branch 'linux_next' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-edac · f0f3680e
      Linus Torvalds authored
      Pull EDAC fixes from Mauro Carvalho Chehab:
       "A series of EDAC driver fixes.  It also has one core fix at the
        documentation, and a rename patch, fixing the name of the struct that
        contains the rank information."
      
      * 'linux_next' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-edac:
        edac: rename channel_info to rank_info
        i5400_edac: Avoid calling pci_put_device() twice
        edac: i5100 ack error detection register after each read
        edac: i5100 fix erroneous define for M1Err
        edac: sb_edac: Fix a wrong value setting for the previous value
        edac: sb_edac: Fix a INTERLEAVE_MODE() misuse
        edac: sb_edac: Let the driver depend on PCI_MMCONFIG
        edac: Improve the comments to better describe the memory concepts
        edac/ppc4xx_edac: Fix compilation
        Fix sb_edac compilation with 32 bits kernels
      f0f3680e
    • Linus Torvalds's avatar
      Merge branch 'for_linus' of git://cavan.codon.org.uk/platform-drivers-x86 · 61e5191c
      Linus Torvalds authored
      Pull x86 platform driver updates from Matthew Garrett:
       "Some significant updates to samsung-laptop, additional hardware
        support for Toshibas, misc updates to various hardware and a new
        backlight driver for some Apple machines."
      
      Fix up trivial conflicts: geode Geos update happening next to net5501
      support, and MSIC thermal platform support added twice.
      
      * 'for_linus' of git://cavan.codon.org.uk/platform-drivers-x86: (77 commits)
        acer-wmi: add quirk table for video backlight vendor mode
        drivers/platform/x86/amilo-rfkill.c::amilo_rfkill_probe() avoid NULL deref
        samsung-laptop: unregister ACPI video module for some well known laptops
        acer-wmi: No wifi rfkill on Sony machines
        thinkpad-acpi: recognize Lenovo as version string in newer V-series BIOS
        asus-wmi: don't update power and brightness when using scalar
        eeepc-wmi: split et2012 specific hacks
        eeepc-wmi: refine quirks handling
        asus-nb-wmi: set panel_power correctly
        asus-wmi: move WAPF variable into quirks_entry
        asus-wmi: store backlight power status for AIO machine
        asus-wmi: add scalar board brightness adj. support
        samsung-laptop: cleanup return type: mode_t vs umode_t
        drivers, samsung-laptop: fix usage of isalnum
        drivers, samsung-laptop: fix initialization of sabi_data in sabi_set_commandb
        asus-wmi: on/off bit is not set when reading the value
        eeepc-wmi: add extra keymaps for EP121
        asus-nb-wmi: ignore useless keys
        acer-wmi: support Lenovo ideapad S205 Brazos wifi switch
        acer-wmi: fix out of input parameter size when set
        ...
      61e5191c
    • Linus Torvalds's avatar
      Merge branch 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging · d2a2fc18
      Linus Torvalds authored
      Pull i2c updates from Jean Delvare.
      
      Fix up trivial conflict in drivers/i2c/busses/i2c-gpio.c due to include
      file cleanup clashing with DT support addition (which did the same
      cleanup)
      
      * 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging:
        i2c-algo-bit: Don't resched on clock stretching
        i2c: Update the FSF address
        i2c: Convert drivers/i2c/muxes/* to use module_i2c_driver()
        i2c-i801: Use usleep_range to wait for command completion
        i2c-i801: Add device IDs for Intel Lynx Point
        i2c-isch: Decrease delay in command completion check loop
        i2c-gpio: Use linux/gpio.h rather than asm/gpio.h
      d2a2fc18
    • Linus Torvalds's avatar
      Merge tag 'gpio-for-linus' of git://git.secretlab.ca/git/linux-2.6 · 7bf97e1d
      Linus Torvalds authored
      Pull GPIO changes for v3.4 from Grant Likely:
       "Primarily gpio device driver changes with some minor side effects
        under arch/arm and arch/x86.  Also includes a few core changes such as
        explicitly supporting (electrical) open source and open drain outputs
        and some help for parsing gpio devicetree properties."
      
      Fix up context conflict due to Laxman Dewangan adding sleep control for
      the tps65910 driver separately for gpio's and regulators.
      
      * tag 'gpio-for-linus' of git://git.secretlab.ca/git/linux-2.6: (34 commits)
        gpio/ep93xx: Remove unused inline function and useless pr_err message
        gpio/sodaville: Mark broken due to core irqdomain migration
        gpio/omap: fix redundant decoding of gpio offset
        gpio/omap: fix incorrect update to context.irqenable1
        gpio/omap: fix incorrect context restore logic in omap_gpio_runtime_*
        gpio/omap: fix missing dataout context save in _set_gpio_dataout_reg
        gpio/omap: fix _set_gpio_irqenable implementation
        gpio/omap: fix trigger type to unsigned
        gpio/omap: fix wakeup_en register update in _set_gpio_wakeup()
        gpio: tegra: tegra_gpio_config shouldn't be __init
        gpio/davinci: fix enabling unbanked GPIO IRQs
        gpio/davinci: fix oops on unbanked gpio irq request
        gpio/omap: Fix section warning for omap_mpuio_alloc_gc()
        ARM: tegra: export tegra_gpio_{en,dis}able
        gpio/gpio-stmpe: Fix the value returned by _get_value routine
        Documentation/gpio.txt: Explain expected pinctrl interaction
        GPIO: LPC32xx: Add output reading to GPO P3
        GPIO: LPC32xx: Fix missing bit selection mask
        gpio/omap: fix wakeups on level-triggered GPIOs
        gpio/omap: Fix IRQ handling for SPARSE_IRQ
        ...
      7bf97e1d
    • Linus Torvalds's avatar
      Merge tag 'mfd_3.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6 · 30304e5a
      Linus Torvalds authored
      Pull MFD changes from Samuel Ortiz:
       - 4 new drivers: Freescale i.MX on-chip Anatop, Ricoh's RC5T583 and
         TI's TPS65090 and TPS65217.
       - New variants support (8420, 8520 ab9540), cleanups and bug fixes for
         the abx500 and db8500 ST-E chipsets.
       - Some minor fixes and update for the wm8994 from Mark.
       - The beginning of a long term TWL cleanup effort coming from the TI
         folks.
       - Various fixes and cleanups for the s5m, TPS659xx, pm860x, and MAX8997
         drivers.
      
      Fix up trivial conflicts due to duplicate patches and header file
      cleanups (<linux/device.h> removal etc).
      
      * tag 'mfd_3.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6: (97 commits)
        gpio/twl: Add DT support to gpio-twl4030 driver
        gpio/twl: Allocate irq_desc dynamically for SPARSE_IRQ support
        mfd: Detach twl6040 from the pmic mfd driver
        mfd: Replace twl-* pr_ macros by the dev_ equivalent and do various cleanups
        mfd: Micro-optimization on twl4030 IRQ handler
        mfd: Make twl4030 SIH SPARSE_IRQ capable
        mfd: Move twl-core IRQ allocation into twl[4030|6030]-irq files
        mfd: Remove references already defineid in header file from twl-core
        mfd: Remove unneeded header from twl-core
        mfd: Make twl-core not depend on pdata->irq_base/end
        ARM: OMAP2+: board-omap4-*: Do not use anymore TWL6030_IRQ_BASE in board files
        mfd: Return twl6030_mmc_card_detect IRQ for board setup
        Revert "mfd: Add platform data for MAX8997 haptic driver"
        mfd: Add support for TPS65090
        mfd: Add some da9052-i2c section annotations
        mfd: Build rtc5t583 only if I2C config is selected to y.
        mfd: Add anatop mfd driver
        mfd: Fix compilation error in tps65910.h
        mfd: Add 8420 variant to db8500-prcmu
        mfd: Add 8520 PRCMU variant to db8500-prcmu
        ...
      30304e5a
    • Linus Torvalds's avatar
      Merge git://www.linux-watchdog.org/linux-watchdog · 750f7706
      Linus Torvalds authored
      Pull watchdog updates from Wim Van Sebroeck:
       - Removal of the Documentation/watchdog/00-INDEX file
       - Fix boot status reporting for imx2_wdt
       - clean-up sp805_wdt, pnx4008_wdt and mpcore_wdt
       - convert printk in watchdog drivers to pr_ functions
       - change nowayout module parameter to bool for every watchdog device
       - conversion of jz4740_wdt, pnx4008_wdt, max63xx_wdt, softdog,
         ep93xx_wdt, coh901327 and txx9wdt to new watchdog API
       - Add support for the WDIOC_GETTIMELEFT ioctl call to the new watchdog
         API
       - Change the new watchdog API so that the driver updates the timeout
         value
       - two fixes for the xen_wdt driver
      
      Fix up conflicts in ep93xx driver due to the same patches being merged
      through separate branches.
      
      * git://www.linux-watchdog.org/linux-watchdog: (33 commits)
        watchdog: txx9wdt: fix timeout
        watchdog: Convert txx9wdt driver to watchdog framework
        watchdog: coh901327_wdt.c: fix timeout
        watchdog: coh901327: convert to use watchdog core
        watchdog: Add support for WDIOC_GETTIMELEFT IOCTL in watchdog core
        watchdog: ep93xx_wdt: timeout is an unsigned int value.
        watchdog: ep93xx_wdt: Fix timeout after conversion to watchdog core
        watchdog: Convert ep93xx driver to watchdog core
        watchdog: sp805: Use devm routines
        watchdog: sp805: replace readl/writel with lighter _relaxed variants
        watchdog: sp805: Fix documentation style comment
        watchdog: mpcore_wdt: Allow platform_get_irq() to fail
        watchdog: mpcore_wdt: Use devm routines
        watchdog: mpcore_wdt: Rename dev to pdev for pointing to struct platform_device
        watchdog: xen: don't clear is_active when xen_wdt_stop() failed
        watchdog: xen: don't unconditionally enable the watchdog during resume
        watchdog: fix compiler error for missing parenthesis
        watchdog: ep93xx_wdt.c: fix platform probe
        watchdog: ep93xx: Convert the watchdog driver into a platform device.
        watchdog: fix set_timeout operations
        ...
      750f7706
    • 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