• Stefan Haberland's avatar
    s390/dasd: prevent double format of tracks for ESE devices · 71f38716
    Stefan Haberland authored
    For ESE devices we get an error for write operations on an unformatted
    track. Afterwards the track will be formatted and the IO operation
    restarted.
    When using alias devices a track might be accessed by multiple requests
    simultaneously and there is a race window that a track gets formatted
    twice resulting in data loss.
    
    Prevent this by remembering the amount of formatted tracks when starting
    a request and comparing this number before actually formatting a track
    on the fly. If the number has changed there is a chance that the current
    track was finally formatted in between. As a result do not format the
    track and restart the current IO to check.
    
    The number of formatted tracks does not match the overall number of
    formatted tracks on the device and it might wrap around but this is no
    problem. It is only needed to recognize that a track has been formatted at
    all in between.
    
    Fixes: 5e2b17e7 ("s390/dasd: Add dynamic formatting support for ESE volumes")
    Cc: stable@vger.kernel.org # 5.3+
    Signed-off-by: default avatarStefan Haberland <sth@linux.ibm.com>
    Reviewed-by: default avatarJan Hoeppner <hoeppner@linux.ibm.com>
    Link: https://lore.kernel.org/r/20220505141733.1989450-3-sth@linux.ibm.comSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
    71f38716
dasd_eckd.c 183 KB