Line data Source code
1 : /* SPDX-License-Identifier: GPL-2.0 */ 2 : #ifndef DM_STATS_H 3 : #define DM_STATS_H 4 : 5 : #include <linux/types.h> 6 : #include <linux/mutex.h> 7 : #include <linux/list.h> 8 : 9 : int dm_statistics_init(void); 10 : void dm_statistics_exit(void); 11 : 12 : struct dm_stats { 13 : struct mutex mutex; 14 : struct list_head list; /* list of struct dm_stat */ 15 : struct dm_stats_last_position __percpu *last; 16 : sector_t last_sector; 17 : unsigned last_rw; 18 : }; 19 : 20 : struct dm_stats_aux { 21 : bool merged; 22 : unsigned long long duration_ns; 23 : }; 24 : 25 : void dm_stats_init(struct dm_stats *st); 26 : void dm_stats_cleanup(struct dm_stats *st); 27 : 28 : struct mapped_device; 29 : 30 : int dm_stats_message(struct mapped_device *md, unsigned argc, char **argv, 31 : char *result, unsigned maxlen); 32 : 33 : void dm_stats_account_io(struct dm_stats *stats, unsigned long bi_rw, 34 : sector_t bi_sector, unsigned bi_sectors, bool end, 35 : unsigned long duration_jiffies, 36 : struct dm_stats_aux *aux); 37 : 38 0 : static inline bool dm_stats_used(struct dm_stats *st) 39 : { 40 0 : return !list_empty(&st->list); 41 : } 42 : 43 : #endif