Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 93e4bf7a authored by Andreas Gruenbacher's avatar Andreas Gruenbacher Committed by Philipp Reisner
Browse files

drbd: Minor cleanup in conn_new_minor()

parent d8628a86
Loading
Loading
Loading
Loading
+9 −10
Original line number Diff line number Diff line
@@ -2662,8 +2662,7 @@ enum drbd_ret_code drbd_create_minor(struct drbd_connection *connection, unsigne
	struct drbd_peer_device *peer_device;
	struct gendisk *disk;
	struct request_queue *q;
	int vnr_got = vnr;
	int minor_got = minor;
	int id;
	enum drbd_ret_code err = ERR_NOMEM;

	device = minor_to_device(minor);
@@ -2735,18 +2734,18 @@ enum drbd_ret_code drbd_create_minor(struct drbd_connection *connection, unsigne
	device->read_requests = RB_ROOT;
	device->write_requests = RB_ROOT;

	minor_got = idr_alloc(&drbd_devices, device, minor, minor + 1, GFP_KERNEL);
	if (minor_got < 0) {
		if (minor_got == -ENOSPC) {
	id = idr_alloc(&drbd_devices, device, minor, minor + 1, GFP_KERNEL);
	if (id < 0) {
		if (id == -ENOSPC) {
			err = ERR_MINOR_EXISTS;
			drbd_msg_put_info("requested minor exists already");
		}
		goto out_no_minor_idr;
	}

	vnr_got = idr_alloc(&connection->volumes, device, vnr, vnr + 1, GFP_KERNEL);
	if (vnr_got < 0) {
		if (vnr_got == -ENOSPC) {
	id = idr_alloc(&connection->volumes, device, vnr, vnr + 1, GFP_KERNEL);
	if (id < 0) {
		if (id == -ENOSPC) {
			err = ERR_INVALID_REQUEST;
			drbd_msg_put_info("requested volume exists already");
		}
@@ -2770,9 +2769,9 @@ enum drbd_ret_code drbd_create_minor(struct drbd_connection *connection, unsigne
	return NO_ERROR;

out_idr_remove_vol:
	idr_remove(&connection->volumes, vnr_got);
	idr_remove(&connection->volumes, vnr);
out_idr_remove_minor:
	idr_remove(&drbd_devices, minor_got);
	idr_remove(&drbd_devices, minor);
	synchronize_rcu();
out_no_minor_idr:
	drbd_bm_cleanup(device);