Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 04 Mar 2026 19:15:53 +0100
From:      "Christos Margiolis" <christos@freebsd.org>
To:        "Unitrunker" <unitrunker@unitrunker.net>
Cc:        <freebsd-multimedia@freebsd.org>
Subject:   Re: cuse(3) cuse_wait_and_process thread safety
Message-ID:  <DGU7BRMO0NSM.1R59RB18HVL88@freebsd.org>
In-Reply-To: <z4gb0FHta2RgVVOgb9R1aetw5B-mIlUajdokq7xGi4thxQVtsIcZkCTsL4o6WzZbgwx4qy6b4LQoc_mulgDaiPV2BvRL08z-tW-eZLipmdc=@unitrunker.net>

index | next in thread | previous in thread | raw e-mail

On Wed Feb 18, 2026 at 2:14 PM CET, Unitrunker wrote:
> I'm posting this to the multimedia list because virtual_oss is the
> main consumer of cuse(3).
>
> Looking over the documentation for cuse_wait_and_process, cuse.3
> reads:
>
> int cuse_wait_and_process(void) This function will block and do event
> processing. If parallel I/O is required multiple threads must be created
> looping on this function. This function returns 0 on success or a
> negative value on failure. See CUSE_ERR_XXX for known error codes.
>
> My concern lies in the suggestion to provide parallel I/O by having
> multiple threads call this function.
>
> I'm writing this message to get some extra eyes on this and maybe some
> feedback.
>
> cuse_wait_and_process processes exactly one I/O operation and returns.
> No more and no less.
>
> If the cuse driver is holding two pending IO operations for two
> different cuse devices, it isn't so important as to which goes first.
> They can race and not interfere with each other.
>
> However, if there are two or more pending IO operations - such as two
> reads or two writes to the same device and each operation is picked up
> be a different thread at more or less the same time, the second IO
> operation might finish before the first. In the case of virtual_oss,
> this might cause out-of-order buffering of audio data.
>
> Today, virtual_oss creates four threads per virtual device (see
> "create_threads" in usr.sbin/virtual_oss/virtual_oss/main.c). I see a
> potential problem.
>
> I'll be very happy if this turns out to be a non-issue.
>
> Regards,
> Rick

I'm the maintainer of virtual_oss. To be fair, I don't know what was
HPS's (RIP) rationale for giving each device 4 threads, so I'm not sure
how to answer this question. Have you run into the problem you described
since you sent the email?

Christos


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?DGU7BRMO0NSM.1R59RB18HVL88>