]> granicus.if.org Git - strace/commitdiff
block: add some definitions from <linux/blkpg.h>
authorEugene Syromyatnikov <evgsyr@gmail.com>
Sun, 13 Nov 2016 16:00:27 +0000 (19:00 +0300)
committerDmitry V. Levin <ldv@altlinux.org>
Sun, 20 Nov 2016 10:41:07 +0000 (10:41 +0000)
This is done in order to fix build error on old distributions where
struct blkpg_ioctl_arg declaration is broken:

In file included from block.c:35:
/usr/include/linux/blkpg.h:36: error: expected ':', ',', ';', '}' or '__attribute__' before '*' token
block.c: In function 'print_blkpg_req':
block.c:113: error: 'struct_blkpg_ioctl_arg' has no member named 'data'

(from SLE10)

* block.c: Include <linux/ioctl.h> instead of <linux/blkpg.h>.
(BLKPG, BLKPG_DEVNAMELTH, BLKPG_VOLNAMELTH): New macros.
(struct_blkpg_ioctl_arg, struct_blkpg_partition): New definitions,
copied from blkpg_ioctl_arg and blkpg_partition structures defined
in <linux/blkpg.h>.

block.c

diff --git a/block.c b/block.c
index 3c007464e0ac984c5d6edbe0984e931ff61e731e..6dd62d68d084dfb8bed62cf99ee44ed10c112660 100644 (file)
--- a/block.c
+++ b/block.c
 #include DEF_MPERS_TYPE(struct_blkpg_ioctl_arg)
 #include DEF_MPERS_TYPE(struct_blkpg_partition)
 
-#include <linux/blkpg.h>
+#include <linux/ioctl.h>
 #include <linux/fs.h>
 
+typedef struct {
+       int op;
+       int flags;
+       int datalen;
+       void *data;
+} struct_blkpg_ioctl_arg;
+
+#define BLKPG_DEVNAMELTH       64
+#define BLKPG_VOLNAMELTH       64
+typedef struct {
+       long long start;                /* starting offset in bytes */
+       long long length;               /* length in bytes */
+       int pno;                        /* partition number */
+       char devname[BLKPG_DEVNAMELTH]; /* partition name, like sda5 or c0d1p2,
+                                          to be used in kernel messages */
+       char volname[BLKPG_VOLNAMELTH]; /* volume label */
+} struct_blkpg_partition;
+
 #define BLKTRACE_BDEV_SIZE      32
 typedef struct blk_user_trace_setup {
        char name[BLKTRACE_BDEV_SIZE];  /* output */
@@ -46,11 +64,12 @@ typedef struct blk_user_trace_setup {
        uint32_t pid;
 } struct_blk_user_trace_setup;
 
-typedef struct blkpg_ioctl_arg struct_blkpg_ioctl_arg;
-typedef struct blkpg_partition struct_blkpg_partition;
-
 #include MPERS_DEFS
 
+#ifndef BLKPG
+# define BLKPG      _IO(0x12,105)
+#endif
+
 /*
  * ioctl numbers <= 114 are present in Linux 2.4.  The following ones have been
  * added since then and headers containing them may not be available on every