diff --git a/drivers/virtio-blk.cc b/drivers/virtio-blk.cc
index 5bae3a34147c2a15436e7912e0271bc7ae8c59f0..b56310a4395c006c1546ce80d514e84e8cb83d52 100644
--- a/drivers/virtio-blk.cc
+++ b/drivers/virtio-blk.cc
@@ -201,16 +201,16 @@ void blk::req_done()
             if (req->bio) {
                 switch (req->res.status) {
                 case VIRTIO_BLK_S_OK:
-                    biodone(req->bio, true);
                     trace_virtio_blk_req_ok(req->bio, req->hdr.sector, req->bio->bio_bcount, req->hdr.type);
+                    biodone(req->bio, true);
                     break;
                 case VIRTIO_BLK_S_UNSUPP:
-                    biodone(req->bio, false);
                     trace_virtio_blk_req_unsupp(req->bio, req->hdr.sector, req->bio->bio_bcount, req->hdr.type);
+                    biodone(req->bio, false);
                     break;
                 default:
-                    biodone(req->bio, false);
                     trace_virtio_blk_req_err(req->bio, req->hdr.sector, req->bio->bio_bcount, req->hdr.type);
+                    biodone(req->bio, false);
                     break;
                }
             }