On 2/5/19 5:56 PM, Al Viro wrote: > On Tue, Feb 05, 2019 at 12:08:25PM -0700, Jens Axboe wrote: >> Proof is in the pudding, here's the main commit introducing io_uring >> and now wiring it up to the AF_UNIX garbage collection: >> >> http://git.kernel.dk/cgit/linux-block/commit/?h=io_uring&id=158e6f42b67d0abe9ee84886b96ca8c4b3d3dfd5 >> >> How does that look? > > In a word - wrong. Some theory: garbage collector assumes that there is > a subset of file references such that > * for all files with such references there's an associated unix_sock. > * all such references are stored in SCM_RIGHTS datagrams that can be > found by the garbage collector (currently: for data-bearing AF_UNIX sockets - > queued SCM_RIGHTS datagrams, for listeners - SCM_RIGHTS datagrams sent via > yet-to-be-accepted connections). > * there is an efficient way to count those references for given file > (->inflight of the corresponding unix_sock). > * removal of those references would render the graph acyclic. > * file can _NOT_ be subject to syscalls unless there are references > to it outside of that subset. IOW, we cannot use fget() for registering files, and we still need fget/fput in the fast path to retain safe use of the file. If I'm understanding you correctly? Just trying to ensure that I understand what you're saying here, as it seems to refer to the file registration part, not the main patch (which did get reworked, though). -- Jens Axboe