Skip to content

Commit

Permalink
rbd: move rbd_dev_refresh() definition
Browse files Browse the repository at this point in the history
Move rbd_dev_refresh() definition further down to avoid having to
move struct parent_image_info definition in the next commit.  This
spares some forward declarations too.

Signed-off-by: Ilya Dryomov <[email protected]>
Reviewed-by: Dongsheng Yang <[email protected]>
  • Loading branch information
idryomov committed Sep 26, 2023
1 parent d57125b commit 0b03540
Showing 1 changed file with 33 additions and 35 deletions.
68 changes: 33 additions & 35 deletions drivers/block/rbd.c
Original file line number Diff line number Diff line change
Expand Up @@ -633,8 +633,6 @@ static void rbd_dev_remove_parent(struct rbd_device *rbd_dev);

static int rbd_dev_refresh(struct rbd_device *rbd_dev);
static int rbd_dev_v2_header_onetime(struct rbd_device *rbd_dev);
static int rbd_dev_header_info(struct rbd_device *rbd_dev);
static int rbd_dev_v2_parent_info(struct rbd_device *rbd_dev);
static const char *rbd_dev_v2_snap_name(struct rbd_device *rbd_dev,
u64 snap_id);
static int _rbd_dev_v2_snap_size(struct rbd_device *rbd_dev, u64 snap_id,
Expand Down Expand Up @@ -4931,39 +4929,6 @@ static void rbd_dev_update_size(struct rbd_device *rbd_dev)
}
}

static int rbd_dev_refresh(struct rbd_device *rbd_dev)
{
u64 mapping_size;
int ret;

down_write(&rbd_dev->header_rwsem);
mapping_size = rbd_dev->mapping.size;

ret = rbd_dev_header_info(rbd_dev);
if (ret)
goto out;

/*
* If there is a parent, see if it has disappeared due to the
* mapped image getting flattened.
*/
if (rbd_dev->parent) {
ret = rbd_dev_v2_parent_info(rbd_dev);
if (ret)
goto out;
}

rbd_assert(!rbd_is_snap(rbd_dev));
rbd_dev->mapping.size = rbd_dev->header.image_size;

out:
up_write(&rbd_dev->header_rwsem);
if (!ret && mapping_size != rbd_dev->mapping.size)
rbd_dev_update_size(rbd_dev);

return ret;
}

static const struct blk_mq_ops rbd_mq_ops = {
.queue_rq = rbd_queue_rq,
};
Expand Down Expand Up @@ -7043,6 +7008,39 @@ static int rbd_dev_image_probe(struct rbd_device *rbd_dev, int depth)
return ret;
}

static int rbd_dev_refresh(struct rbd_device *rbd_dev)
{
u64 mapping_size;
int ret;

down_write(&rbd_dev->header_rwsem);
mapping_size = rbd_dev->mapping.size;

ret = rbd_dev_header_info(rbd_dev);
if (ret)
goto out;

/*
* If there is a parent, see if it has disappeared due to the
* mapped image getting flattened.
*/
if (rbd_dev->parent) {
ret = rbd_dev_v2_parent_info(rbd_dev);
if (ret)
goto out;
}

rbd_assert(!rbd_is_snap(rbd_dev));
rbd_dev->mapping.size = rbd_dev->header.image_size;

out:
up_write(&rbd_dev->header_rwsem);
if (!ret && mapping_size != rbd_dev->mapping.size)
rbd_dev_update_size(rbd_dev);

return ret;
}

static ssize_t do_rbd_add(const char *buf, size_t count)
{
struct rbd_device *rbd_dev = NULL;
Expand Down

0 comments on commit 0b03540

Please sign in to comment.