Emm, I'm a little confused that which code should I remove ?No err.Sorry for the late, is the following code okay?No.Hmm interesting. OK. But do callers know to recover?Well, what are the cases where it can happen practically?Device error. Such as vp_active_vq()
Thanks.
So I think WARN + broken is suitable.
Thanks.
@@ -2739,7 +2739,7 @@ int virtqueue_resize(struct virtqueue *_vq, u32 num,
void (*recycle)(struct virtqueue *vq, void *buf))
{
struct vring_virtqueue *vq = to_vvq(_vq);
- int err;
+ int err, err_reset;
if (num > vq->vq.num_max)
return -E2BIG;
@@ -2759,7 +2759,15 @@ int virtqueue_resize(struct virtqueue *_vq, u32 num,
else
err = virtqueue_resize_split(_vq, num);
- return virtqueue_enable_after_reset(_vq);
+ err_reset = virtqueue_enable_after_reset(_vq);
+
+ if (err) {
err is not important.
You can remove that.
like this:
if (vq->packed_ring)
virtqueue_resize_packed(_vq, num);
else
virtqueue_resize_split(_vq, num);
And we should set broken and warn inside virtqueue_enable_after_reset()?