bdev: Add function pointers to display and reset module specific I/O statistics
However, when querying or resetting module specific statistics, the generic bdev layer have to access it. For this purpose, add functions pointers. Signed-off-by: Shuhei Matsumoto <smatsumoto@nvidia.com> Change-Id: Ie86d0a4a406cec7e0f1e9a62de5982cd3d877eae Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/14839 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com>
This commit is contained in:
parent
53a9a8c4d1
commit
8c439a6799
@ -47,6 +47,10 @@ that no internal bdev locks can be held when a poller or message goes off CPU.
|
||||
A new RPC `bdev_reset_iostat` was added to reset I/O statistics of bdevs. Note that if one
|
||||
consumer reset I/O statistics, it affects all other consumers.
|
||||
|
||||
Add function pointers, `dump_device_stat_json` and `reset_device_stat` to the bdev module
|
||||
function table to display and reset I/O statistics specific for the module specific bdev
|
||||
context.
|
||||
|
||||
### event
|
||||
|
||||
Added core lock file mechanism to prevent the same CPU cores from being used by multiple
|
||||
|
@ -247,6 +247,16 @@ struct spdk_bdev_fn_table {
|
||||
* Vbdev module must inspect types of memory domains returned by base bdev and report only those
|
||||
* memory domains that it can work with. */
|
||||
int (*get_memory_domains)(void *ctx, struct spdk_memory_domain **domains, int array_size);
|
||||
|
||||
/**
|
||||
* Reset I/O statistics specific for this bdev context.
|
||||
*/
|
||||
void (*reset_device_stat)(void *ctx);
|
||||
|
||||
/**
|
||||
* Dump I/O statistics specific for this bdev context.
|
||||
*/
|
||||
void (*dump_device_stat_json)(void *ctx, struct spdk_json_write_ctx *w);
|
||||
};
|
||||
|
||||
/** bdev I/O completion status */
|
||||
|
@ -277,6 +277,12 @@ bdev_get_iostat_done(struct spdk_bdev *bdev, struct spdk_bdev_io_stat *stat,
|
||||
spdk_bdev_get_weighted_io_time(bdev));
|
||||
}
|
||||
|
||||
if (bdev->fn_table->dump_device_stat_json) {
|
||||
spdk_json_write_named_object_begin(w, "driver_specific");
|
||||
bdev->fn_table->dump_device_stat_json(bdev->ctxt, w);
|
||||
spdk_json_write_object_end(w);
|
||||
}
|
||||
|
||||
spdk_json_write_object_end(w);
|
||||
|
||||
done:
|
||||
@ -526,6 +532,10 @@ bdev_reset_iostat(void *ctx, struct spdk_bdev *bdev)
|
||||
return rc;
|
||||
}
|
||||
|
||||
if (bdev->fn_table->reset_device_stat) {
|
||||
bdev->fn_table->reset_device_stat(bdev->ctxt);
|
||||
}
|
||||
|
||||
rpc_ctx->bdev_count++;
|
||||
bdev_ctx->rpc_ctx = rpc_ctx;
|
||||
bdev_reset_device_stat(bdev, rpc_ctx->mode, bdev_reset_iostat_done, bdev_ctx);
|
||||
|
Loading…
Reference in New Issue
Block a user