|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 3/4] Add error checking in blktapctrl
[PATCH 3/4] Add error checking in blktapctrl blktap-fixes.patch Add some additional error checking to blktapctrl during mkfifo Signed-off-by: Boris Ostrovsky <bostrovsky@xxxxxxxxxxxxxxx> Signed-off-by: Ben Guthro <bguthro@xxxxxxxxxxxxxxx> diff -r 46e334d40a68 tools/blktap/drivers/blktapctrl.c
--- a/tools/blktap/drivers/blktapctrl.c Mon Jun 04 14:24:51 2007 -0400
+++ b/tools/blktap/drivers/blktapctrl.c Mon Jun 04 14:24:56 2007 -0400
@@ -604,11 +604,28 @@ int open_ctrl_socket(char *devname)
if (mkdir(BLKTAP_CTRL_DIR, 0755) == 0)
DPRINTF("Created %s directory\n", BLKTAP_CTRL_DIR);
ret = mkfifo(devname,S_IRWXU|S_IRWXG|S_IRWXO);
- if ( (ret != 0) && (errno != EEXIST) ) {
- DPRINTF("ERROR: pipe failed (%d)\n", errno);
- exit(0);
- }
-
+ if (ret) {
+ if (errno == EEXIST) {
+ /*
+ * Remove fifo since it may have data from
+ * it's previous use --- earlier invocation
+ * of tapdisk may not have read all messages.
+ */
+ ret = unlink(devname);
+ if (ret) {
+ DPRINTF("ERROR: unlink(%s) failed (%d)\n",
+ devname, errno);
+ exit(0);
+ }
+
+ ret = mkfifo(devname,S_IRWXU|S_IRWXG|S_IRWXO);
+ }
+ if (ret) {
+ DPRINTF("ERROR: pipe failed (%d)\n", errno);
+ exit(0);
+ }
+ }
+
ipc_fd = open(devname,O_RDWR|O_NONBLOCK);
if (ipc_fd < 0) {
_______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |