File bsc-1192929_07-add_disk_error_handle.patch of Package drbd.38597

/* {"version":"v5.16-rc1~73", "commit": "e92ab4eda516a5bfd96c087282ebe9521deba4f4", "comment": "drbd: add error handling support for add_disk()"} */

diff -Naur drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd_main.c drbd-9.0.30~1+git.8e9c0812/drbd/drbd_main.c
--- drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd_main.c	2021-11-19 15:36:33.405592808 +0800
+++ drbd-9.0.30~1+git.8e9c0812/drbd/drbd_main.c	2021-11-19 15:43:32.799929686 +0800
@@ -3794,7 +3794,10 @@
 		goto out_remove_peer_device;
 	}
 
-	add_disk(disk);
+	err = add_disk(disk);
+	if (err)
+		goto out_cleanup_disk;
+
 	device->have_quorum[OLD] =
 	device->have_quorum[NEW] =
 		(resource->res_opts.quorum == QOU_OFF);
@@ -3811,6 +3814,8 @@
 	*p_device = device;
 	return NO_ERROR;
 
+out_cleanup_disk:
+	blk_cleanup_disk(disk);
 out_remove_peer_device:
 	list_add_rcu(&tmp, &device->peer_devices);
 	list_del_init(&device->peer_devices);
openSUSE Build Service is sponsored by