20 Jan, 2021

1 commit

  • commit cc07d72bf350b77faeffee1c37bc52197171473f upstream.

    Block core warned that discard_granularity was 0 for dm-raid with
    personality of raid1. Reason is that raid_io_hints() was incorrectly
    special-casing raid1 rather than raid0.

    Fix raid_io_hints() by removing discard limits settings for
    raid1. Check for raid0 instead.

    Fixes: 61697a6abd24a ("dm: eliminate 'split_discard_bios' flag from DM target interface")
    Cc: stable@vger.kernel.org
    Reported-by: Zdenek Kabelac
    Reported-by: Mikulas Patocka
    Reported-by: Stephan Bärwolf
    Signed-off-by: Mike Snitzer
    Signed-off-by: Greg Kroah-Hartman

    Mike Snitzer
     

15 Dec, 2020

1 commit


10 Dec, 2020

1 commit

  • This reverts commit f0e90b6c663a7e3b4736cb318c6c7c589f152c28.

    Matthew Ruffell reported data corruption in raid10 due to the changes
    in discard handling [1]. Revert these changes before we find a proper fix.

    [1] https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1907262/
    Cc: Matthew Ruffell
    Cc: Xiao Ni
    Cc: Mike Snitzer
    Acked-by: Mike Snitzer
    Signed-off-by: Song Liu

    Song Liu
     

30 Sep, 2020

2 commits

  • Commit bcc90d280465e ("md/raid10: improve raid10 discard request")
    removes raid10's inability to properly handle large discards. So
    eliminate associated constraint from dm-raid's raid10 support.

    Signed-off-by: Mike Snitzer

    Mike Snitzer
     
  • Block core warned that discard_granularity was 0 for dm-raid with
    personality of raid1. Reason is that raid_io_hints() was incorrectly
    special-casing raid1 rather than raid0.

    But since commit 29efc390b9462 ("md/md0: optimize raid0 discard
    handling") even raid0 properly handles large discards.

    Fix raid_io_hints() by removing discard limits settings for raid1.
    Also, fix limits for raid10 by properly stacking underlying limits as
    done in blk_stack_limits().

    Depends-on: 29efc390b9462 ("md/md0: optimize raid0 discard handling")
    Fixes: 61697a6abd24a ("dm: eliminate 'split_discard_bios' flag from DM target interface")
    Cc: stable@vger.kernel.org
    Reported-by: Zdenek Kabelac
    Reported-by: Mikulas Patocka
    Signed-off-by: Mike Snitzer

    Mike Snitzer
     

02 Sep, 2020

1 commit

  • revalidate_disk is a relative awkward helper for driver use, as it first
    calls an optional driver method and then updates the block device size,
    while most callers either don't need the method call at all, or want to
    keep state between the caller and the called method.

    Add a revalidate_disk_size helper that just performs the update of the
    block device size from the gendisk one, and switch all drivers that do
    not implement ->revalidate_disk to use the new helper instead of
    revalidate_disk()

    Signed-off-by: Christoph Hellwig
    Reviewed-by: Josef Bacik
    Reviewed-by: Johannes Thumshirn
    Acked-by: Song Liu
    Signed-off-by: Jens Axboe

    Christoph Hellwig
     

08 Aug, 2020

1 commit

  • …device-mapper/linux-dm

    Pull device mapper updates from Mike Snitzer:

    - DM multipath locking fixes around m->flags tests and improvements to
    bio-based code so that it follows patterns established by
    request-based code.

    - Request-based DM core improvement to eliminate unnecessary call to
    blk_mq_queue_stopped().

    - Add "panic_on_corruption" error handling mode to DM verity target.

    - DM bufio fix to to perform buffer cleanup from a workqueue rather
    than wait for IO in reclaim context from shrinker.

    - DM crypt improvement to optionally avoid async processing via
    workqueues for reads and/or writes -- via "no_read_workqueue" and
    "no_write_workqueue" features. This more direct IO processing
    improves latency and throughput with faster storage. Avoiding
    workqueue IO submission for writes (DM_CRYPT_NO_WRITE_WORKQUEUE) is a
    requirement for adding zoned block device support to DM crypt.

    - Add zoned block device support to DM crypt. Makes use of
    DM_CRYPT_NO_WRITE_WORKQUEUE and a new optional feature
    (DM_CRYPT_WRITE_INLINE) that allows write completion to wait for
    encryption to complete. This allows write ordering to be preserved,
    which is needed for zoned block devices.

    - Fix DM ebs target's check for REQ_OP_FLUSH.

    - Fix DM core's report zones support to not report more zones than were
    requested.

    - A few small compiler warning fixes.

    - DM dust improvements to return output directly to the user rather
    than require they scrape the system log for output.

    * tag 'for-5.9/dm-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm:
    dm: don't call report zones for more than the user requested
    dm ebs: Fix incorrect checking for REQ_OP_FLUSH
    dm init: Set file local variable static
    dm ioctl: Fix compilation warning
    dm raid: Remove empty if statement
    dm verity: Fix compilation warning
    dm crypt: Enable zoned block device support
    dm crypt: add flags to optionally bypass kcryptd workqueues
    dm bufio: do buffer cleanup from a workqueue
    dm rq: don't call blk_mq_queue_stopped() in dm_stop_queue()
    dm dust: add interface to list all badblocks
    dm dust: report some message results directly back to user
    dm verity: add "panic_on_corruption" error handling mode
    dm mpath: use double checked locking in fast path
    dm mpath: rename current_pgpath to pgpath in multipath_prepare_ioctl
    dm mpath: rework __map_bio()
    dm mpath: factor out multipath_queue_bio
    dm mpath: push locking down to must_push_back_rq()
    dm mpath: take m->lock spinlock when testing QUEUE_IF_NO_PATH
    dm mpath: changes from initial m->flags locking audit

    Linus Torvalds
     

05 Aug, 2020

1 commit


09 Jul, 2020

1 commit

  • Except for pktdvd, the only places setting congested bits are file
    systems that allocate their own backing_dev_info structures. And
    pktdvd is a deprecated driver that isn't useful in stack setup
    either. So remove the dead congested_fn stacking infrastructure.

    Signed-off-by: Christoph Hellwig
    Acked-by: Song Liu
    Acked-by: David Sterba
    [axboe: fixup unused variables in bcache/request.c]
    Signed-off-by: Jens Axboe

    Christoph Hellwig
     

21 May, 2020

1 commit

  • The current codebase makes use of the zero-length array language
    extension to the C90 standard, but the preferred mechanism to declare
    variable-length types such as these ones is a flexible array member[1][2],
    introduced in C99:

    struct foo {
    int stuff;
    struct boo array[];
    };

    By making use of the mechanism above, we will get a compiler warning
    in case the flexible array does not occur last in the structure, which
    will help us prevent some kind of undefined behavior bugs from being
    inadvertently introduced[3] to the codebase from now on.

    Also, notice that, dynamic memory allocations won't be affected by
    this change:

    "Flexible array members have incomplete type, and so the sizeof operator
    may not be applied. As a quirk of the original implementation of
    zero-length arrays, sizeof evaluates to zero."[1]

    sizeof(flexible-array-member) triggers a warning because flexible array
    members have incomplete type[1]. There are some instances of code in
    which the sizeof operator is being incorrectly/erroneously applied to
    zero-length arrays and the result is zero. Such instances may be hiding
    some bugs. So, this work (flexible-array member conversions) will also
    help to get completely rid of those sorts of issues.

    This issue was found with the help of Coccinelle.

    [1] https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html
    [2] https://github.com/KSPP/linux/issues/21
    [3] commit 76497732932f ("cxgb3/l2t: Fix undefined behaviour")

    Signed-off-by: Gustavo A. R. Silva
    Signed-off-by: Mike Snitzer

    Gustavo A. R. Silva
     

08 Jan, 2020

1 commit

  • raid_status() wasn't emitting rebuild flags on the table line properly
    because the rdev number was not yet set properly; index raid component
    devices array directly to solve.

    Also fix wrong argument count on emitted table line caused by 1 too
    many rebuild/write_mostly argument and consider any journal_(dev|mode)
    pairs.

    Link: https://bugzilla.redhat.com/1782045
    Signed-off-by: Heinz Mauelshagen
    Signed-off-by: Mike Snitzer

    Heinz Mauelshagen
     

08 Nov, 2019

1 commit

  • When building with Clang + -Wtautological-constant-compare:

    drivers/md/dm-raid.c:619:8: warning: converting the result of '<<< 16) /* stripes with data
    copies area adjacent on devices */
    ^
    1 warning generated.

    Negating a non-zero number will always make it zero, which is the
    default value of r in this function so this statement is unnecessary;
    remove it so that clang no longer warns.

    Link: https://github.com/ClangBuiltLinux/linux/issues/753
    Signed-off-by: Nathan Chancellor
    Acked-by: Heinz Mauelshagen
    Signed-off-by: Mike Snitzer

    Nathan Chancellor
     

06 Nov, 2019

4 commits


12 Sep, 2019

1 commit

  • Unit of 'chunk_size' is byte, instead of sector, so fix it by setting
    the queue_limits' max_discard_sectors to rs->md.chunk_sectors. Also,
    rename chunk_size to chunk_size_bytes.

    Without this fix, too big max_discard_sectors is applied on the request
    queue of dm-raid, finally raid code has to split the bio again.

    This re-split done by raid causes the following nested clone_endio:

    1) one big bio 'A' is submitted to dm queue, and served as the original
    bio

    2) one new bio 'B' is cloned from the original bio 'A', and .map()
    is run on this bio of 'B', and B's original bio points to 'A'

    3) raid code sees that 'B' is too big, and split 'B' and re-submit
    the remainded part of 'B' to dm-raid queue via generic_make_request().

    4) now dm will handle 'B' as new original bio, then allocate a new
    clone bio of 'C' and run .map() on 'C'. Meantime C's original bio
    points to 'B'.

    5) suppose now 'C' is completed by raid directly, then the following
    clone_endio() is called recursively:

    clone_endio(C)
    ->clone_endio(B) #B is original bio of 'C'
    ->bio_endio(A)

    'A' can be big enough to make hundreds of nested clone_endio(), then
    stack can be corrupted easily.

    Fixes: 61697a6abd24a ("dm: eliminate 'split_discard_bios' flag from DM target interface")
    Cc: stable@vger.kernel.org
    Signed-off-by: Ming Lei
    Signed-off-by: Mike Snitzer

    Ming Lei
     

21 Aug, 2019

1 commit

  • If rs_prepare_reshape() fails, no cleanup is executed, leading to
    leak of the raid_set structure allocated at the beginning of
    raid_ctr(). To fix this issue, go to the label 'bad' if the error
    occurs.

    Fixes: 11e4723206683 ("dm raid: stop keeping raid set frozen altogether")
    Cc: stable@vger.kernel.org
    Signed-off-by: Wenwen Wang
    Signed-off-by: Mike Snitzer

    Wenwen Wang
     

15 Jul, 2019

1 commit


15 Jun, 2019

1 commit

  • The conversion is actually:
    - add blank lines and indentation in order to identify paragraphs;
    - fix tables markups;
    - add some lists markups;
    - mark literal blocks;
    - adjust title markups.

    At its new index.rst, let's add a :orphan: while this is not linked to
    the main index.rst file, in order to avoid build warnings.

    Signed-off-by: Mauro Carvalho Chehab
    Acked-by: Bjorn Helgaas
    Acked-by: Mark Brown
    Signed-off-by: Jonathan Corbet

    Mauro Carvalho Chehab
     

21 Feb, 2019

1 commit


19 Dec, 2018

1 commit

  • Sending a check/repair message infrequently leads to -EBUSY instead of
    properly identifying an active resync. This occurs because
    raid_message() is testing recovery bits in a racy way.

    Fix by calling decipher_sync_action() from raid_message() to properly
    identify the idle state of the RAID device.

    Signed-off-by: Heinz Mauelshagen
    Signed-off-by: Mike Snitzer

    Heinz Mauelshagen
     

19 Oct, 2018

1 commit


18 Sep, 2018

1 commit


07 Sep, 2018

5 commits

  • Bump target version to reflect the documented fixes are available.
    Also fix some code comments (typos and clarity).

    Signed-off-by: Heinz Mauelshagen
    Signed-off-by: Mike Snitzer

    Heinz Mauelshagen
     
  • On fast devices such as NVMe, a flaw in rs_get_progress() results in
    false target status output when userspace lvm2 requests leg rebuilds
    (symptom of the failure is device health chars 'aaaaaaaa' instead of
    expected 'aAaAAAAA' causing lvm2 to fail).

    The correct sync action state definitions already exist in
    decipher_sync_action() so fix rs_get_progress() to use it.

    Change decipher_sync_action() to return an enum rather than a string for
    the sync states and call it from rs_get_progress(). Introduce
    sync_str() to translate from enum to the string that is needed by
    raid_status().

    Signed-off-by: Heinz Mauelshagen
    Signed-off-by: Mike Snitzer

    Heinz Mauelshagen
     
  • Update superblock when particular devices are requested via rebuild
    (e.g. lvconvert --replace ...) to avoid spurious failure with the "New
    device injected into existing raid set without 'delta_disks' or
    'rebuild' parameter specified" error message.

    Signed-off-by: Heinz Mauelshagen
    Signed-off-by: Mike Snitzer

    Heinz Mauelshagen
     
  • When initiating a stripe adding reshape, a deadlock between
    md_stop_writes() waiting for the sync thread to stop and the running
    sync thread waiting for inactive stripes occurs (this frequently happens
    on single-core but rarely on multi-core systems).

    Fix this deadlock by setting MD_RECOVERY_WAIT to have the main MD
    resynchronization thread worker (md_do_sync()) bail out when initiating
    the reshape via constructor arguments.

    Signed-off-by: Heinz Mauelshagen
    Signed-off-by: Mike Snitzer

    Heinz Mauelshagen
     
  • Loading a new mapping table, the dm-raid target's constructor
    retrieves the volatile reshaping state from the raid superblocks.

    When the new table is activated in a following resume, the actual
    reshape position is retrieved. The reshape driven by the previous
    mapping can already have finished on small and/or fast devices thus
    updating raid superblocks about the new raid layout.

    This causes the actual array state (e.g. stripe size reshape finished)
    to be inconsistent with the one in the new mapping, causing hangs with
    left behind devices.

    This race does not occur with usual raid device sizes but with small
    ones (e.g. those created by the lvm2 test suite).

    Fix by no longer transferring stale/inconsistent raid_set state during
    preresume.

    Signed-off-by: Heinz Mauelshagen
    Signed-off-by: Mike Snitzer

    Heinz Mauelshagen
     

19 Aug, 2018

1 commit

  • Pull input updates from Dmitry Torokhov:

    - a new driver for Rohm BU21029 touch controller

    - new bitmap APIs: bitmap_alloc, bitmap_zalloc and bitmap_free

    - updates to Atmel, eeti. pxrc and iforce drivers

    - assorted driver cleanups and fixes.

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (57 commits)
    MAINTAINERS: Add PhoenixRC Flight Controller Adapter
    Input: do not use WARN() in input_alloc_absinfo()
    Input: mark expected switch fall-throughs
    Input: raydium_i2c_ts - use true and false for boolean values
    Input: evdev - switch to bitmap API
    Input: gpio-keys - switch to bitmap_zalloc()
    Input: elan_i2c_smbus - cast sizeof to int for comparison
    bitmap: Add bitmap_alloc(), bitmap_zalloc() and bitmap_free()
    md: Avoid namespace collision with bitmap API
    dm: Avoid namespace collision with bitmap API
    Input: pm8941-pwrkey - add resin entry
    Input: pm8941-pwrkey - abstract register offsets and event code
    Input: iforce - reorganize joystick configuration lists
    Input: atmel_mxt_ts - move completion to after config crc is updated
    Input: atmel_mxt_ts - don't report zero pressure from T9
    Input: atmel_mxt_ts - zero terminate config firmware file
    Input: atmel_mxt_ts - refactor config update code to add context struct
    Input: atmel_mxt_ts - config CRC may start at T71
    Input: atmel_mxt_ts - remove unnecessary debug on ENOMEM
    Input: atmel_mxt_ts - remove duplicate setup of ABS_MT_PRESSURE
    ...

    Linus Torvalds
     

02 Aug, 2018

1 commit

  • bitmap API (include/linux/bitmap.h) has 'bitmap' prefix for its methods.

    On the other hand MD bitmap API is special case.
    Adding 'md' prefix to it to avoid name space collision.

    No functional changes intended.

    Signed-off-by: Andy Shevchenko
    Acked-by: Shaohua Li
    Signed-off-by: Dmitry Torokhov

    Andy Shevchenko
     

23 Jun, 2018

1 commit

  • A newly introduced function has 'const int' as the return type,
    but as "make W=1" reports, that has no meaning:

    drivers/md/dm-raid.c:510:18: error: type qualifiers ignored on function return type [-Werror=ignored-qualifiers]

    This changes the return type to plain 'int'.

    Signed-off-by: Arnd Bergmann
    Fixes: 33e53f06850f ("dm raid: introduce extended superblock and new raid types to support takeover/reshaping")
    Signed-off-by: Mike Snitzer
    Fixes: 552aa679f2657431 ("dm raid: use rs_is_raid*()")
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Mike Snitzer

    Arnd Bergmann
     

07 Jun, 2018

1 commit

  • One of the more common cases of allocation size calculations is finding
    the size of a structure that has a zero-sized array at the end, along
    with memory for some number of elements for that array. For example:

    struct foo {
    int stuff;
    void *entry[];
    };

    instance = kmalloc(sizeof(struct foo) + sizeof(void *) * count, GFP_KERNEL);

    Instead of leaving these open-coded and prone to type mistakes, we can
    now use the new struct_size() helper:

    instance = kmalloc(struct_size(instance, entry, count), GFP_KERNEL);

    This patch makes the changes for kmalloc()-family (and kvmalloc()-family)
    uses. It was done via automatic conversion with manual review for the
    "CHECKME" non-standard cases noted below, using the following Coccinelle
    script:

    // pkey_cache = kmalloc(sizeof *pkey_cache + tprops->pkey_tbl_len *
    // sizeof *pkey_cache->table, GFP_KERNEL);
    @@
    identifier alloc =~ "kmalloc|kzalloc|kvmalloc|kvzalloc";
    expression GFP;
    identifier VAR, ELEMENT;
    expression COUNT;
    @@

    - alloc(sizeof(*VAR) + COUNT * sizeof(*VAR->ELEMENT), GFP)
    + alloc(struct_size(VAR, ELEMENT, COUNT), GFP)

    // mr = kzalloc(sizeof(*mr) + m * sizeof(mr->map[0]), GFP_KERNEL);
    @@
    identifier alloc =~ "kmalloc|kzalloc|kvmalloc|kvzalloc";
    expression GFP;
    identifier VAR, ELEMENT;
    expression COUNT;
    @@

    - alloc(sizeof(*VAR) + COUNT * sizeof(VAR->ELEMENT[0]), GFP)
    + alloc(struct_size(VAR, ELEMENT, COUNT), GFP)

    // Same pattern, but can't trivially locate the trailing element name,
    // or variable name.
    @@
    identifier alloc =~ "kmalloc|kzalloc|kvmalloc|kvzalloc";
    expression GFP;
    expression SOMETHING, COUNT, ELEMENT;
    @@

    - alloc(sizeof(SOMETHING) + COUNT * sizeof(ELEMENT), GFP)
    + alloc(CHECKME_struct_size(&SOMETHING, ELEMENT, COUNT), GFP)

    Signed-off-by: Kees Cook

    Kees Cook
     

05 Apr, 2018

1 commit

  • parse_raid_params() compares variable "int value" with INT_MAX.

    E.g. related Coverity report excerpt:
    CID 1364818 (#2 of 3): Operands don't affect result (CONSTANT_EXPRESSION_RESULT) [select issue]
    1433 if (value > INT_MAX) {

    Fix by changing checks to avoid INT_MAX.

    Whilst on it, avoid unnecessary checks against constants
    and add check for sane recovery speed min/max.

    Signed-off-by: Heinz Mauelshagen
    Signed-off-by: Mike Snitzer

    Heinz Mauelshagen
     

04 Apr, 2018

2 commits

  • Fix a race for "nosync" activations providing "aa.." device health
    characters and "0/N" sync ratio rather than "AA..." and "N/N". Occurs
    when status for the raid set is retrieved during resume before the MD
    sync thread starts and clears the MD_RECOVERY_NEEDED flag.

    Cc: stable@vger.kernel.org # 4.16+
    Signed-off-by: Heinz Mauelshagen
    Signed-off-by: Mike Snitzer

    Heinz Mauelshagen
     
  • Could be useful for a target to return stats or other information.
    If a target does DMEMIT() anything to @result from its .message method
    then it must return 1 to the caller.

    Signed-off-By: Mike Snitzer

    Mike Snitzer
     

07 Mar, 2018

1 commit

  • Upstream commit 4102d9de6d375 ("dm raid: fix rs_get_progress()
    synchronization state/ratio") in combination with commit 7c29744ecce
    ("dm raid: simplify rs_get_progress()") introduced a regression by
    incorrectly reporting a sync_ratio of 0 for degraded raid sets. This
    caused lvm2 to fail to repair raid legs automatically.

    Fix by identifying the degraded state by checking the MD_RECOVERY_INTR
    flag and returning mddev->recovery_cp in case it is set.

    MD sets recovery = [ MD_RECOVERY_RECOVER MD_RECOVERY_INTR
    MD_RECOVERY_NEEDED ] when a RAID member fails. It then shuts down any
    sync thread that is running and leaves us with all MD_RECOVERY_* flags
    cleared. The bug occurs if a status is requested in the short time it
    takes to shut down any sync thread and clear the flags, because we were
    keying in on the MD_RECOVERY_NEEDED - understanding it to be the initial
    phase of a “recover” sync thread. However, this is an incorrect
    interpretation if MD_RECOVERY_INTR is also set.

    This also explains why the bug only happened when automatic repair was
    enabled and not a normal ‘manual’ method. It is impossible to react
    quick enough to hit the problematic window without it being automated.

    Fix passes automatic repair tests.

    Fixes: 7c29744ecce ("dm raid: simplify rs_get_progress()")
    Signed-off-by: Jonathan Brassow
    Signed-off-by: Heinz Mauelshagen
    Signed-off-by: Mike Snitzer

    Jonathan Brassow
     

01 Feb, 2018

1 commit

  • …/device-mapper/linux-dm

    Pull device mapper updates from Mike Snitzer:

    - DM core fixes to ensure that bio submission follows a depth-first
    tree walk; this is critical to allow forward progress without the
    need to use the bioset's BIOSET_NEED_RESCUER.

    - Remove DM core's BIOSET_NEED_RESCUER based dm_offload infrastructure.

    - DM core cleanups and improvements to make bio-based DM more efficient
    (e.g. reduced memory footprint as well leveraging per-bio-data more).

    - Introduce new bio-based mode (DM_TYPE_NVME_BIO_BASED) that leverages
    the more direct IO submission path in the block layer; this mode is
    used by DM multipath and also optimizes targets like DM thin-pool
    that stack directly on NVMe data device.

    - DM multipath improvements to factor out legacy SCSI-only (e.g.
    scsi_dh) code paths to allow for more optimized support for NVMe
    multipath.

    - A fix for DM multipath path selectors (service-time and queue-length)
    to select paths in a more balanced way; largely academic but doesn't
    hurt.

    - Numerous DM raid target fixes and improvements.

    - Add a new DM "unstriped" target that enables Intel to workaround
    firmware limitations in some NVMe drives that are striped internally
    (this target also works when stacked above the DM "striped" target).

    - Various Documentation fixes and improvements.

    - Misc cleanups and fixes across various DM infrastructure and targets
    (e.g. bufio, flakey, log-writes, snapshot).

    * tag 'for-4.16/dm-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm: (69 commits)
    dm cache: Documentation: update default migration_throttling value
    dm mpath selector: more evenly distribute ties
    dm unstripe: fix target length versus number of stripes size check
    dm thin: fix trailing semicolon in __remap_and_issue_shared_cell
    dm table: fix NVMe bio-based dm_table_determine_type() validation
    dm: various cleanups to md->queue initialization code
    dm mpath: delay the retry of a request if the target responded as busy
    dm mpath: return DM_MAPIO_DELAY_REQUEUE if QUEUE_IO or PG_INIT_REQUIRED
    dm mpath: return DM_MAPIO_REQUEUE on blk-mq rq allocation failure
    dm log writes: fix max length used for kstrndup
    dm: backfill missing calls to mutex_destroy()
    dm snapshot: use mutex instead of rw_semaphore
    dm flakey: check for null arg_name in parse_features()
    dm thin: extend thinpool status format string with omitted fields
    dm thin: fixes in thin-provisioning.txt
    dm thin: document representation of <highest mapped sector> when there is none
    dm thin: fix documentation relative to low water mark threshold
    dm cache: be consistent in specifying sectors and SI units in cache.txt
    dm cache: delete obsoleted paragraph in cache.txt
    dm cache: fix grammar in cache-policies.txt
    ...

    Linus Torvalds
     

17 Jan, 2018

1 commit


14 Dec, 2017

1 commit