blktrace support: major/minor fixups
authorJens Axboe <jens.axboe@oracle.com>
Wed, 16 May 2007 16:28:47 +0000 (18:28 +0200)
committerJens Axboe <jens.axboe@oracle.com>
Wed, 16 May 2007 16:28:47 +0000 (18:28 +0200)
We get passed the kernel variant, so we need a bit of manual
support to untangle it (major() and minor() wont cut it).

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
blktrace.c

index 5ed2619d2cf845a33fa9fa2f349b3f0485f254de..629aebed84d7b40ebcb58942f1383a6a8b0bdfae 100644 (file)
@@ -142,11 +142,16 @@ static int lookup_device(char *path, unsigned int maj, unsigned int min)
        return found;
 }
 
+#define MINORBITS      20
+#define MINORMASK      ((1U << MINORBITS) - 1)
+#define MAJOR(dev)     ((unsigned int) ((dev) >> MINORBITS))
+#define MINOR(dev)     ((unsigned int) ((dev) & MINORMASK))
+
 static void trace_add_file(struct thread_data *td, __u32 device)
 {
        static unsigned int last_maj, last_min;
-       unsigned int maj = major(device);
-       unsigned int min = minor(device);
+       unsigned int maj = MAJOR(device);
+       unsigned int min = MINOR(device);
        struct fio_file *f;
        char dev[256];
        unsigned int i;