]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
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 4919b2dfd1b391c4169de1b66f5e78bd9ba2d9cc..6f5ef944ca4c8fcdbe9ce8cb06b0bddf0bcdfe59 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 8a8b48fa901ab162696d89c94679d78bff6f7d9c..8289804ccd998a1d4d9be9fce2a32bd4bfa6cad8 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 061aca3a962d73a8f9323b6920230d9895a3eb29..d34611e35a30f10995d19cc4ae80aeb4a9547211 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 */