rbd: return -ENOMEM instead of pool id if rbd_dev_create() fails
Returning pool id (i.e. >= 0) from a sysfs ->store() callback makes userspace think it needs to retry the write. Fix it - it's a leftover from the times when the equivalent of rbd_dev_create() was the first action in rbd_add(). Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
This commit is contained in:
parent
343128ce91
commit
b51c83c241
1 changed files with 4 additions and 2 deletions
|
@ -5397,7 +5397,7 @@ static ssize_t do_rbd_add(struct bus_type *bus,
|
|||
struct rbd_spec *spec = NULL;
|
||||
struct rbd_client *rbdc;
|
||||
bool read_only;
|
||||
int rc = -ENOMEM;
|
||||
int rc;
|
||||
|
||||
if (!try_module_get(THIS_MODULE))
|
||||
return -ENODEV;
|
||||
|
@ -5432,8 +5432,10 @@ static ssize_t do_rbd_add(struct bus_type *bus,
|
|||
}
|
||||
|
||||
rbd_dev = rbd_dev_create(rbdc, spec, rbd_opts);
|
||||
if (!rbd_dev)
|
||||
if (!rbd_dev) {
|
||||
rc = -ENOMEM;
|
||||
goto err_out_client;
|
||||
}
|
||||
rbdc = NULL; /* rbd_dev now owns this */
|
||||
spec = NULL; /* rbd_dev now owns this */
|
||||
rbd_opts = NULL; /* rbd_dev now owns this */
|
||||
|
|
Loading…
Reference in a new issue