diff --git a/include/bake.h b/include/bake.h index b16a872f447e446a8e7f3d60459f28a530fbc997..91a99ae3238f3e22913990f9c7ce10b289348d1b 100644 --- a/include/bake.h +++ b/include/bake.h @@ -47,6 +47,16 @@ typedef struct { */ void bake_perror(char *s, int ret); +/** + * Convert region id into printable string for debugging purposes + * + * @param[in] str string to fill in + * @param[in] size length of string, not including terminator. If rid + * string is longer than this it will be truncated. + * @param[in] rid region_id + */ +void bake_print_dbg_region_id_t(char *str, size_t size, bake_region_id_t rid); + #ifdef __cplusplus } #endif diff --git a/src/bake-copy-from.c b/src/bake-copy-from.c index 70d9bdb564f58cbd179bc1c595e155f74d97f6ad..25f8787500a9c7cbae377c3cb642ab03af257a29 100644 --- a/src/bake-copy-from.c +++ b/src/bake-copy-from.c @@ -36,6 +36,7 @@ int main(int argc, char **argv) char* local_region; int region_fd; uint64_t size; + char region_str[128]; if(argc != 6) { @@ -111,6 +112,9 @@ int main(int argc, char **argv) } close(region_fd); + bake_print_dbg_region_id_t(region_str, 127, rid); + printf("# will read bake region %s\n", region_str); + #ifdef USE_SIZECHECK_HEADERS uint64_t check_size; ret = bake_get_size(bph, rid, &check_size); diff --git a/src/bake-copy-to.c b/src/bake-copy-to.c index 499a5156ccbe2f50fc04f703e030801e539a483c..b89077f9313083f064540128ce268ba87854767f 100644 --- a/src/bake-copy-to.c +++ b/src/bake-copy-to.c @@ -38,6 +38,7 @@ int main(int argc, char **argv) char* local_region; int region_fd; char region_file[128]; + char region_str[128]; #ifdef USE_SIZECHECK_HEADERS uint64_t check_size; #endif @@ -162,6 +163,9 @@ int main(int argc, char **argv) return(-1); } + bake_print_dbg_region_id_t(region_str, 127, rid); + printf("# created bake region %s\n", region_str); + /* transfer data */ ret = bake_write( bph, diff --git a/src/util.c b/src/util.c index d329b5bfb720e8c2e3b14e4b3ddea6a9e699697d..c0083e9338834df9c56787b3ef1021698821d51d 100644 --- a/src/util.c +++ b/src/util.c @@ -7,6 +7,8 @@ #include "bake-config.h" #include "bake.h" #include +#include +#include static char * bake_err_str(int ret) { @@ -64,3 +66,14 @@ void bake_perror(char *s, int err) fprintf(stderr, "%s\n", error_string); } +void bake_print_dbg_region_id_t(char *str, size_t size, bake_region_id_t rid) +{ + PMEMoid *oid; + + /* NOTE: this is fragile. Would break if pmemobj format changes. */ + oid = (PMEMoid *)rid.data; + + snprintf(str, size, "%u:%" PRIu64 ":%" PRIu64, rid.type, oid->pool_uuid_lo, oid->off); + + return; +}