vbdev_gpt: Report memory domains
vbdev_gpt reports memory domains of its base bdev if the base bdev is not configured to check DIF refence tag since in that case bdev_part will remap reftags thereby it will touch metadata. Signed-off-by: Alexey Marchuk <alexeymar@mellanox.com> Change-Id: Ie1fee7f267c318b3cede47fbbbe9f7639571bdeb Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11050 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Community-CI: Mellanox Build Bot Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
This commit is contained in:
parent
3185d3c92f
commit
cff525d336
@ -110,11 +110,14 @@ gpt_base_bdev_hotremove_cb(void *_part_base)
|
|||||||
static int vbdev_gpt_destruct(void *ctx);
|
static int vbdev_gpt_destruct(void *ctx);
|
||||||
static void vbdev_gpt_submit_request(struct spdk_io_channel *_ch, struct spdk_bdev_io *bdev_io);
|
static void vbdev_gpt_submit_request(struct spdk_io_channel *_ch, struct spdk_bdev_io *bdev_io);
|
||||||
static int vbdev_gpt_dump_info_json(void *ctx, struct spdk_json_write_ctx *w);
|
static int vbdev_gpt_dump_info_json(void *ctx, struct spdk_json_write_ctx *w);
|
||||||
|
static int vbdev_gpt_get_memory_domains(void *ctx, struct spdk_memory_domain **domains,
|
||||||
|
int array_size);
|
||||||
|
|
||||||
static struct spdk_bdev_fn_table vbdev_gpt_fn_table = {
|
static struct spdk_bdev_fn_table vbdev_gpt_fn_table = {
|
||||||
.destruct = vbdev_gpt_destruct,
|
.destruct = vbdev_gpt_destruct,
|
||||||
.submit_request = vbdev_gpt_submit_request,
|
.submit_request = vbdev_gpt_submit_request,
|
||||||
.dump_info_json = vbdev_gpt_dump_info_json,
|
.dump_info_json = vbdev_gpt_dump_info_json,
|
||||||
|
.get_memory_domains = vbdev_gpt_get_memory_domains,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct gpt_base *
|
static struct gpt_base *
|
||||||
@ -300,6 +303,22 @@ vbdev_gpt_dump_info_json(void *ctx, struct spdk_json_write_ctx *w)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
vbdev_gpt_get_memory_domains(void *ctx, struct spdk_memory_domain **domains, int array_size)
|
||||||
|
{
|
||||||
|
struct gpt_disk *gpt_disk = SPDK_CONTAINEROF(ctx, struct gpt_disk, part);
|
||||||
|
struct spdk_bdev_part_base *part_base = spdk_bdev_part_get_base(&gpt_disk->part);
|
||||||
|
struct spdk_bdev *part_base_bdev = spdk_bdev_part_base_get_bdev(part_base);
|
||||||
|
|
||||||
|
if (part_base_bdev->dif_check_flags & SPDK_DIF_FLAGS_REFTAG_CHECK) {
|
||||||
|
/* bdev_part remaps reftag and touches metadata buffer, that means it can't support memory domains
|
||||||
|
* if dif is enabled */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return spdk_bdev_get_memory_domains(part_base_bdev, domains, array_size);
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
vbdev_gpt_create_bdevs(struct gpt_base *gpt_base)
|
vbdev_gpt_create_bdevs(struct gpt_base *gpt_base)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user