@@ -8,14 +8,30 @@ use crate::{
88 ffihelper:: { cb_arg, done_errno_cb, errno_error, errno_result_from_i32, ErrnoResult } ,
99 libspdk:: {
1010 bdev_reset_device_stat, spdk_bdev, spdk_bdev_get_device_stat, spdk_bdev_io_stat,
11- spdk_bdev_unregister, SPDK_BDEV_RESET_STAT_ALL , SPDK_BDEV_RESET_STAT_NONE ,
11+ spdk_bdev_unregister,
1212 } ,
1313 Bdev , BdevOps ,
1414} ;
1515
1616/// TODO
1717pub type BdevStats = spdk_bdev_io_stat ;
1818
19+ /// Bdev Stat reset mode.
20+ pub enum BdevStatsResetMode {
21+ All ,
22+ MaxMin ,
23+ Errors ,
24+ }
25+ impl From < BdevStatsResetMode > for crate :: libspdk:: spdk_bdev_reset_stat_mode {
26+ fn from ( value : BdevStatsResetMode ) -> Self {
27+ match value {
28+ BdevStatsResetMode :: All => crate :: libspdk:: SPDK_BDEV_RESET_STAT_ALL ,
29+ BdevStatsResetMode :: MaxMin => crate :: libspdk:: SPDK_BDEV_RESET_STAT_MAXMIN ,
30+ BdevStatsResetMode :: Errors => crate :: libspdk:: SPDK_BDEV_RESET_STAT_ERROR ,
31+ }
32+ }
33+ }
34+
1935/// TODO
2036pub struct BdevAsyncCallContext {
2137 /// TODO
86102 spdk_bdev_get_device_stat (
87103 self . as_inner_ptr ( ) ,
88104 & mut stat as * mut _ ,
89- SPDK_BDEV_RESET_STAT_NONE ,
105+ crate :: libspdk :: SPDK_BDEV_RESET_STAT_NONE ,
90106 Some ( inner_stats_callback) ,
91107 cb_arg ( s) ,
92108 ) ;
@@ -98,14 +114,14 @@ where
98114
99115 /// This function resets all stat counters for a given Bdev.
100116 /// Returns Errno in case of an error.
101- pub async fn stats_reset_async ( & self ) -> ErrnoResult < ( ) > {
117+ pub async fn stats_reset_async ( & self , reset_mode : BdevStatsResetMode ) -> ErrnoResult < ( ) > {
102118 let ( s, r) = oneshot:: channel :: < i32 > ( ) ;
103119 // This will iterate over I/O channels to reset IOStats and call async
104120 // callback when done.
105121 unsafe {
106122 bdev_reset_device_stat (
107123 self . as_inner_ptr ( ) ,
108- SPDK_BDEV_RESET_STAT_ALL ,
124+ reset_mode . into ( ) ,
109125 Some ( inner_stats_reset_callback) ,
110126 cb_arg ( s) ,
111127 ) ;
0 commit comments