WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [PATCH] fs-backend: fix compile problems

To: xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-devel] [PATCH] fs-backend: fix compile problems
From: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
Date: Wed, 18 Mar 2009 12:03:05 +0000
Delivery-date: Wed, 18 Mar 2009 05:06:22 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Thunderbird 2.0.0.14 (X11/20080505)
Hi all,
this patch removes some unused variables and replaces read and write
to the pipe with read_exact and write_exact (these two functions are
implemented in libxc, that we have to link anyway).

This allows fs-backed to be compiled with -D_FORTIFY_SOURCE=2, hence
should fix the problems reported by Boris.

Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>

---

diff -r 9fc957e63f8d tools/fs-back/fs-backend.c
--- a/tools/fs-back/fs-backend.c        Tue Mar 17 15:40:25 2009 +0000
+++ b/tools/fs-back/fs-backend.c        Wed Mar 18 12:00:10 2009 +0000
@@ -9,6 +9,7 @@
 #include <sys/select.h>
 #include <sys/socket.h>
 #include <xen/io/ring.h>
+#include <xc_private.h>
 #include <err.h>
 #include "sys-queue.h"
 #include "fs-backend.h"
@@ -181,7 +182,6 @@
 {
     struct fs_mount *mount;
     struct fs_export *export;
-    int evt_port;
     struct fsif_sring *sring;
     uint32_t dom_ids[MAX_RING_SIZE];
     int i;
@@ -335,12 +335,8 @@
         }
         if (FD_ISSET(pipefds[0], &fds)) {
             struct fs_request *request;
-            int ret;
-            ret = read(pipefds[0], &request, sizeof(struct fs_request *));
-            if (ret != sizeof(struct fs_request *)) {
-                fprintf(stderr, "read request failed\n");
-                continue;
-            }
+            if (read_exact(pipefds[0], &request, sizeof(struct fs_request *)) 
< 0)
+                err(1, "read request failed\n");
             handle_aio_event(request); 
         }
         LIST_FOREACH(pointer, &mount_requests_head, entries) {
@@ -379,7 +375,8 @@
 {
     struct fs_request *request = (struct fs_request*) info->si_value.sival_ptr;
     int saved_errno = errno;
-    write(pipefds[1], &request, sizeof(struct fs_request *));
+    if (write_exact(pipefds[1], &request, sizeof(struct fs_request *)) < 0)
+        err(1, "write request filed\n");
     errno = saved_errno;
 }
 
diff -r 9fc957e63f8d tools/fs-back/fs-ops.c
--- a/tools/fs-back/fs-ops.c    Tue Mar 17 15:40:25 2009 +0000
+++ b/tools/fs-back/fs-ops.c    Wed Mar 18 12:00:10 2009 +0000
@@ -49,7 +49,6 @@
 {
     char *file_name, full_path[BUFFER_SIZE];
     int fd;
-    struct timeval tv1, tv2;
     RING_IDX rsp_idx;
     fsif_response_t *rsp;
     uint16_t req_id;
@@ -127,7 +126,7 @@
 static void dispatch_file_read(struct fs_mount *mount, struct fsif_request 
*req)
 {
     void *buf;
-    int fd, i, count;
+    int fd, count;
     uint16_t req_id;
     unsigned short priv_id;
     struct fs_request *priv_req;
@@ -169,7 +168,6 @@
     priv_req->aiocb.aio_sigevent.sigev_value.sival_ptr = priv_req;
     assert(aio_read(&priv_req->aiocb) >= 0);
 
-out: 
     /* We can advance the request consumer index, from here on, the request
      * should not be used (it may be overrinden by a response) */
     mount->ring.req_cons++;
@@ -198,7 +196,7 @@
 static void dispatch_file_write(struct fs_mount *mount, struct fsif_request 
*req)
 {
     void *buf;
-    int fd, count, i;
+    int fd, count;
     uint16_t req_id;
     unsigned short priv_id;
     struct fs_request *priv_req;
@@ -268,7 +266,6 @@
 
 static void dispatch_stat(struct fs_mount *mount, struct fsif_request *req)
 {
-    struct fsif_stat_response *buf;
     struct stat stat;
     int fd, ret;
     uint16_t req_id;



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel