dm stats: report precise_timestamps and histogram in @stats_list output
authorMikulas Patocka <mpatocka@redhat.com>
Tue, 18 Aug 2015 20:26:16 +0000 (16:26 -0400)
committerMike Snitzer <snitzer@redhat.com>
Tue, 18 Aug 2015 21:20:03 +0000 (17:20 -0400)
If the user selected the precise_timestamps or histogram options, report
it in the @stats_list message output.

If the user didn't select these options, no extra tokens are reported,
thus it is backward compatible with old software that doesn't know about
precise timestamps and histogram.

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Cc: stable@vger.kernel.org # 4.2
Documentation/device-mapper/statistics.txt
drivers/md/dm-stats.c
include/uapi/linux/dm-ioctl.h

index 4919b2d..6f5ef94 100644 (file)
@@ -121,6 +121,10 @@ Messages
 
        Output format:
          <region_id>: <start_sector>+<length> <step> <program_id> <aux_data>
+               precise_timestamps histogram:n1,n2,n3,...
+
+       The strings "precise_timestamps" and "histogram" are printed only
+       if they were specified when creating the region.
 
     @stats_print <region_id> [<starting_line> <number_of_lines>]
 
index 8a8b48f..8289804 100644 (file)
@@ -457,12 +457,24 @@ static int dm_stats_list(struct dm_stats *stats, const char *program,
        list_for_each_entry(s, &stats->list, list_entry) {
                if (!program || !strcmp(program, s->program_id)) {
                        len = s->end - s->start;
-                       DMEMIT("%d: %llu+%llu %llu %s %s\n", s->id,
+                       DMEMIT("%d: %llu+%llu %llu %s %s", s->id,
                                (unsigned long long)s->start,
                                (unsigned long long)len,
                                (unsigned long long)s->step,
                                s->program_id,
                                s->aux_data);
+                       if (s->stat_flags & STAT_PRECISE_TIMESTAMPS)
+                               DMEMIT(" precise_timestamps");
+                       if (s->n_histogram_entries) {
+                               unsigned i;
+                               DMEMIT(" histogram:");
+                               for (i = 0; i < s->n_histogram_entries; i++) {
+                                       if (i)
+                                               DMEMIT(",");
+                                       DMEMIT("%llu", s->histogram_boundaries[i]);
+                               }
+                       }
+                       DMEMIT("\n");
                }
        }
        mutex_unlock(&stats->mutex);
index 061aca3..d34611e 100644 (file)
@@ -267,9 +267,9 @@ enum {
 #define DM_DEV_SET_GEOMETRY    _IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl)
 
 #define DM_VERSION_MAJOR       4
-#define DM_VERSION_MINOR       32
+#define DM_VERSION_MINOR       33
 #define DM_VERSION_PATCHLEVEL  0
-#define DM_VERSION_EXTRA       "-ioctl (2015-6-26)"
+#define DM_VERSION_EXTRA       "-ioctl (2015-8-18)"
 
 /* Status bits */
 #define DM_READONLY_FLAG       (1 << 0) /* In/Out */