From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: passt.top; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: passt.top; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=MfW0OryB; dkim-atps=neutral Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by passt.top (Postfix) with ESMTPS id B1D1A5A0262 for ; Tue, 17 Mar 2026 17:37:28 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1773765447; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; bh=cyBWftMfmDi4gnOp9DpVxke5fnJtAY1HImD2XlaFkmc=; b=MfW0OryBdn5S9qGNuLNEOojdBXFEobdSZeJjKmh9Dq+RGJ8p1jjVOm2j2Up6JzITpQ2zsT 2Cgoq22xF/HdqqiBKNFwanJSn5ZrMQMPyL8t887chuajskiT7PAoXSMO6Tpp5UL44mf/1E C1MnJwXZTUNp7BkC/IwFtiz4NFahtqs= Received: from mail-lj1-f198.google.com (mail-lj1-f198.google.com [209.85.208.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-691-zJkCjPpDOGC4qPztMNv2Yw-1; Tue, 17 Mar 2026 12:37:25 -0400 X-MC-Unique: zJkCjPpDOGC4qPztMNv2Yw-1 X-Mimecast-MFC-AGG-ID: zJkCjPpDOGC4qPztMNv2Yw_1773765444 Received: by mail-lj1-f198.google.com with SMTP id 38308e7fff4ca-389e0db12cbso26169731fa.3 for ; Tue, 17 Mar 2026 09:37:25 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773765444; x=1774370244; h=content-transfer-encoding:in-reply-to:autocrypt:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=cyBWftMfmDi4gnOp9DpVxke5fnJtAY1HImD2XlaFkmc=; b=jj9tHKIDXy2yW+fC2blM8gTA7Bs4UYLdrVuWn6zAP1Vce8S5TJCKbqXzVsC8UBiEq3 /53+U9EkRO6+B3JArG6oaPHO8fUh4doV830qYf74/Se/dtYwpGz7fgHYadt+us/jF2nB qs8D1NC/ujCJ1cA9F1ejUWhqoOy34iwmYFfnjeivdEKLuYMKOGq+aSCCgL0ZEGTKnP7v Q/rBb0h5zHsMGi8JTiOei+cMeFnXUjfiFkHHxEvnYb6EsaYjNPw1PsGrkF6Vg7gsalCa VVxeDjyXVGM8zW11OMrrmOPf5j2Cpl2lqTb5Re7am93GopgrDVR3q+KZvvLHo0rSAm/R UAew== X-Forwarded-Encrypted: i=1; AJvYcCXyRP4F6vJUCX1lYrjCK9jnnHqP/UXy6jGUVkgcntzaPl7uqLdB5K8yK/6uERqbMu0TguKRH0feobE=@passt.top X-Gm-Message-State: AOJu0YzPygG4Ut8Y5N/n6O7vGypGtxY138PhJAO0RwpG24v4SXo9aina SteddLHELZCEuofI7+fZh1SI5n3KAmiWiurRTVh0Fw06HCa+skpvqj751S1ISx8hNTier1camOz B1/t6jCSTpsAGnBkzuXWMgrjVAMwIo8ZY5HyezbGMYF45H3knJzr4fIWks/fIVQ== X-Gm-Gg: ATEYQzxYjUAKyxJ41QEowrBcYJArqA7yTZut8OkB42Up5vqLC88Hk9dj0M0TTAnHfIA 6TdCDch+oW9SKlGepAFWVhzZjqv/JDSKUf4z49gDar0WGMxCshLddzyrh7vkC0EOc8YhMgPYkWf 4CUfLgbUk/qsaq8NyWsOxECasGHZOZypH23dSEFZk4pi3FX/bikkApmO/uVenPs9lDOtdrOZjwg hkFIj3s0Pu8OHNGj1TjxLliV73CKQ1qTNzL5JPuq5uxZjZ2JLvZEQljG+o2SxmJswercFLWs81k Lzzb9Vmt75AyxmptHM1RfAUpMX51rnhpVgz7Qbrnsgc+TteZyQe0HnSQE8OP3qSWxIw+5O2fSpE jQhd8OX6NB6d2zcXXIlJF13UkpbihsS3mcqUjiP72/R4gHFzuygkkrmx0/gMgJW195w== X-Received: by 2002:a05:6000:2c0c:b0:43b:4352:1bdd with SMTP id ffacd0b85a97d-43b43521e27mr16064728f8f.39.1773765034833; Tue, 17 Mar 2026 09:30:34 -0700 (PDT) X-Received: by 2002:a05:6000:2c0c:b0:43b:4352:1bdd with SMTP id ffacd0b85a97d-43b43521e27mr16064656f8f.39.1773765034311; Tue, 17 Mar 2026 09:30:34 -0700 (PDT) Received: from ?IPV6:2a01:e0a:e10:ef90:4326:a36e:a7cb:624b? ([2a01:e0a:e10:ef90:4326:a36e:a7cb:624b]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43b5189971asm535261f8f.30.2026.03.17.09.30.33 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 17 Mar 2026 09:30:33 -0700 (PDT) Message-ID: <4705f7ab-9277-4462-ada6-6bee39342627@redhat.com> Date: Tue, 17 Mar 2026 17:30:32 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 3/3] vu_common: Move iovec management into vu_collect() To: Stefano Brivio References: <20260313182618.4157365-1-lvivier@redhat.com> <20260313182618.4157365-4-lvivier@redhat.com> <20260317162350.058e10e0@elisabeth> From: Laurent Vivier Autocrypt: addr=lvivier@redhat.com; keydata= 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 In-Reply-To: <20260317162350.058e10e0@elisabeth> X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: bXSkTOfmLjGm2DyVV8XykFlkCR4YBhunNfWePjy8X5w_1773765444 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: base64 Message-ID-Hash: ID2KC3RRGQDBMCQJ4SE62LLXFHJCAROL X-Message-ID-Hash: ID2KC3RRGQDBMCQJ4SE62LLXFHJCAROL X-MailFrom: lvivier@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: David Gibson , passt-dev@passt.top X-Mailman-Version: 3.3.8 Precedence: list List-Id: Development discussion and patches for passt Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: T24gMy8xNy8yNiAxNjoyMywgU3RlZmFubyBCcml2aW8gd3JvdGU6DQo+IE9uIFR1ZSwgMTcgTWFy IDIwMjYgMDg6MjU6NDkgKzAxMDANCj4gTGF1cmVudCBWaXZpZXIgPGx2aXZpZXJAcmVkaGF0LmNv bT4gd3JvdGU6DQo+IA0KPj4gT24gMy8xNy8yNiAwMzo0MCwgRGF2aWQgR2lic29uIHdyb3RlOg0K Pj4+IE9uIEZyaSwgTWFyIDEzLCAyMDI2IGF0IDA3OjI2OjE4UE0gKzAxMDAsIExhdXJlbnQgVml2 aWVyIHdyb3RlOg0KPj4+PiBQcmV2aW91c2x5LCBjYWxsZXJzIGhhZCB0byBwcmUtaW5pdGlhbGl6 ZSB2aXJ0cXVldWUgZWxlbWVudHMgd2l0aCBpb3ZlYw0KPj4+PiBlbnRyaWVzIHVzaW5nIHZ1X3Nl dF9lbGVtZW50KCkgb3IgdnVfaW5pdF9lbGVtKCkgYmVmb3JlIGNhbGxpbmcNCj4+Pj4gdnVfY29s bGVjdCgpLiAgVGhpcyBtZWFudCBlYWNoIGVsZW1lbnQgb3duZWQgYSBmaXhlZCwgcHJlLWFzc2ln bmVkIGlvdmVjDQo+Pj4+IHNsb3QuDQo+Pj4+DQo+Pj4+IE1vdmUgdGhlIGlvdmVjIGFycmF5IGlu dG8gdnVfY29sbGVjdCgpIGFzIGV4cGxpY2l0IHBhcmFtZXRlcnMgKGluX3NnLA0KPj4+PiBtYXhf aW5fc2csIGFuZCBpbl9udW0pLCBsZXR0aW5nIGl0IHBhc3MgdGhlIHJlbWFpbmluZyBpb3ZlYyBj YXBhY2l0eQ0KPj4+PiBkaXJlY3RseSB0byB2dV9xdWV1ZV9wb3AoKS4gIEEgcnVubmluZyBjdXJy ZW50X2lvdiBjb3VudGVyIHRyYWNrcw0KPj4+PiBjb25zdW1lZCBlbnRyaWVzIGFjcm9zcyBlbGVt ZW50cywgc28gbXVsdGlwbGUgZWxlbWVudHMgc2hhcmUgYSBzaW5nbGUNCj4+Pj4gaW92ZWMgcG9v bC4gIFRoZSBvcHRpb25hbCBpbl9udW0gb3V0cHV0IHBhcmFtZXRlciByZXBvcnRzIGhvdyBtYW55 IGlvdmVjDQo+Pj4+IGVudHJpZXMgd2VyZSBjb25zdW1lZCwgYWxsb3dpbmcgY2FsbGVycyB0byB0 cmFjayB1c2FnZSBhY3Jvc3MgbXVsdGlwbGUNCj4+Pj4gdnVfY29sbGVjdCgpIGNhbGxzLg0KPj4+ Pg0KPj4+PiBUaGlzIHJlbW92ZXMgdnVfc2V0X2VsZW1lbnQoKSBhbmQgdnVfaW5pdF9lbGVtKCkg d2hpY2ggYXJlIG5vIGxvbmdlcg0KPj4+PiBuZWVkZWQsIGFuZCBpcyBhIHByZXJlcXVpc2l0ZSBm b3IgbXVsdGktYnVmZmVyIHN1cHBvcnQgd2hlcmUgYSBzaW5nbGUNCj4+Pj4gdmlydHF1ZXVlIGVs ZW1lbnQgY2FuIHVzZSBtb3JlIHRoYW4gb25lIGlvdmVjIGVudHJ5LiAgRm9yIG5vdywgY2FsbGVy cw0KPj4+PiBhc3NlcnQgdGhlIGN1cnJlbnQgc2luZ2xlLWlvdmVjLXBlci1lbGVtZW50IGludmFy aWFudCB1bnRpbCB0aGV5IGFyZQ0KPj4+PiB1cGRhdGVkIHRvIGhhbmRsZSBtdWx0aXBsZSBpb3Zl Y3MuDQo+Pj4+DQo+Pj4+IFNpZ25lZC1vZmYtYnk6IExhdXJlbnQgVml2aWVyIDxsdml2aWVyQHJl ZGhhdC5jb20+DQo+Pj4NCj4+PiBSZXZpZXdlZC1ieTogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJz b24uZHJvcGJlYXIuaWQuYXU+DQo+Pj4NCj4+PiBDb3VwbGUgb2YgdGhvdWdodHMgb24gcG9zc2li bGUgcG9saXNoIGJlbG93Lg0KPj4+DQo+Pj4gW3NuaXBdDQo+Pj4+ICAgIC8qKg0KPj4+PiAgICAg KiB2dV9jb2xsZWN0KCkgLSBjb2xsZWN0IHZpcnRpbyBidWZmZXJzIGZyb20gYSBnaXZlbiB2aXJ0 cXVldWUNCj4+Pj4gICAgICogQHZkZXY6CQl2aG9zdC11c2VyIGRldmljZQ0KPj4+PiAgICAgKiBA dnE6CQkJdmlydHF1ZXVlIHRvIGNvbGxlY3QgZnJvbQ0KPj4+PiAtICogQGVsZW06CQlBcnJheSBv ZiB2aXJ0cXVldWUgZWxlbWVudA0KPj4+PiAtICogCQkJZWFjaCBlbGVtZW50IG11c3QgYmUgaW5p dGlhbGl6ZWQgd2l0aCBvbmUgaW92ZWMgZW50cnkNCj4+Pj4gLSAqIAkJCWluIHRoZSBpbl9zZyBh cnJheS4NCj4+Pj4gKyAqIEBlbGVtOgkJQXJyYXkgb2YgQG1heF9lbGVtIHZpcnRxdWV1ZSBlbGVt ZW50cw0KPj4+PiAgICAgKiBAbWF4X2VsZW06CQlOdW1iZXIgb2YgdmlydHF1ZXVlIGVsZW1lbnRz IGluIHRoZSBhcnJheQ0KPj4+PiArICogQGluX3NnOgkJSW5jb21pbmcgaW92ZWMgYXJyYXkgZm9y IGRldmljZS13cml0YWJsZSBkZXNjcmlwdG9ycw0KPj4+PiArICogQG1heF9pbl9zZzoJCU1heGlt dW0gbnVtYmVyIG9mIGVudHJpZXMgaW4gQGluX3NnDQo+Pj4+ICsgKiBAaW5fbnVtOgkJTnVtYmVy IG9mIGNvbGxlY3RlZCBlbnRyaWVzIGZyb20gQGluX3NnIChvdXRwdXQpDQo+Pj4+ICAgICAqIEBz aXplOgkJTWF4aW11bSBzaXplIG9mIHRoZSBkYXRhIGluIHRoZSBmcmFtZQ0KPj4+PiAgICAgKiBA Y29sbGVjdGVkOgkJQ29sbGVjdGVkIGJ1ZmZlciBsZW5ndGgsIHVwIHRvIEBzaXplLCBzZXQgb24g cmV0dXJuDQo+Pj4+ICAgICAqDQo+Pj4+IEBAIC04MCwyMCArNjcsMjEgQEAgdm9pZCB2dV9pbml0 X2VsZW0oc3RydWN0IHZ1X3ZpcnRxX2VsZW1lbnQgKmVsZW0sIHN0cnVjdCBpb3ZlYyAqaW92LCBp bnQgZWxlbV9jbnQNCj4+Pj4gICAgICovDQo+Pj4+ICAgIGludCB2dV9jb2xsZWN0KGNvbnN0IHN0 cnVjdCB2dV9kZXYgKnZkZXYsIHN0cnVjdCB2dV92aXJ0cSAqdnEsDQo+Pj4+ICAgIAkgICAgICAg c3RydWN0IHZ1X3ZpcnRxX2VsZW1lbnQgKmVsZW0sIGludCBtYXhfZWxlbSwNCj4+Pj4gKwkgICAg ICAgc3RydWN0IGlvdmVjICppbl9zZywgc2l6ZV90IG1heF9pbl9zZywgc2l6ZV90ICppbl9udW0s DQo+Pj4+ICAgIAkgICAgICAgc2l6ZV90IHNpemUsIHNpemVfdCAqY29sbGVjdGVkKQ0KPj4+PiAg ICB7DQo+Pj4+ICAgIAlzaXplX3QgY3VycmVudF9zaXplID0gMDsNCj4+Pj4gKwlzaXplX3QgY3Vy cmVudF9pb3YgPSAwOw0KPj4+PiAgICAJaW50IGVsZW1fY250ID0gMDsNCj4+Pj4gICAgDQo+Pj4+ IC0Jd2hpbGUgKGN1cnJlbnRfc2l6ZSA8IHNpemUgJiYgZWxlbV9jbnQgPCBtYXhfZWxlbSkgew0K Pj4+PiAtCQlzdHJ1Y3QgaW92ZWMgKmlvdjsNCj4+Pj4gKwl3aGlsZSAoY3VycmVudF9zaXplIDwg c2l6ZSAmJiBlbGVtX2NudCA8IG1heF9lbGVtICYmDQo+Pj4+ICsJICAgICAgIGN1cnJlbnRfaW92 IDwgbWF4X2luX3NnKSB7DQo+Pj4+ICAgIAkJaW50IHJldDsNCj4+Pj4gICAgDQo+Pj4+ICAgIAkJ cmV0ID0gdnVfcXVldWVfcG9wKHZkZXYsIHZxLCAmZWxlbVtlbGVtX2NudF0sDQo+Pj4+IC0JCQkJ ICAgZWxlbVtlbGVtX2NudF0uaW5fc2csDQo+Pj4+IC0JCQkJICAgZWxlbVtlbGVtX2NudF0uaW5f bnVtLA0KPj4+PiAtCQkJCSAgIGVsZW1bZWxlbV9jbnRdLm91dF9zZywNCj4+Pj4gLQkJCQkgICBl bGVtW2VsZW1fY250XS5vdXRfbnVtKTsNCj4+Pj4gKwkJCQkgICAmaW5fc2dbY3VycmVudF9pb3Zd LA0KPj4+PiArCQkJCSAgIG1heF9pbl9zZyAtIGN1cnJlbnRfaW92LA0KPj4+PiArCQkJCSAgIE5V TEwsIDApOw0KPj4+PiAgICAJCWlmIChyZXQgPCAwKQ0KPj4+PiAgICAJCQlicmVhazsNCj4+Pj4g ICAgDQo+Pj4+IEBAIC0xMDMsMTggKzkxLDIyIEBAIGludCB2dV9jb2xsZWN0KGNvbnN0IHN0cnVj dCB2dV9kZXYgKnZkZXYsIHN0cnVjdCB2dV92aXJ0cSAqdnEsDQo+Pj4+ICAgIAkJCWJyZWFrOw0K Pj4+PiAgICAJCX0NCj4+Pj4gICAgDQo+Pj4+IC0JCWlvdiA9ICZlbGVtW2VsZW1fY250XS5pbl9z Z1swXTsNCj4+Pj4gLQ0KPj4+PiAtCQlpZiAoaW92LT5pb3ZfbGVuID4gc2l6ZSAtIGN1cnJlbnRf c2l6ZSkNCj4+Pj4gLQkJCWlvdi0+aW92X2xlbiA9IHNpemUgLSBjdXJyZW50X3NpemU7DQo+Pj4+ ICsJCWVsZW1bZWxlbV9jbnRdLmluX251bSA9IGlvdl90cnVuY2F0ZShlbGVtW2VsZW1fY250XS5p bl9zZywNCj4+Pj4gKwkJCQkJCSAgICAgZWxlbVtlbGVtX2NudF0uaW5fbnVtLA0KPj4+PiArCQkJ CQkJICAgICBzaXplIC0gY3VycmVudF9zaXplKTsNCj4+Pg0KPj4+IFdpbGwgZWxlbVtdLmluX251 bSBhbHdheXMgZW5kIHVwIHdpdGggdGhlIHNhbWUgdmFsdWUgYXMgdGhlIEBpbl9udW0NCj4+PiBw YXJhbWV0ZXI/ICBJZiBzbywgZG8gd2UgbmVlZCB0aGUgZXhwbGljaXQgcGFyYW1ldGVyPw0KPj4N Cj4+IEBpbl9udW0gcGFyYW1ldGVyIG9mIHZ1X2NvbGxlY3QoKT8NCj4+DQo+PiBAaW5fbnVtIGlz IHRoZSBzdW0gb2YgYWxsIGVsZW1bXS5pbl9udW0sIGl0IGNhbiBiZSBjb21wdXRlZCBieSB0aGUg Y2FsbGVyIGZ1bmN0aW9uIGZyb20NCj4+IGVsZW0sIGJ1dCBpdCBpcyBzaW1wbGVyIHRvIHJldHVy biBpdCBhcyB3ZSBuZWVkIHRvIGNvbXB1dGUgaXQgaW4gdGhlIGxvb3AuDQo+IA0KPiBJJ20gbm90 IHN1cmUgSSB1bmRlcnN0b29kIHRoZSBwb2ludCBvZiBEYXZpZCdzIGNvbW1lbnQgaGVyZSwgYW5k IHRoaXMNCj4gZXhwbGFuYXRpb24gbWFrZXMgc2Vuc2UgdG8gbWUgbm93LCBidXQgaXQgdG9vayBt ZSBhIGJpdCB0byBmaWd1cmUgdGhhdA0KPiBvdXQuDQo+IA0KPiBDb3VsZCBpdCBiZSB0aGF0IEBp bl9udW0gaXMgYSBiaXQgY29uZnVzaW5nIGFzIGl0IGhhcyAiaW4iIGFuZCAibnVtIiBpbg0KPiBp dCwgYnV0IGl0J3MgYWN0dWFsbHkgYW4gb3V0cHV0IHJlcHJlc2VudGluZyBob3cgbWFueSAiaW4i IGVudHJpZXMgd2UNCj4gdXNlZC9uZWVkPw0KDQpGb3IgYW4gZWxlbWVudCwgKsOsbl8qbnVtIGlz IHRoZSBudW1iZXIgb2YgKmluXypzZyB3ZSBoYXZlIHJlYWQgZnJvbSB0aGUgcmluZyBmb3IgYW4g ZWxlbWVudC4NCg0KSXQncyB2aXJ0aW8gc2VtYW50aWMsIHNvICAqaW5fKiBtZWFucyBzZyBnb2lu ZyAqaW4qIHRoZSBndWVzdC4NCg0KRm9yICpvdXRfKnNnIHdlIGhhdmUgKm91dF8qbnVtLg0KDQo+ IA0KPiBXaGF0IGlmIHdlIHJlbmFtZSBpdCB0byBAaW5fdXNlZCBvciBAaW5fY29sbGVjdGVkPw0K PiANCg0KVGhlIGlkZWEgd2FzIHRvIGtlZXAgdGhlIHNhbWUgbmFtZSBhcyBpbiB0aGUgZWxlbWVu dC4gQnV0IHdlIGNhbiBjaGFuZ2UgdGhpcyB0byBAaW5fdXNlZC4NCg0KVGhhbmtzLA0KTGF1cmVu dA0KDQo=