(Refactored) Add error checking in blktapctrl
PATCH 3/4 (Refactored) Add error checking in blktapctrl
[PATCH 3/4] (Refactored) Add error checking in blktapctrl blktap-fixes.patch
Add some additional error checking to blktapctrl during mkfifo
Signed-off-by Boris Ostrovsky <[email protected]>
Signed-off-by Ben Guthro <[email protected]>
tools/blktap/drivers/blktapctrl.c +22 -5
@@ -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