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);
#include <linux/genhd.h>
-#ifdef CONFIG_KALLSYMS
+#ifdef CONFIG_KALLSYMS_ALL
#include <linux/kallsyms.h>
#include <wrapper/kallsyms.h>
-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)
{