lkml.org 
[lkml]   [2017]   [Nov]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 140/193] libnvdimm, dimm: clear locked status on successful DIMM enable
    Date
    4.14-stable review patch.  If anyone has any objections, please let me know.

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

    From: Dan Williams <dan.j.williams@intel.com>

    commit d34cb808402898e53b9a9bcbbedd01667a78723b upstream.

    If we successfully enable a DIMM then it must not be locked and we can
    clear the label-read failure condition. Otherwise, we need to reload the
    entire bus provider driver to achieve the same effect, and that can
    disrupt unrelated DIMMs and namespaces.

    Fixes: 9d62ed965118 ("libnvdimm: handle locked label storage areas")
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/nvdimm/dimm.c | 1 +
    drivers/nvdimm/dimm_devs.c | 7 +++++++
    drivers/nvdimm/nd.h | 1 +
    3 files changed, 9 insertions(+)

    --- a/drivers/nvdimm/dimm.c
    +++ b/drivers/nvdimm/dimm.c
    @@ -68,6 +68,7 @@ static int nvdimm_probe(struct device *d
    rc = nd_label_reserve_dpa(ndd);
    if (ndd->ns_current >= 0)
    nvdimm_set_aliasing(dev);
    + nvdimm_clear_locked(dev);
    nvdimm_bus_unlock(dev);

    if (rc)
    --- a/drivers/nvdimm/dimm_devs.c
    +++ b/drivers/nvdimm/dimm_devs.c
    @@ -200,6 +200,13 @@ void nvdimm_set_locked(struct device *de
    set_bit(NDD_LOCKED, &nvdimm->flags);
    }

    +void nvdimm_clear_locked(struct device *dev)
    +{
    + struct nvdimm *nvdimm = to_nvdimm(dev);
    +
    + clear_bit(NDD_LOCKED, &nvdimm->flags);
    +}
    +
    static void nvdimm_release(struct device *dev)
    {
    struct nvdimm *nvdimm = to_nvdimm(dev);
    --- a/drivers/nvdimm/nd.h
    +++ b/drivers/nvdimm/nd.h
    @@ -254,6 +254,7 @@ long nvdimm_clear_poison(struct device *
    unsigned int len);
    void nvdimm_set_aliasing(struct device *dev);
    void nvdimm_set_locked(struct device *dev);
    +void nvdimm_clear_locked(struct device *dev);
    struct nd_btt *to_nd_btt(struct device *dev);

    struct nd_gen_sb {

    \
     
     \ /
      Last update: 2017-11-28 12:11    [W:4.120 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site