mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 03:44:45 +01:00
s390/dasd: Fix gendisk parent after copy pair swap
After a copy pair swap the block device's "device" symlink points to
the secondary CCW device, but the gendisk's parent remained the
primary, leaving /sys/block/<dasdx> under the wrong parent.
Move the gendisk to the secondary's device with device_move(), keeping
the sysfs topology consistent after the swap.
Fixes: 413862caad ("s390/dasd: add copy pair swap capability")
Cc: stable@vger.kernel.org #6.1
Reviewed-by: Jan Hoeppner <hoeppner@linux.ibm.com>
Signed-off-by: Stefan Haberland <sth@linux.ibm.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
7d09a8e251
commit
c943bfc6af
1 changed files with 8 additions and 0 deletions
|
|
@ -6150,6 +6150,7 @@ static int dasd_eckd_copy_pair_swap(struct dasd_device *device, char *prim_busid
|
|||
struct dasd_copy_relation *copy;
|
||||
struct dasd_block *block;
|
||||
struct gendisk *gdp;
|
||||
int rc;
|
||||
|
||||
copy = device->copy;
|
||||
if (!copy)
|
||||
|
|
@ -6184,6 +6185,13 @@ static int dasd_eckd_copy_pair_swap(struct dasd_device *device, char *prim_busid
|
|||
/* swap blocklayer device link */
|
||||
gdp = block->gdp;
|
||||
dasd_add_link_to_gendisk(gdp, secondary);
|
||||
rc = device_move(disk_to_dev(gdp), &secondary->cdev->dev, DPM_ORDER_NONE);
|
||||
if (rc) {
|
||||
dev_err(&primary->cdev->dev,
|
||||
"copy_pair_swap: moving blockdevice parent %s->%s failed (%d)\n",
|
||||
dev_name(&primary->cdev->dev),
|
||||
dev_name(&secondary->cdev->dev), rc);
|
||||
}
|
||||
|
||||
/* re-enable device */
|
||||
dasd_device_remove_stop_bits(primary, DASD_STOPPED_PPRC);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue