vlmcd: Complete pending requests after "flushing"
authorFilippos Giannakos <philipgian@grnet.gr>
Fri, 13 Sep 2013 10:42:30 +0000 (13:42 +0300)
committerFilippos Giannakos <philipgian@grnet.gr>
Wed, 4 Dec 2013 14:57:09 +0000 (16:57 +0200)
xseg/peers/user/mt-vlmcd.c

index 33dc2e4..d351272 100644 (file)
@@ -322,6 +322,12 @@ static int do_accepted_pr(struct peerd *peer, struct peer_req *pr)
                XSEGLOG2(&lc, I, "Completing flush request");
                pr->req->serviced = pr->req->size;
                conclude_pr(peer, pr);
+               xqindex xqi;
+               while (vi->pending_reqs && !(vi->flags & VF_VOLUME_FREEZED) &&
+                               (xqi = __xq_pop_head(vi->pending_reqs)) != Noneidx) {
+                       struct peer_req *ppr = (struct peer_req *) xqi;
+                       do_accepted_pr(peer, ppr);
+               }
                return 0;
        }