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

Commit d97081b0 authored by Alex Elder's avatar Alex Elder
Browse files

rbd: move ctl_mutex lock inside rbd_get_client()



Since rbd_get_client() is only called in one place, move the
acquisition of the mutex around that call inside that function.

Furthermore, within rbd_get_client(), it appears the mutex only
needs to be held while calling rbd_client_create().  (Moving
the lock inside that function will wait for the next patch.)

Signed-off-by: default avatarAlex Elder <elder@dreamhost.com>
Signed-off-by: default avatarSage Weil <sage@newdream.net>
parent e6994d3d
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -396,7 +396,10 @@ static int rbd_get_client(struct rbd_device *rbd_dev, const char *mon_addr,
	}
	spin_unlock(&node_lock);

	mutex_lock_nested(&ctl_mutex, SINGLE_DEPTH_NESTING);
	rbdc = rbd_client_create(opt, rbd_opts);
	mutex_unlock(&ctl_mutex);

	if (IS_ERR(rbdc)) {
		ret = PTR_ERR(rbdc);
		goto done_err;
@@ -2276,10 +2279,7 @@ static ssize_t rbd_add(struct bus_type *bus,
	/* initialize rest of new object */
	snprintf(rbd_dev->name, DEV_NAME_LEN, DRV_NAME "%d", rbd_dev->id);

	mutex_lock_nested(&ctl_mutex, SINGLE_DEPTH_NESTING);
	rc = rbd_get_client(rbd_dev, mon_dev_name, options);
	mutex_unlock(&ctl_mutex);

	if (rc < 0)
		goto err_out_slot;