reduce: allocate 2 iovs for reduce_init_load_ctx
We will need the extra iov in the upcoming load path, so we can load the superblock and pmem file path into separate buffers. Signed-off-by: Jim Harris <james.r.harris@intel.com> Change-Id: I99cce0172bd772ca93813a002dcce6943e661f35 Reviewed-on: https://review.gerrithub.io/433087 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
This commit is contained in:
parent
d31f2be55f
commit
b8745a8403
@ -192,7 +192,7 @@ struct reduce_init_load_ctx {
|
|||||||
struct spdk_reduce_vol_cb_args backing_cb_args;
|
struct spdk_reduce_vol_cb_args backing_cb_args;
|
||||||
spdk_reduce_vol_op_with_handle_complete cb_fn;
|
spdk_reduce_vol_op_with_handle_complete cb_fn;
|
||||||
void *cb_arg;
|
void *cb_arg;
|
||||||
struct iovec iov;
|
struct iovec iov[2];
|
||||||
void *path;
|
void *path;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -212,11 +212,11 @@ _init_write_path_cpl(void *cb_arg, int ziperrno)
|
|||||||
struct spdk_reduce_vol *vol = init_ctx->vol;
|
struct spdk_reduce_vol *vol = init_ctx->vol;
|
||||||
|
|
||||||
spdk_dma_free(init_ctx->path);
|
spdk_dma_free(init_ctx->path);
|
||||||
init_ctx->iov.iov_base = vol->backing_super;
|
init_ctx->iov[0].iov_base = vol->backing_super;
|
||||||
init_ctx->iov.iov_len = sizeof(*vol->backing_super);
|
init_ctx->iov[0].iov_len = sizeof(*vol->backing_super);
|
||||||
init_ctx->backing_cb_args.cb_fn = _init_write_super_cpl;
|
init_ctx->backing_cb_args.cb_fn = _init_write_super_cpl;
|
||||||
init_ctx->backing_cb_args.cb_arg = init_ctx;
|
init_ctx->backing_cb_args.cb_arg = init_ctx;
|
||||||
vol->backing_dev->writev(vol->backing_dev, &init_ctx->iov, 1,
|
vol->backing_dev->writev(vol->backing_dev, init_ctx->iov, 1,
|
||||||
0, sizeof(*vol->backing_super) / vol->backing_dev->blocklen,
|
0, sizeof(*vol->backing_super) / vol->backing_dev->blocklen,
|
||||||
&init_ctx->backing_cb_args);
|
&init_ctx->backing_cb_args);
|
||||||
}
|
}
|
||||||
@ -358,8 +358,8 @@ spdk_reduce_vol_init(struct spdk_reduce_vol_params *params,
|
|||||||
init_ctx->cb_arg = cb_arg;
|
init_ctx->cb_arg = cb_arg;
|
||||||
|
|
||||||
memcpy(init_ctx->path, vol->pm_file.path, REDUCE_PATH_MAX);
|
memcpy(init_ctx->path, vol->pm_file.path, REDUCE_PATH_MAX);
|
||||||
init_ctx->iov.iov_base = init_ctx->path;
|
init_ctx->iov[0].iov_base = init_ctx->path;
|
||||||
init_ctx->iov.iov_len = REDUCE_PATH_MAX;
|
init_ctx->iov[0].iov_len = REDUCE_PATH_MAX;
|
||||||
init_ctx->backing_cb_args.cb_fn = _init_write_path_cpl;
|
init_ctx->backing_cb_args.cb_fn = _init_write_path_cpl;
|
||||||
init_ctx->backing_cb_args.cb_arg = init_ctx;
|
init_ctx->backing_cb_args.cb_arg = init_ctx;
|
||||||
/* Write path to offset 4K on backing device - just after where the super
|
/* Write path to offset 4K on backing device - just after where the super
|
||||||
@ -367,7 +367,7 @@ spdk_reduce_vol_init(struct spdk_reduce_vol_params *params,
|
|||||||
* super block to guarantee we don't get the super block written without the
|
* super block to guarantee we don't get the super block written without the
|
||||||
* the path if the system crashed in the middle of a write operation.
|
* the path if the system crashed in the middle of a write operation.
|
||||||
*/
|
*/
|
||||||
vol->backing_dev->writev(vol->backing_dev, &init_ctx->iov, 1,
|
vol->backing_dev->writev(vol->backing_dev, init_ctx->iov, 1,
|
||||||
REDUCE_BACKING_DEV_PATH_OFFSET / vol->backing_dev->blocklen,
|
REDUCE_BACKING_DEV_PATH_OFFSET / vol->backing_dev->blocklen,
|
||||||
REDUCE_PATH_MAX / vol->backing_dev->blocklen,
|
REDUCE_PATH_MAX / vol->backing_dev->blocklen,
|
||||||
&init_ctx->backing_cb_args);
|
&init_ctx->backing_cb_args);
|
||||||
|
Loading…
Reference in New Issue
Block a user