Skip to contentSkip to conversation

Add error checking in blktapctrl

PATCH In review Ben Guthro 1 participant 1 message Jun 19, 2007

lore
Share & tools
lore

Ben Guthro

author
#0 lore raw

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

tools/blktap/drivers/blktapctrl.c +22 -5
diff -r 46e334d40a68 tools/blktap/drivers/blktapctrl.c
@@ -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
[email protected]
http://lists.xensource.com/xen-devel