From ff04d185d2142f88a01bc8ff17ca2b61ab4622b7 Mon Sep 17 00:00:00 2001 From: Michael Jeanson Date: Thu, 2 Jul 2020 12:06:42 -0400 Subject: [PATCH] Use exported symbol bdevname() instead of disk_name() bdevname() is a simple wrapper over disk_name() but has the honor to be exported. Using it removes the need for a kallsym wrapper. Signed-off-by: Michael Jeanson Signed-off-by: Mathieu Desnoyers Change-Id: Ic2b2233c4db7826175c68edea69751ddcb17a5e6 --- include/wrapper/genhd.h | 28 +--------------------------- src/lttng-statedump-impl.c | 13 +++++++++++-- 2 files changed, 12 insertions(+), 29 deletions(-) diff --git a/include/wrapper/genhd.h b/include/wrapper/genhd.h index 807074dd..30fc5cea 100644 --- a/include/wrapper/genhd.h +++ b/include/wrapper/genhd.h @@ -14,37 +14,11 @@ #include -#ifdef CONFIG_KALLSYMS +#ifdef CONFIG_KALLSYMS_ALL #include #include -static inline -char *wrapper_disk_name(struct gendisk *hd, int partno, char *buf) -{ - char *(*disk_name_sym)(struct gendisk *hd, int partno, char *buf); - - disk_name_sym = (void *) kallsyms_lookup_funcptr("disk_name"); - if (disk_name_sym) { - return disk_name_sym(hd, partno, buf); - } else { - printk_once(KERN_WARNING "LTTng: disk_name symbol lookup failed.\n"); - return NULL; - } -} - -#else - -static inline -char *wrapper_disk_name(struct gendisk *hd, int partno, char *buf) -{ - return disk_name(hd, partno, buf); -} - -#endif - -#ifdef CONFIG_KALLSYMS_ALL - static inline struct class *wrapper_get_block_class(void) { diff --git a/src/lttng-statedump-impl.c b/src/lttng-statedump-impl.c index 1a2a12ba..4105374e 100644 --- a/src/lttng-statedump-impl.c +++ b/src/lttng-statedump-impl.c @@ -151,10 +151,19 @@ int lttng_enumerate_block_devices(struct lttng_session *session) disk_part_iter_init(&piter, disk, DISK_PITER_INCL_PART0); while ((part = disk_part_iter_next(&piter))) { + struct block_device bdev; char name_buf[BDEVNAME_SIZE]; - char *p; + const char *p; - p = wrapper_disk_name(disk, part->partno, name_buf); + /* + * Create a partial 'struct blockdevice' to use + * 'bdevname()' which is a simple wrapper over + * 'disk_name()' but has the honor to be EXPORT_SYMBOL. + */ + bdev.bd_disk = disk; + bdev.bd_part = part; + + p = bdevname(&bdev, name_buf); if (!p) { disk_part_iter_exit(&piter); class_dev_iter_exit(&iter); -- 2.34.1