lkml.org 
[lkml]   [2018]   [Mar]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 34/67] libnvdimm, {btt, blk}: do integrity setup before add_disk()
    Date
    4.9-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Vishal Verma <vishal.l.verma@intel.com>

    commit 3ffb0ba9b567a8efb9a04ed3d1ec15ff333ada22 upstream.

    Prior to 25520d55cdb6 ("block: Inline blk_integrity in struct gendisk")
    we needed to temporarily add a zero-capacity disk before registering for
    blk-integrity. But adding a zero-capacity disk caused the partition
    table scanning to bail early, and this resulted in partitions not coming
    up after a probe of the BTT or blk namespaces.

    We can now register for integrity before the disk has been added, and
    this fixes the rescan problems.

    Fixes: 25520d55cdb6 ("block: Inline blk_integrity in struct gendisk")
    Reported-by: Dariusz Dokupil <dariusz.dokupil@intel.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/nvdimm/blk.c | 3 +--
    drivers/nvdimm/btt.c | 3 +--
    2 files changed, 2 insertions(+), 4 deletions(-)

    --- a/drivers/nvdimm/blk.c
    +++ b/drivers/nvdimm/blk.c
    @@ -286,8 +286,6 @@ static int nsblk_attach_disk(struct nd_n
    disk->queue = q;
    disk->flags = GENHD_FL_EXT_DEVT;
    nvdimm_namespace_disk_name(&nsblk->common, disk->disk_name);
    - set_capacity(disk, 0);
    - device_add_disk(dev, disk);

    if (devm_add_action_or_reset(dev, nd_blk_release_disk, disk))
    return -ENOMEM;
    @@ -300,6 +298,7 @@ static int nsblk_attach_disk(struct nd_n
    }

    set_capacity(disk, available_disk_size >> SECTOR_SHIFT);
    + device_add_disk(dev, disk);
    revalidate_disk(disk);
    return 0;
    }
    --- a/drivers/nvdimm/btt.c
    +++ b/drivers/nvdimm/btt.c
    @@ -1392,8 +1392,6 @@ static int btt_blk_init(struct btt *btt)
    queue_flag_set_unlocked(QUEUE_FLAG_NONROT, btt->btt_queue);
    btt->btt_queue->queuedata = btt;

    - set_capacity(btt->btt_disk, 0);
    - device_add_disk(&btt->nd_btt->dev, btt->btt_disk);
    if (btt_meta_size(btt)) {
    int rc = nd_integrity_init(btt->btt_disk, btt_meta_size(btt));

    @@ -1405,6 +1403,7 @@ static int btt_blk_init(struct btt *btt)
    }
    }
    set_capacity(btt->btt_disk, btt->nlba * btt->sector_size >> 9);
    + device_add_disk(&btt->nd_btt->dev, btt->btt_disk);
    btt->nd_btt->size = btt->nlba * (u64)btt->sector_size;
    revalidate_disk(btt->btt_disk);


    \
     
     \ /
      Last update: 2018-03-27 18:32    [W:2.969 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site