dasd: also call __invalidate_device when setting the device offline
authorChristoph Hellwig <hch@lst.de>
Fri, 11 Aug 2023 10:08:22 +0000 (12:08 +0200)
committerChristian Brauner <brauner@kernel.org>
Mon, 21 Aug 2023 12:35:31 +0000 (14:35 +0200)
Don't just write out the data, but also invalidate all caches when setting
the device offline.  Stop canceling the offlining when writeback fails
as there is no way to recover from that anyway.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Message-Id: <20230811100828.1897174-12-hch@lst.de>
Signed-off-by: Christian Brauner <brauner@kernel.org>
drivers/s390/block/dasd.c

index edcbf77852c31ff38f85ede69dbf1aa19d7f008f..675b38ad00dc9eca1b3a443e71cb66269ac5a8fc 100644 (file)
@@ -3627,9 +3627,8 @@ int dasd_generic_set_offline(struct ccw_device *cdev)
                 * empty
                 */
                if (device->block) {
-                       rc = fsync_bdev(device->block->bdev);
-                       if (rc != 0)
-                               goto interrupted;
+                       fsync_bdev(device->block->bdev);
+                       __invalidate_device(device->block->bdev, true);
                }
                dasd_schedule_device_bh(device);
                rc = wait_event_interruptible(shutdown_waitq,