summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile1
-rw-r--r--bcache-super-show.c34
-rw-r--r--bcache.h2
3 files changed, 36 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index efeac03..1f3caa4 100644
--- a/Makefile
+++ b/Makefile
@@ -22,4 +22,5 @@ make-bcache: CFLAGS += `pkg-config --cflags uuid blkid`
make-bcache: bcache.o
probe-bcache: LDLIBS += `pkg-config --libs uuid`
bcache-super-show: LDLIBS += `pkg-config --libs uuid`
+bcache-super-show: CFLAGS += -std=gnu99
bcache-super-show: bcache.o
diff --git a/bcache-super-show.c b/bcache-super-show.c
index c00d22e..26cc40e 100644
--- a/bcache-super-show.c
+++ b/bcache-super-show.c
@@ -4,6 +4,7 @@
* GPLv2
*/
+
#define _FILE_OFFSET_BITS 64
#define __USE_FILE_OFFSET64
#define _XOPEN_SOURCE 500
@@ -32,6 +33,29 @@ static void usage()
}
+static bool accepted_char(char c)
+{
+ if ('0' <= c && c <= '9')
+ return true;
+ if ('A' <= c && c <= 'Z')
+ return true;
+ if ('a' <= c && c <= 'z')
+ return true;
+ if (strchr(".-_", c))
+ return true;
+ return false;
+}
+
+static void print_encode(char* in)
+{
+ for (char* pos = in; *pos; pos++)
+ if (accepted_char(*pos))
+ putchar(*pos);
+ else
+ printf("%%%x", *pos);
+}
+
+
int main(int argc, char **argv)
{
bool force_csum = false;
@@ -123,6 +147,16 @@ int main(int argc, char **argv)
putchar('\n');
+ char label[SB_LABEL_SIZE + 1];
+ strncpy(label, (char*)sb.label, SB_LABEL_SIZE);
+ label[SB_LABEL_SIZE] = '\0';
+ printf("dev.label\t\t");
+ if (*label)
+ print_encode(label);
+ else
+ printf("(empty)");
+ putchar('\n');
+
uuid_unparse(sb.uuid, uuid);
printf("dev.uuid\t\t%s\n", uuid);
diff --git a/bcache.h b/bcache.h
index 1d78da3..61e4252 100644
--- a/bcache.h
+++ b/bcache.h
@@ -115,7 +115,7 @@ BITMASK(BDEV_STATE, struct cache_sb, flags, 61, 2);
#define BDEV_STATE_DIRTY 2U
#define BDEV_STATE_STALE 3U
-inline uint64_t crc64(const void *_data, size_t len);
+uint64_t crc64(const void *_data, size_t len);
#define node(i, j) ((void *) ((i)->d + (j)))
#define end(i) node(i, (i)->keys)