Do not redefine READ and WRITE, which are defined in linux/fs.h. Instead prefix them with XEN to avoid namespace clash. --- tools/blktap2/include/blktaplib.h.orig 2011-01-10 11:10:18.362560374 +0100 +++ tools/blktap2/include/blktaplib.h 2011-01-10 11:11:53.007679832 +0100 @@ -197,8 +197,8 @@ typedef struct msg_lock { int uuid_len; } msg_lock_t; -#define READ 0 -#define WRITE 1 +#define XEN_READ 0 +#define XEN_WRITE 1 /*Control Messages between manager and tapdev*/ #define CTLMSG_PARAMS 1 --- tools/blktap/lib/blktaplib.h.orig 2011-01-10 11:12:38.633561491 +0100 +++ tools/blktap/lib/blktaplib.h 2011-01-10 11:12:47.110717080 +0100 @@ -195,8 +195,8 @@ typedef struct msg_pid { pid_t pid; } msg_pid_t; -#define READ 0 -#define WRITE 1 +#define XEN_READ 0 +#define XEN_WRITE 1 /*Control Messages between manager and tapdev*/ #define CTLMSG_PARAMS 1 --- tools/blktap/drivers/blktapctrl.c.orig 2010-08-25 12:22:07.000000000 +0200 +++ tools/blktap/drivers/blktapctrl.c 2011-01-10 11:30:15.176697136 +0100 @@ -128,13 +128,13 @@ static int get_tapdisk_pid(blkif_t *blki { int ret; - if ((ret = write_msg(blkif->fds[WRITE], CTLMSG_PID, blkif, NULL)) + if ((ret = write_msg(blkif->fds[XEN_WRITE], CTLMSG_PID, blkif, NULL)) <= 0) { DPRINTF("Write_msg failed - CTLMSG_PID(%d)\n", ret); return -EINVAL; } - if ((ret = read_msg(blkif->fds[READ], CTLMSG_PID_RSP, blkif)) + if ((ret = read_msg(blkif->fds[XEN_READ], CTLMSG_PID_RSP, blkif)) <= 0) { DPRINTF("Read_msg failure - CTLMSG_PID(%d)\n", ret); return -EINVAL; @@ -576,8 +576,8 @@ static int connect_qemu(blkif_t *blkif, } DPRINTF("Using tapdisk-ioemu connection\n"); - blkif->fds[READ] = dom0_readfd; - blkif->fds[WRITE] = dom0_writefd; + blkif->fds[XEN_READ] = dom0_readfd; + blkif->fds[XEN_WRITE] = dom0_writefd; if (refresh_pid) { get_tapdisk_pid(blkif); @@ -587,8 +587,8 @@ static int connect_qemu(blkif_t *blkif, } else if (access(rdctldev, R_OK | W_OK) == 0) { /* Use existing pipe to the device model */ DPRINTF("Using qemu-dm connection\n"); - blkif->fds[READ] = open_ctrl_socket(wrctldev); - blkif->fds[WRITE] = open_ctrl_socket(rdctldev); + blkif->fds[XEN_READ] = open_ctrl_socket(wrctldev); + blkif->fds[XEN_WRITE] = open_ctrl_socket(rdctldev); } else { /* No device model => try with tapdisk-ioemu */ DPRINTF("No device model\n"); @@ -598,7 +598,7 @@ static int connect_qemu(blkif_t *blkif, free(rdctldev); free(wrctldev); - if (blkif->fds[READ] == -1 || blkif->fds[WRITE] == -1) + if (blkif->fds[XEN_READ] == -1 || blkif->fds[XEN_WRITE] == -1) return -1; DPRINTF("Attached to qemu blktap pipes\n"); @@ -621,10 +621,10 @@ static int connect_tapdisk(blkif_t *blki "%s/tapctrlwrite%d", BLKTAP_CTRL_DIR, minor) == -1) goto fail; - blkif->fds[READ] = open_ctrl_socket(rdctldev); - blkif->fds[WRITE] = open_ctrl_socket(wrctldev); + blkif->fds[XEN_READ] = open_ctrl_socket(rdctldev); + blkif->fds[XEN_WRITE] = open_ctrl_socket(wrctldev); - if (blkif->fds[READ] == -1 || blkif->fds[WRITE] == -1) + if (blkif->fds[XEN_READ] == -1 || blkif->fds[XEN_WRITE] == -1) goto fail; /*launch the new process*/ @@ -683,8 +683,8 @@ static int blktapctrl_new_blkif(blkif_t } else { DPRINTF("Process exists!\n"); - blkif->fds[READ] = exist->fds[READ]; - blkif->fds[WRITE] = exist->fds[WRITE]; + blkif->fds[XEN_READ] = exist->fds[XEN_READ]; + blkif->fds[XEN_WRITE] = exist->fds[XEN_WRITE]; } add_disktype(blkif, type); @@ -703,13 +703,13 @@ static int blktapctrl_new_blkif(blkif_t /* Both of the following read and write calls will block up to * max_timeout val*/ - if (write_msg(blkif->fds[WRITE], CTLMSG_PARAMS, blkif, ptr) + if (write_msg(blkif->fds[XEN_WRITE], CTLMSG_PARAMS, blkif, ptr) <= 0) { DPRINTF("Write_msg failed - CTLMSG_PARAMS\n"); goto fail; } - if (read_msg(blkif->fds[READ], CTLMSG_IMG, blkif) <= 0) { + if (read_msg(blkif->fds[XEN_READ], CTLMSG_IMG, blkif) <= 0) { DPRINTF("Read_msg failure - CTLMSG_IMG\n"); goto fail; } @@ -725,12 +725,12 @@ fail: static int map_new_blktapctrl(blkif_t *blkif) { DPRINTF("Received a poll for a new devmap\n"); - if (write_msg(blkif->fds[WRITE], CTLMSG_NEWDEV, blkif, NULL) <= 0) { + if (write_msg(blkif->fds[XEN_WRITE], CTLMSG_NEWDEV, blkif, NULL) <= 0) { DPRINTF("Write_msg failed - CTLMSG_NEWDEV\n"); return -EINVAL; } - if (read_msg(blkif->fds[READ], CTLMSG_NEWDEV_RSP, blkif) <= 0) { + if (read_msg(blkif->fds[XEN_READ], CTLMSG_NEWDEV_RSP, blkif) <= 0) { DPRINTF("Read_msg failed - CTLMSG_NEWDEV_RSP\n"); return -EINVAL; } @@ -743,15 +743,15 @@ static int unmap_blktapctrl(blkif_t *blk { DPRINTF("Unmapping vbd\n"); - if (write_msg(blkif->fds[WRITE], CTLMSG_CLOSE, blkif, NULL) <= 0) { + if (write_msg(blkif->fds[XEN_WRITE], CTLMSG_CLOSE, blkif, NULL) <= 0) { DPRINTF("Write_msg failed - CTLMSG_CLOSE\n"); return -EINVAL; } if (del_disktype(blkif)) { DPRINTF("Closing communication pipe to pid %d\n", blkif->tappid); - close(blkif->fds[WRITE]); - close(blkif->fds[READ]); + close(blkif->fds[XEN_WRITE]); + close(blkif->fds[XEN_READ]); } return 0; --- tools/blktap/drivers/tapdisk.c.orig 2011-01-10 11:33:42.160375869 +0100 +++ tools/blktap/drivers/tapdisk.c 2011-01-10 11:36:42.820168882 +0100 @@ -138,10 +138,10 @@ static inline int LOCAL_FD_SET(fd_set *r if (ptr->tap_fd) { FD_SET(ptr->tap_fd, readfds); td_for_each_disk(ptr->s, dd) { - if (dd->io_fd[READ]) - FD_SET(dd->io_fd[READ], readfds); - maxfds = (dd->io_fd[READ] > maxfds ? - dd->io_fd[READ] : maxfds); + if (dd->io_fd[INPUT]) + FD_SET(dd->io_fd[INPUT], readfds); + maxfds = (dd->io_fd[INPUT] > maxfds ? + dd->io_fd[INPUT] : maxfds); } maxfds = (ptr->tap_fd > maxfds ? ptr->tap_fd : maxfds); } @@ -380,7 +380,7 @@ static int read_msg(char *buf) struct td_state *s = NULL; fd_list_entry_t *entry; - length = read(fds[READ], buf, MSG_SIZE); + length = read(fds[INPUT], buf, MSG_SIZE); if (length > 0 && length >= sizeof(msg_hdr_t)) { @@ -435,7 +435,7 @@ static int read_msg(char *buf) msg->type = CTLMSG_IMG_FAIL; msg->len = msglen; } - len = write(fds[WRITE], buf, msglen); + len = write(fds[OUTPUT], buf, msglen); free(path); return 1; @@ -457,7 +457,7 @@ static int read_msg(char *buf) : CTLMSG_NEWDEV_FAIL); msg->len = msglen; - len = write(fds[WRITE], buf, msglen); + len = write(fds[OUTPUT], buf, msglen); return 1; case CTLMSG_CLOSE: @@ -479,7 +479,7 @@ static int read_msg(char *buf) process = getpid(); msg_pid->pid = process; - len = write(fds[WRITE], buf, msglen); + len = write(fds[OUTPUT], buf, msglen); return 1; default: @@ -782,12 +782,12 @@ int main(int argc, char *argv[]) signal (SIGINT, sig_handler); /*Open the control channel*/ - fds[READ] = open(argv[1],O_RDWR|O_NONBLOCK); - fds[WRITE] = open(argv[2],O_RDWR|O_NONBLOCK); + fds[INPUT] = open(argv[1],O_RDWR|O_NONBLOCK); + fds[OUTPUT] = open(argv[2],O_RDWR|O_NONBLOCK); - if ( (fds[READ] < 0) || (fds[WRITE] < 0) ) + if ( (fds[INPUT] < 0) || (fds[OUTPUT] < 0) ) { - DPRINTF("FD open failed [%d,%d]\n", fds[READ], fds[WRITE]); + DPRINTF("FD open failed [%d,%d]\n", fds[INPUT], fds[OUTPUT]); exit(-1); } @@ -803,8 +803,8 @@ int main(int argc, char *argv[]) { ret = 0; FD_ZERO(&readfds); - FD_SET(fds[READ], &readfds); - maxfds = fds[READ]; + FD_SET(fds[INPUT], &readfds); + maxfds = fds[INPUT]; /*Set all tap fds*/ LOCAL_FD_SET(&readfds); @@ -822,10 +822,10 @@ int main(int argc, char *argv[]) tapdev_info_t *info = ptr->s->ring_info; td_for_each_disk(ptr->s, dd) { - if (dd->io_fd[READ] && - FD_ISSET(dd->io_fd[READ], + if (dd->io_fd[INPUT] && + FD_ISSET(dd->io_fd[INPUT], &readfds)) { - io_done(dd, READ); + io_done(dd, INPUT); progress_made = 1; } } @@ -851,13 +851,13 @@ int main(int argc, char *argv[]) ptr = ptr->next; } - if (FD_ISSET(fds[READ], &readfds)) + if (FD_ISSET(fds[INPUT], &readfds)) read_msg(buf); } } free(buf); - close(fds[READ]); - close(fds[WRITE]); + close(fds[INPUT]); + close(fds[OUTPUT]); ptr = fd_start; while (ptr != NULL) {