Skip to content

Commit

Permalink
drbd: Minor cleanup in conn_new_minor()
Browse files Browse the repository at this point in the history
Signed-off-by: Andreas Gruenbacher <agruen@linbit.com>
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
  • Loading branch information
Andreas Gruenbacher authored and Philipp Reisner committed Feb 17, 2014
1 parent d8628a8 commit 93e4bf7
Showing 1 changed file with 9 additions and 10 deletions.
19 changes: 9 additions & 10 deletions drivers/block/drbd/drbd_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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");
}
Expand All @@ -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);
Expand Down

0 comments on commit 93e4bf7

Please sign in to comment.