zero out rest of data buffer on end of file
authorGiannakos Filippos <philipgian@cslab.ece.ntua.gr>
Fri, 16 Dec 2011 19:10:07 +0000 (21:10 +0200)
committerStratos Psomadakis <psomas@grnet.gr>
Wed, 4 Apr 2012 08:34:00 +0000 (11:34 +0300)
xseg/peers/user/blockd.c

index 23de8ba..a9ef7c5 100644 (file)
@@ -163,7 +163,12 @@ static void handle_read_write(struct store *store, struct io *io)
        if (req->state != XS_ACCEPTED) {
                if (io->retval > 0)
                        req->serviced += io->retval;
-               else
+               else if (io->retval == 0){
+                       /* reached end of file. zero out the rest data buffer */
+                       memset(req->data + req->serviced, 0, req->datasize - req->serviced);
+                       req->serviced = req->datasize;
+               }
+               else 
                        req->datasize = req->serviced;
 
                if (req->serviced >= req->datasize) {