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

Commit a5b365a6 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Rusty Russell
Browse files

virtio-blk: fix minimum number of S/G elements



We need at least one S/G element to operate properly, as does the block
layer which increments it to one anyway.  We hit this due to a qemu
bug which advertises a sg_elements of 0 under some circumstances.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (tweaked logic)
parent aef4b9aa
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -298,7 +298,9 @@ static int __devinit virtblk_probe(struct virtio_device *vdev)
	err = virtio_config_val(vdev, VIRTIO_BLK_F_SEG_MAX,
				offsetof(struct virtio_blk_config, seg_max),
				&sg_elems);
	if (err)

	/* We need at least one SG element, whatever they say. */
	if (err || !sg_elems)
		sg_elems = 1;

	/* We need an extra sg elements at head and tail. */