1. 31 Oct, 2011 13 commits
    • Jonathan E Brassow's avatar
      dm log userspace: add log device dependency · 5a25f0eb
      Jonathan E Brassow authored
      Allow userspace dm log implementations to register their log device so it
      is no longer missing from the list of device dependencies.
      
      When device mapper targets use a device they normally call dm_get_device
      which includes it in the device list returned to userspace applications
      such as LVM through the DM_TABLE_DEPS ioctl.  Userspace log devices
      don't use dm_get_device as userspace opens them so they are missing from
      the list of dependencies.
      
      This patch extends the DM_ULOG_CTR operation to allow userspace to
      respond with the name of the log device (if appropriate) to be
      registered via 'dm_get_device'.  DM_ULOG_REQUEST_VERSION is incremented.
      
      This is backwards compatible.  If the kernel and userspace log server
      have both been updated, the new information will be passed down to the
      kernel and the device will be registered.  If the kernel is new, but
      the log server is old, the log server will not pass down any device
      information and the kernel will simply bypass the device registration
      as before.  If the kernel is old but the log server is new, the log
      server will see the old version number and not pass the device info.
      Signed-off-by: default avatarJonathan Brassow <jbrassow@redhat.com>
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      5a25f0eb
    • Jonathan Brassow's avatar
      dm log userspace: fix comment hyphens · b8954457
      Jonathan Brassow authored
      Fix comments: clustered-disk needs a hyphen not an underscore.
      Signed-off-by: default avatarJonathan Brassow <jbrassow@redhat.com>
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      b8954457
    • Joe Thornber's avatar
      dm: add thin provisioning target · 991d9fa0
      Joe Thornber authored
      Initial EXPERIMENTAL implementation of device-mapper thin provisioning
      with snapshot support.  The 'thin' target is used to create instances of
      the virtual devices that are hosted in the 'thin-pool' target.  The
      thin-pool target provides data sharing among devices.  This sharing is
      made possible using the persistent-data library in the previous patch.
      
      The main highlight of this implementation, compared to the previous
      implementation of snapshots, is that it allows many virtual devices to
      be stored on the same data volume, simplifying administration and
      allowing sharing of data between volumes (thus reducing disk usage).
      
      Another big feature is support for arbitrary depth of recursive
      snapshots (snapshots of snapshots of snapshots ...).  The previous
      implementation of snapshots did this by chaining together lookup tables,
      and so performance was O(depth).  This new implementation uses a single
      data structure so we don't get this degradation with depth.
      
      For further information and examples of how to use this, please read
      Documentation/device-mapper/thin-provisioning.txt
      Signed-off-by: default avatarJoe Thornber <thornber@redhat.com>
      Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      991d9fa0
    • Joe Thornber's avatar
      dm: add persistent data library · 3241b1d3
      Joe Thornber authored
      The persistent-data library offers a re-usable framework for the storage
      and management of on-disk metadata in device-mapper targets.
      
      It's used by the thin-provisioning target in the next patch and in an
      upcoming hierarchical storage target.
      
      For further information, please read
      Documentation/device-mapper/persistent-data.txt
      Signed-off-by: default avatarJoe Thornber <thornber@redhat.com>
      Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      3241b1d3
    • Mikulas Patocka's avatar
      dm: add bufio · 95d402f0
      Mikulas Patocka authored
      The dm-bufio interface allows you to do cached I/O on devices,
      holding recently-read blocks in memory and performing delayed writes.
      
      We don't use buffer cache or page cache already present in the kernel, because:
      * we need to handle block sizes larger than a page
      * we can't allocate memory to perform reads or we'd have deadlocks
      
      Currently, when a cache is required, we limit its size to a fraction of
      available memory.  Usage can be viewed and changed in
      /sys/module/dm_bufio/parameters/ .
      
      The first user is thin provisioning, but more dm users are planned.
      Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      95d402f0
    • Alasdair G Kergon's avatar
      dm: export dm get md · 3cf2e4ba
      Alasdair G Kergon authored
      Export dm_get_md() for the new thin provisioning target to use.
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      3cf2e4ba
    • Alasdair G Kergon's avatar
      dm table: add immutable feature · 36a0456f
      Alasdair G Kergon authored
      Introduce DM_TARGET_IMMUTABLE to indicate that the target type cannot be mixed
      with any other target type, and once loaded into a device, it cannot be
      replaced with a table containing a different type.
      
      The thin provisioning pool device will use this.
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      36a0456f
    • Alasdair G Kergon's avatar
      dm table: add always writeable feature · cc6cbe14
      Alasdair G Kergon authored
      Add a target feature flag DM_TARGET_ALWAYS_WRITEABLE to indicate that a target
      does not support read-only mode.
      
      The initial implementation of the thin provisioning target uses this.
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      cc6cbe14
    • Alasdair G Kergon's avatar
      dm table: add singleton feature · 3791e2fc
      Alasdair G Kergon authored
      Introduce the concept of a singleton table which contains exactly one target.
      
      If a target type sets the DM_TARGET_SINGLETON feature bit device-mapper
      will ensure that any table that includes that target contains no others.
      
      The thin provisioning pool target uses this.
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      3791e2fc
    • Mikulas Patocka's avatar
      dm kcopyd: add dm_kcopyd_zero to zero an area · 7f069653
      Mikulas Patocka authored
      This patch introduces dm_kcopyd_zero() to make it easy to use
      kcopyd to write zeros into the requested areas instead
      instead of copying.  It is implemented by passing a NULL
      copying source to dm_kcopyd_copy().
      
      The forthcoming thin provisioning target uses this.
      Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      7f069653
    • Namhyung Kim's avatar
      dm: remove superfluous smp_mb · fbdc86f3
      Namhyung Kim authored
      Since set_current_state() contains a memory barrier in it,
      an additional barrier isn't needed.
      Signed-off-by: default avatarNamhyung Kim <namhyung@gmail.com>
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      fbdc86f3
    • Namhyung Kim's avatar
      dm: use local printk ratelimit · 71a16736
      Namhyung Kim authored
      printk_ratelimit() shares global ratelimiting state with all
      other subsystems, so its usage is discouraged. Instead,
      define and use dm's local state.
      Signed-off-by: default avatarNamhyung Kim <namhyung@gmail.com>
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      71a16736
    • Mandeep Singh Baines's avatar
      dm table: propagate non rotational flag · 4693c966
      Mandeep Singh Baines authored
      Allow QUEUE_FLAG_NONROT to propagate up the device stack if all
      underlying devices are non-rotational.  Tools like ureadahead will
      schedule IOs differently based on the rotational flag.
      
      With this patch, I see boot time go from 7.75 s to 7.46 s on my device.
      Suggested-by: default avatarJ. Richard Barnette <jrbarnette@chromium.org>
      Signed-off-by: default avatarMandeep Singh Baines <msb@chromium.org>
      Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
      Cc: Neil Brown <neilb@suse.de>
      Cc: Jens Axboe <jaxboe@fusionio.com>
      Cc: Martin K. Petersen <martin.petersen@oracle.com>
      Cc: dm-devel@redhat.com
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      4693c966
  2. 24 Oct, 2011 4 commits
  3. 23 Oct, 2011 3 commits
  4. 21 Oct, 2011 5 commits
    • Domenico Andreoli's avatar
      ARM: S3C24XX: Fix s3c24xx build errors if !CONFIG_PM · fb630b9f
      Domenico Andreoli authored
      v2:
      - register_syscore_ops(&s3c24xx_irq_syscore_ops) does not need to be
        conditionally compiled out, it is already optimized out on !CONFIG_PM
      - fix also s3c2412 and s3c2416 affected by the same build issue
      
      v1:
      s3c2440.c fails to build if !CONFIG_PM because in such case
      s3c2410_pm_syscore_ops is not defined. Same error should happen also
      in s3c2410.c and s3c2442.c
      Signed-off-by: default avatarDomenico Andreoli <cavokz@gmail.com>
      Signed-off-by: default avatarKukjin Kim <kgene.kim@samsung.com>
      fb630b9f
    • Linus Torvalds's avatar
      Merge git://github.com/herbertx/crypto · 2efd7c0f
      Linus Torvalds authored
      * git://github.com/herbertx/crypto:
        crypto: ghash - Avoid null pointer dereference if no key is set
      2efd7c0f
    • Linus Torvalds's avatar
      Merge branch 'fix/hda' of git://github.com/tiwai/sound · 62ddc004
      Linus Torvalds authored
      * 'fix/hda' of git://github.com/tiwai/sound:
        ALSA: HDA: conexant support for Lenovo T520/W520
        ALSA: hda - Add position_fix quirk for Dell Inspiron 1010
      62ddc004
    • Nick Bowler's avatar
      crypto: ghash - Avoid null pointer dereference if no key is set · 7ed47b7d
      Nick Bowler authored
      The ghash_update function passes a pointer to gf128mul_4k_lle which will
      be NULL if ghash_setkey is not called or if the most recent call to
      ghash_setkey failed to allocate memory.  This causes an oops.  Fix this
      up by returning an error code in the null case.
      
      This is trivially triggered from unprivileged userspace through the
      AF_ALG interface by simply writing to the socket without setting a key.
      
      The ghash_final function has a similar issue, but triggering it requires
      a memory allocation failure in ghash_setkey _after_ at least one
      successful call to ghash_update.
      
        BUG: unable to handle kernel NULL pointer dereference at 00000670
        IP: [<d88c92d4>] gf128mul_4k_lle+0x23/0x60 [gf128mul]
        *pde = 00000000
        Oops: 0000 [#1] PREEMPT SMP
        Modules linked in: ghash_generic gf128mul algif_hash af_alg nfs lockd nfs_acl sunrpc bridge ipv6 stp llc
      
        Pid: 1502, comm: hashatron Tainted: G        W   3.1.0-rc9-00085-ge9308cfd #32 Bochs Bochs
        EIP: 0060:[<d88c92d4>] EFLAGS: 00000202 CPU: 0
        EIP is at gf128mul_4k_lle+0x23/0x60 [gf128mul]
        EAX: d69db1f0 EBX: d6b8ddac ECX: 00000004 EDX: 00000000
        ESI: 00000670 EDI: d6b8ddac EBP: d6b8ddc8 ESP: d6b8dda4
         DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
        Process hashatron (pid: 1502, ti=d6b8c000 task=d6810000 task.ti=d6b8c000)
        Stack:
         00000000 d69db1f0 00000163 00000000 d6b8ddc8 c101a520 d69db1f0 d52aa000
         00000ff0 d6b8dde8 d88d310f d6b8a3f8 d52aa000 00001000 d88d502c d6b8ddfc
         00001000 d6b8ddf4 c11676ed d69db1e8 d6b8de24 c11679ad d52aa000 00000000
        Call Trace:
         [<c101a520>] ? kmap_atomic_prot+0x37/0xa6
         [<d88d310f>] ghash_update+0x85/0xbe [ghash_generic]
         [<c11676ed>] crypto_shash_update+0x18/0x1b
         [<c11679ad>] shash_ahash_update+0x22/0x36
         [<c11679cc>] shash_async_update+0xb/0xd
         [<d88ce0ba>] hash_sendpage+0xba/0xf2 [algif_hash]
         [<c121b24c>] kernel_sendpage+0x39/0x4e
         [<d88ce000>] ? 0xd88cdfff
         [<c121b298>] sock_sendpage+0x37/0x3e
         [<c121b261>] ? kernel_sendpage+0x4e/0x4e
         [<c10b4dbc>] pipe_to_sendpage+0x56/0x61
         [<c10b4e1f>] splice_from_pipe_feed+0x58/0xcd
         [<c10b4d66>] ? splice_from_pipe_begin+0x10/0x10
         [<c10b51f5>] __splice_from_pipe+0x36/0x55
         [<c10b4d66>] ? splice_from_pipe_begin+0x10/0x10
         [<c10b6383>] splice_from_pipe+0x51/0x64
         [<c10b63c2>] ? default_file_splice_write+0x2c/0x2c
         [<c10b63d5>] generic_splice_sendpage+0x13/0x15
         [<c10b4d66>] ? splice_from_pipe_begin+0x10/0x10
         [<c10b527f>] do_splice_from+0x5d/0x67
         [<c10b6865>] sys_splice+0x2bf/0x363
         [<c129373b>] ? sysenter_exit+0xf/0x16
         [<c104dc1e>] ? trace_hardirqs_on_caller+0x10e/0x13f
         [<c129370c>] sysenter_do_call+0x12/0x32
        Code: 83 c4 0c 5b 5e 5f c9 c3 55 b9 04 00 00 00 89 e5 57 8d 7d e4 56 53 8d 5d e4 83 ec 18 89 45 e0 89 55 dc 0f b6 70 0f c1 e6 04 01 d6 <f3> a5 be 0f 00 00 00 4e 89 d8 e8 48 ff ff ff 8b 45 e0 89 da 0f
        EIP: [<d88c92d4>] gf128mul_4k_lle+0x23/0x60 [gf128mul] SS:ESP 0068:d6b8dda4
        CR2: 0000000000000670
        ---[ end trace 4eaa2a86a8e2da24 ]---
        note: hashatron[1502] exited with preempt_count 1
        BUG: scheduling while atomic: hashatron/1502/0x10000002
        INFO: lockdep is turned off.
        [...]
      Signed-off-by: default avatarNick Bowler <nbowler@elliptictech.com>
      Cc: stable@kernel.org [2.6.37+]
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      7ed47b7d
    • Marek Szyprowski's avatar
      ARM: S5P: fix offset calculation on gpio-interrupt · 1052cff3
      Marek Szyprowski authored
      Offsets of the irq controller registers were calculated
      correctly only for first GPIO bank. This patch fixes
      calculation of the register offsets for all GPIO banks.
      Reported-by: default avatarSylwester Nawrocki <s.nawrocki@samsung.com>
      Signed-off-by: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
      Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
      Signed-off-by: default avatarKukjin Kim <kgene.kim@samsung.com>
      1052cff3
  5. 20 Oct, 2011 4 commits
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc · fd11e153
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:
        sparc: Add alignment flag to PCI expansion resources
        sparc: Avoid calling sigprocmask()
        sparc: Use set_current_blocked()
        sparc32,leon: SRMMU MMU Table probe fix
      fd11e153
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 505f48b5
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:
        fib_rules: fix unresolved_rules counting
        r8169: fix wrong eee setting for rlt8111evl
        r8169: fix driver shutdown WoL regression.
        ehea: Change maintainer to me
        pptp: pptp_rcv_core() misses pskb_may_pull() call
        tproxy: copy transparent flag when creating a time wait
        pptp: fix skb leak in pptp_xmit()
        bonding: use local function pointer of bond->recv_probe in bond_handle_frame
        smsc911x: Add support for SMSC LAN89218
        tg3: negate USE_PHYLIB flag check
        netconsole: enable netconsole can make net_device refcnt incorrent
        bluetooth: Properly clone LSM attributes to newly created child connections
        l2tp: fix a potential skb leak in l2tp_xmit_skb()
        bridge: fix hang on removal of bridge via netlink
        x25: Prevent skb overreads when checking call user data
        x25: Handle undersized/fragmented skbs
        x25: Validate incoming call user data lengths
        udplite: fast-path computation of checksum coverage
        IPVS netns shutdown/startup dead-lock
        netfilter: nf_conntrack: fix event flooding in GRE protocol tracker
      505f48b5
    • Jean Delvare's avatar
      hwmon: (w83627ehf) Fix negative 8-bit temperature values · 133d324d
      Jean Delvare authored
      Since 8-bit temperature values are now handled in 16-bit struct
      members, values have to be cast to s8 for negative temperatures to be
      properly handled. This is broken since kernel version 2.6.39
      (commit bce26c58.)
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      Cc: Guenter Roeck <guenter.roeck@ericsson.com>
      Cc: stable@kernel.org	# 2.6.39+
      Signed-off-by: default avatarGuenter Roeck <guenter.roeck@ericsson.com>
      133d324d
    • Hugh Dickins's avatar
      mm: fix race between mremap and removing migration entry · 486cf46f
      Hugh Dickins authored
      I don't usually pay much attention to the stale "? " addresses in
      stack backtraces, but this lucky report from Pawel Sikora hints that
      mremap's move_ptes() has inadequate locking against page migration.
      
       3.0 BUG_ON(!PageLocked(p)) in migration_entry_to_page():
       kernel BUG at include/linux/swapops.h:105!
       RIP: 0010:[<ffffffff81127b76>]  [<ffffffff81127b76>]
                             migration_entry_wait+0x156/0x160
        [<ffffffff811016a1>] handle_pte_fault+0xae1/0xaf0
        [<ffffffff810feee2>] ? __pte_alloc+0x42/0x120
        [<ffffffff8112c26b>] ? do_huge_pmd_anonymous_page+0xab/0x310
        [<ffffffff81102a31>] handle_mm_fault+0x181/0x310
        [<ffffffff81106097>] ? vma_adjust+0x537/0x570
        [<ffffffff81424bed>] do_page_fault+0x11d/0x4e0
        [<ffffffff81109a05>] ? do_mremap+0x2d5/0x570
        [<ffffffff81421d5f>] page_fault+0x1f/0x30
      
      mremap's down_write of mmap_sem, together with i_mmap_mutex or lock,
      and pagetable locks, were good enough before page migration (with its
      requirement that every migration entry be found) came in, and enough
      while migration always held mmap_sem; but not enough nowadays, when
      there's memory hotremove and compaction.
      
      The danger is that move_ptes() lets a migration entry dodge around
      behind remove_migration_pte()'s back, so it's in the old location when
      looking at the new, then in the new location when looking at the old.
      
      Either mremap's move_ptes() must additionally take anon_vma lock(), or
      migration's remove_migration_pte() must stop peeking for is_swap_entry()
      before it takes pagetable lock.
      
      Consensus chooses the latter: we prefer to add overhead to migration
      than to mremapping, which gets used by JVMs and by exec stack setup.
      Reported-and-tested-by: default avatarPaweł Sikora <pluto@agmk.net>
      Signed-off-by: default avatarHugh Dickins <hughd@google.com>
      Acked-by: default avatarAndrea Arcangeli <aarcange@redhat.com>
      Acked-by: default avatarMel Gorman <mgorman@suse.de>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      486cf46f
  6. 19 Oct, 2011 11 commits