[stgt] [PATCH] check return values and try to re-write again if necessary

Doron Shoham dorons at Voltaire.COM
Mon Sep 22 15:05:17 CEST 2008


check return values and try to re-write again if necessary.
it was already done in other functions in the code.

Signed-off-by: Doron Shoham <dorons at voltaire.com>
---
 usr/bs.c |   18 ++++++++++++++++--
 1 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/usr/bs.c b/usr/bs.c
index f100e2c..71b7767 100644
--- a/usr/bs.c
+++ b/usr/bs.c
@@ -125,7 +125,15 @@ static void bs_thread_request_done(int fd, int events, void *data)
 		cmd->scsi_cmd_done(cmd, scsi_get_result(cmd));
 	}
 
-	write(info->command_fd[1], &nr_events, sizeof(nr_events));
+rewrite:
+	ret = write(info->command_fd[1], &nr_events, sizeof(nr_events));
+	if (ret < 0) {
+		eprintf("can't write done, %m\n");
+		if (errno == EAGAIN || errno == EINTR)
+			goto rewrite;
+
+		return;
+	}
 }
 
 static void *bs_thread_worker_fn(void *arg)
@@ -202,7 +210,13 @@ int bs_thread_open(struct bs_thread_info *info, request_func_t *rfn)
 				     bs_thread_worker_fn, info);
 	}
 
-	write(info->command_fd[1], &ret, sizeof(ret));
+rewrite:
+	ret = write(info->command_fd[1], &ret, sizeof(ret));
+	if (ret < 0) {
+		eprintf("can't write done, %m\n");
+		if (errno == EAGAIN || errno == EINTR)
+			goto rewrite;
+	}
 
 	return 0;
 event_del:
-- 
1.5.3.8

--
To unsubscribe from this list: send the line "unsubscribe stgt" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html



More information about the stgt mailing list