Both max and min should be reset periodically. We can use the queue depth sampling poller to reset these but the queue depth sampling poller is optional. We extend the bdev_reset_iostat RPC to support mode to reset all or only max/min fields. Signed-off-by: Shuhei Matsumoto <smatsumoto@nvidia.com> Change-Id: I9ce54892f6e808f6a82754b6930092f3a16d51ff Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15444 Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: Mellanox Build Bot
39 lines
1.1 KiB
C
39 lines
1.1 KiB
C
/* SPDX-License-Identifier: BSD-3-Clause
|
|
* Copyright (C) 2019 Intel Corporation.
|
|
* All rights reserved.
|
|
*/
|
|
|
|
#ifndef SPDK_BDEV_INTERNAL_H
|
|
#define SPDK_BDEV_INTERNAL_H
|
|
|
|
#include "spdk/bdev.h"
|
|
|
|
#define ZERO_BUFFER_SIZE 0x100000
|
|
|
|
struct spdk_bdev;
|
|
struct spdk_bdev_io;
|
|
struct spdk_bdev_channel;
|
|
|
|
struct spdk_bdev_io *bdev_channel_get_io(struct spdk_bdev_channel *channel);
|
|
|
|
void bdev_io_init(struct spdk_bdev_io *bdev_io, struct spdk_bdev *bdev, void *cb_arg,
|
|
spdk_bdev_io_completion_cb cb);
|
|
|
|
void bdev_io_submit(struct spdk_bdev_io *bdev_io);
|
|
|
|
struct spdk_bdev_io_stat *bdev_io_stat_alloc(void);
|
|
void bdev_io_stat_free(struct spdk_bdev_io_stat *stat);
|
|
void bdev_io_stat_dump_json(struct spdk_bdev_io_stat *stat, struct spdk_json_write_ctx *w);
|
|
|
|
enum bdev_reset_stat_mode {
|
|
BDEV_RESET_STAT_ALL,
|
|
BDEV_RESET_STAT_MAXMIN,
|
|
};
|
|
|
|
typedef void (*bdev_reset_device_stat_cb)(struct spdk_bdev *bdev, void *cb_arg, int rc);
|
|
|
|
void bdev_reset_device_stat(struct spdk_bdev *bdev, enum bdev_reset_stat_mode mode,
|
|
bdev_reset_device_stat_cb cb, void *cb_arg);
|
|
|
|
#endif /* SPDK_BDEV_INTERNAL_H */
|