Bug 2062572

Summary: [virtio-win] The Windows driver pushes all requests through HIPRIO_QUEUE which isn't correct
Product: Red Hat Enterprise Linux 9 Reporter: xiagao
Component: virtio-winAssignee: Viktor Prutyanov <vprutyan>
virtio-win sub component: virtio-win-prewhql QA Contact: xiagao
Status: CLOSED ERRATA Docs Contact:
Severity: high    
Priority: high CC: coli, dyuan, jinzhao, juzhang, kkiwi, lijin, lizhu, mdean, qizhu, slopezpa, virt-maint, vprutyan, vrozenfe, yvugenfi
Version: 9.0Keywords: Triaged
Target Milestone: rcFlags: pm-rhel: mirror+
Target Release: ---   
Hardware: x86_64   
OS: Windows   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: 2057252
: 2063722 (view as bug list) Environment:
Last Closed: 2022-11-15 10:45:57 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 2057252    
Bug Blocks: 2063722    

Comment 11 xiagao 2022-04-19 09:52:17 UTC
Hi Vikor
I also to confirm the verify steps, can it be verified with a function test loop?

Btw, when I open "my computer" and open D: volumen(an cdrom disk) or "Desktop" or "Documents", virtiofs service also send request to host virtiofsd, is it normal?

[2022-04-19T09:50:00Z DEBUG virtiofsd] QUEUE_EVENT
[2022-04-19T09:50:00Z DEBUG virtiofsd::server] Received request: 1
[2022-04-19T09:50:00Z DEBUG virtiofsd::server] Replying OK, header: OutHeader { len: 144, error: 0, unique: 319 }
[2022-04-19T09:50:00Z DEBUG virtiofsd] QUEUE_EVENT
[2022-04-19T09:50:00Z DEBUG virtiofsd::server] Received request: 1
[2022-04-19T09:50:00Z DEBUG virtiofsd::server] Replying OK, header: OutHeader { len: 144, error: 0, unique: 320 }
[2022-04-19T09:50:00Z DEBUG virtiofsd] QUEUE_EVENT
[2022-04-19T09:50:00Z DEBUG virtiofsd::server] Received request: 27
[2022-04-19T09:50:00Z DEBUG virtiofsd::server] Replying OK, header: OutHeader { len: 32, error: 0, unique: 321 }
[2022-04-19T09:50:00Z DEBUG virtiofsd] QUEUE_EVENT
[2022-04-19T09:50:00Z DEBUG virtiofsd::server] Received request: 17
[2022-04-19T09:50:00Z DEBUG virtiofsd::server] Replying OK, header: OutHeader { len: 96, error: 0, unique: 322 }
[2022-04-19T09:50:00Z DEBUG virtiofsd] QUEUE_EVENT
[2022-04-19T09:50:00Z DEBUG virtiofsd::server] Received request: 29
[2022-04-19T09:50:00Z DEBUG virtiofsd::server] Replying OK, header: OutHeader { len: 16, error: 0, unique: 323 }

Comment 12 Viktor Prutyanov 2022-04-20 13:48:11 UTC
Hi Xiaoling

> I also to confirm the verify steps, can it be verified with a function test loop?
Yes, in order to test that everything works.

This fix specifically can be verified by checking that virtiofsd-rs receives HIPRIO_QUEUE_EVENT only on requests with 2, 36, 42 opcodes.
All other opcodes should cause QUEUE_EVENT message in debug log.

> Btw, when I open "my computer" and open D: volumen(an cdrom disk) or "Desktop" or "Documents", virtiofs service also send request to host virtiofsd, is it normal?

Yes, this is because explorer.exe accesses other volumes too (including Virtio-FS one).

Comment 13 xiagao 2022-04-21 02:15:10 UTC
Thanks Viktor.

Reproduce it with build 215. A lot of msg are "HIPRIO_QUEUE_EVENT"
[2022-04-21T02:08:27Z DEBUG virtiofsd] HIPRIO_QUEUE_EVENT
[2022-04-21T02:08:27Z DEBUG virtiofsd] HIPRIO_QUEUE_EVENT
[2022-04-21T02:09:11Z DEBUG virtiofsd] HIPRIO_QUEUE_EVENT
[2022-04-21T02:09:11Z DEBUG virtiofsd::server] Received request: 26
[2022-04-21T02:09:11Z WARN  virtiofsd::passthrough] Cannot enable KILLPRIV_V2, client does not support it
[2022-04-21T02:09:11Z DEBUG virtiofsd::server] Replying OK, header: OutHeader { len: 80, error: 0, unique: 2 }
[2022-04-21T02:09:14Z DEBUG virtiofsd] HIPRIO_QUEUE_EVENT
[2022-04-21T02:09:14Z DEBUG virtiofsd::server] Received request: 17
[2022-04-21T02:09:14Z DEBUG virtiofsd::server] Replying OK, header: OutHeader { len: 96, error: 0, unique: 3 }
[2022-04-21T02:09:14Z DEBUG virtiofsd] HIPRIO_QUEUE_EVENT

Verify it with build 218. Some "HIPRIO_QUEUE_EVENT" is changed to "QUEUE_EVENT". Also I run a test loop,there is no regression.
[2022-04-21T01:46:32Z DEBUG virtiofsd] HIPRIO_QUEUE_EVENT
[2022-04-21T01:46:32Z DEBUG virtiofsd] HIPRIO_QUEUE_EVENT
[2022-04-21T01:46:32Z DEBUG virtiofsd] QUEUE_EVENT
[2022-04-21T01:46:32Z DEBUG virtiofsd] QUEUE_EVENT
[2022-04-21T01:53:10Z DEBUG virtiofsd] QUEUE_EVENT
[2022-04-21T01:53:10Z DEBUG virtiofsd::server] Received request: 26
[2022-04-21T01:53:10Z WARN  virtiofsd::passthrough] Cannot enable KILLPRIV_V2, client does not support it
[2022-04-21T01:53:10Z DEBUG virtiofsd::server] Replying OK, header: OutHeader { len: 80, error: 0, unique: 2 }
[2022-04-21T01:53:13Z DEBUG virtiofsd] QUEUE_EVENT
[2022-04-21T01:53:13Z DEBUG virtiofsd::server] Received request: 17
[2022-04-21T01:53:13Z DEBUG virtiofsd::server] Replying OK, header: OutHeader { len: 96, error: 0, unique: 3 }
[2022-04-21T01:53:13Z DEBUG virtiofsd] QUEUE_EVENT

Comment 18 errata-xmlrpc 2022-11-15 10:45:57 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (virtio-win bug fix and enhancement update), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2022:8261