lkml.org 
[lkml]   [2020]   [Dec]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 556/717] s390/dasd: prevent inconsistent LCU device data
    Date
    From: Stefan Haberland <sth@linux.ibm.com>

    commit a29ea01653493b94ea12bb2b89d1564a265081b6 upstream.

    Prevent _lcu_update from adding a device to a pavgroup if the LCU still
    requires an update. The data is not reliable any longer and in parallel
    devices might have been moved on the lists already.
    This might lead to list corruptions or invalid PAV grouping.
    Only add devices to a pavgroup if the LCU is up to date. Additional steps
    are taken by the scheduled lcu update.

    Fixes: 8e09f21574ea ("[S390] dasd: add hyper PAV support to DASD device driver, part 1")
    Cc: stable@vger.kernel.org
    Signed-off-by: Stefan Haberland <sth@linux.ibm.com>
    Reviewed-by: Jan Hoeppner <hoeppner@linux.ibm.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/s390/block/dasd_alias.c | 9 +++++++++
    1 file changed, 9 insertions(+)

    --- a/drivers/s390/block/dasd_alias.c
    +++ b/drivers/s390/block/dasd_alias.c
    @@ -511,6 +511,14 @@ static int _lcu_update(struct dasd_devic
    return rc;

    spin_lock_irqsave(&lcu->lock, flags);
    + /*
    + * there is another update needed skip the remaining handling
    + * the data might already be outdated
    + * but especially do not add the device to an LCU with pending
    + * update
    + */
    + if (lcu->flags & NEED_UAC_UPDATE)
    + goto out;
    lcu->pav = NO_PAV;
    for (i = 0; i < MAX_DEVICES_PER_LCU; ++i) {
    switch (lcu->uac->unit[i].ua_type) {
    @@ -529,6 +537,7 @@ static int _lcu_update(struct dasd_devic
    alias_list) {
    _add_device_to_lcu(lcu, device, refdev);
    }
    +out:
    spin_unlock_irqrestore(&lcu->lock, flags);
    return 0;
    }

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