[Bug 293489] readv(2) on cuse device never returns
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 293489] readv(2) on cuse device never returns"
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 293489] readv(2) on cuse device never returns"
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 293489] readv(2) on cuse device never returns"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 27 Feb 2026 15:41:15 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=293489
Bug ID: 293489
Summary: readv(2) on cuse device never returns
Product: Base System
Version: 15.0-RELEASE
Hardware: amd64
OS: Any
Status: New
Severity: Affects Only Me
Priority: ---
Component: bin
Assignee: bugs@FreeBSD.org
Reporter: unitrunker@unitrunker.net
Issuing a read(2) on a cuse device that has data to returns works as expected.
When switching to readv(2) with eight iovec-s, the readv call never returns.
Logging from an instrumented cuse device shows the first read is passed the
correct buffer address and size. The data appears to be transferred. All
subsequent read requires processed inside the cuse device have a correct buffer
address but the length is zero.
Code snippet follows:
#include <unistd.h>
#include <sys/uio.h>
int okay;
char chunk[8];
struct iovec list[8] =
{
{chunk + 0, 1},
{chunk + 1, 1},
{chunk + 2, 1},
{chunk + 3, 1},
{chunk + 4, 1},
{chunk + 5, 1},
{chunk + 6, 1},
{chunk + 7, 1}
};
int handle = open(/dev/cuse123", O_RDONLY);
do
{
okay = readv(handle, list, 8);
if (okay < 0) break;
write(2, chunk, okay);
}
while (true);
close(handle);
Switching back to a simple read(2) call works as expected.
The underlying issue is likely inside the cuse kernel module but this is just a
guess.
--
You are receiving this mail because:
You are the assignee for the bug.