Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d1881d31 authored by Rusty Russell's avatar Rusty Russell
Browse files

lguest: barrier me harder



Impact: barrier correctness in example launcher

I doubt either lguest user will complain about performance.

Reported-by: default avatarChristoph Hellwig <hch@infradead.org>
Cc: Jens Axboe <jens.axboe@oracle.com>
Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
parent df1693ab
Loading
Loading
Loading
Loading
+7 −0
Original line number Original line Diff line number Diff line
@@ -1630,6 +1630,13 @@ static bool service_io(struct device *dev)
		}
		}
	}
	}


	/* OK, so we noted that it was pretty poor to use an fdatasync as a
	 * barrier.  But Christoph Hellwig points out that we need a sync
	 * *afterwards* as well: "Barriers specify no reordering to the front
	 * or the back."  And Jens Axboe confirmed it, so here we are: */
	if (out->type & VIRTIO_BLK_T_BARRIER)
		fdatasync(vblk->fd);

	/* We can't trigger an IRQ, because we're not the Launcher.  It does
	/* We can't trigger an IRQ, because we're not the Launcher.  It does
	 * that when we tell it we're done. */
	 * that when we tell it we're done. */
	add_used(dev->vq, head, wlen);
	add_used(dev->vq, head, wlen);