block-6.0-2022-09-22
-----BEGIN PGP SIGNATURE----- iQJEBAABCAAuFiEEwPw5LcreJtl1+l5K99NY+ylx4KYFAmMs/PgQHGF4Ym9lQGtl cm5lbC5kawAKCRD301j7KXHgpml9D/wOZVaE/eofmZBWcnl+ZmYtdWQ+N8nv8a2D dqLR+OBe/w/6oBMnf2VzgzXpCrI+ZgW7z6uMCKpJa8FvcvB4KnB+UcBS5FQgaAdm Zbs7LJGe7p7lZahwCgjFfeN1L2gYya9vM19QgrSxAUsy3mZCjJpOi644YsNC397C 9+NwzMS6LS2KGHUlZTYL+M8iVBEehuR9oexrHbqhWAm7NaMtMKJGNvPvbt7G3bkl 1RnHmOtLJh1vyD1TxVj0OxCmJ719igFUJHgtAgFLkMVRVli224tAu5lMRZ7kR7IU l2IJzSM/4af1UjVeMAcXoZp1kht+ks/SEvpT8auh3y44teXsTBCxKQpoUE5n+U7v 737UJN2iZSFi9ahUbg8FgxDu+rmW/Et4G3vptWnVcmAGEd+OOSfdKNhj/oskLdLS /YioBL9uDvUQDETxbPcnfCN5ySziKXPwRvtobGyjrzHyuCaP9eutFXnwpdW+FAED 9cMyPKFbnnrDlvKfHOybxwWsvGNlNMMeueNglVJ/XUkZhGzizlHhD1+CAgxXa0u5 q8eXpe/y2TtCrl9q3lPKJvoBZ1KVE2cxyK/w17venwcMNb8quy6Yf3FdedlkS04N rXzEJCSELnkT4F7siii4R9VrcoVU7qUJHA3kLFsNxvNXhwdM2koLa+4gZXfpIn4A dVHjIuo54Q== =Z0yq -----END PGP SIGNATURE----- Merge tag 'block-6.0-2022-09-22' of git://git.kernel.dk/linux Pull block fixes from Jens Axboe: "Fix a regression that's been plaguing us by reverting the offending commit, as attempts to both reproduce the issue and fix it in a saner fashion have failed. Fix for a potential oops condition in the s390 dasd block driver" * tag 'block-6.0-2022-09-22' of git://git.kernel.dk/linux: Revert "block: freeze the queue earlier in del_gendisk" s390/dasd: fix Oops in dasd_alias_get_start_dev due to missing pavgroup
This commit is contained in:
commit
0be27f7be2
2 changed files with 9 additions and 3 deletions
|
@ -602,7 +602,6 @@ void del_gendisk(struct gendisk *disk)
|
||||||
* Prevent new I/O from crossing bio_queue_enter().
|
* Prevent new I/O from crossing bio_queue_enter().
|
||||||
*/
|
*/
|
||||||
blk_queue_start_drain(q);
|
blk_queue_start_drain(q);
|
||||||
blk_mq_freeze_queue_wait(q);
|
|
||||||
|
|
||||||
if (!(disk->flags & GENHD_FL_HIDDEN)) {
|
if (!(disk->flags & GENHD_FL_HIDDEN)) {
|
||||||
sysfs_remove_link(&disk_to_dev(disk)->kobj, "bdi");
|
sysfs_remove_link(&disk_to_dev(disk)->kobj, "bdi");
|
||||||
|
@ -626,6 +625,8 @@ void del_gendisk(struct gendisk *disk)
|
||||||
pm_runtime_set_memalloc_noio(disk_to_dev(disk), false);
|
pm_runtime_set_memalloc_noio(disk_to_dev(disk), false);
|
||||||
device_del(disk_to_dev(disk));
|
device_del(disk_to_dev(disk));
|
||||||
|
|
||||||
|
blk_mq_freeze_queue_wait(q);
|
||||||
|
|
||||||
blk_throtl_cancel_bios(disk->queue);
|
blk_throtl_cancel_bios(disk->queue);
|
||||||
|
|
||||||
blk_sync_queue(q);
|
blk_sync_queue(q);
|
||||||
|
|
|
@ -675,12 +675,12 @@ int dasd_alias_remove_device(struct dasd_device *device)
|
||||||
struct dasd_device *dasd_alias_get_start_dev(struct dasd_device *base_device)
|
struct dasd_device *dasd_alias_get_start_dev(struct dasd_device *base_device)
|
||||||
{
|
{
|
||||||
struct dasd_eckd_private *alias_priv, *private = base_device->private;
|
struct dasd_eckd_private *alias_priv, *private = base_device->private;
|
||||||
struct alias_pav_group *group = private->pavgroup;
|
|
||||||
struct alias_lcu *lcu = private->lcu;
|
struct alias_lcu *lcu = private->lcu;
|
||||||
struct dasd_device *alias_device;
|
struct dasd_device *alias_device;
|
||||||
|
struct alias_pav_group *group;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
if (!group || !lcu)
|
if (!lcu)
|
||||||
return NULL;
|
return NULL;
|
||||||
if (lcu->pav == NO_PAV ||
|
if (lcu->pav == NO_PAV ||
|
||||||
lcu->flags & (NEED_UAC_UPDATE | UPDATE_PENDING))
|
lcu->flags & (NEED_UAC_UPDATE | UPDATE_PENDING))
|
||||||
|
@ -697,6 +697,11 @@ struct dasd_device *dasd_alias_get_start_dev(struct dasd_device *base_device)
|
||||||
}
|
}
|
||||||
|
|
||||||
spin_lock_irqsave(&lcu->lock, flags);
|
spin_lock_irqsave(&lcu->lock, flags);
|
||||||
|
group = private->pavgroup;
|
||||||
|
if (!group) {
|
||||||
|
spin_unlock_irqrestore(&lcu->lock, flags);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
alias_device = group->next;
|
alias_device = group->next;
|
||||||
if (!alias_device) {
|
if (!alias_device) {
|
||||||
if (list_empty(&group->aliaslist)) {
|
if (list_empty(&group->aliaslist)) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue