Applying with these fixes on my side:
- dropped the "v2:" and "v1:" lines;
- "the held writes stay in D state" became "the writers stay in D
state";
- put back why patch 1 goes first.
On Tue, 10 Nov 2026 20:00:31 +0100, Denis V. Lunev wrote:
> the dispatcher for the retry, so the held writes stay in D state until
> other I/O reaches the device (VSTOR-154182). The destructor is also
> made to stop the timer and the event work.
The writers wait in D state, not the held pios. The last sentence
replaced the v1 one that said why patch 1 has to come first; that
reason is now said nowhere. The new text:
A write that fails with ENOSPC on the image is held and retried by
enospc_timer, so that I/O resumes once space is freed. Nothing wakes
the dispatcher for the retry, so the writers stay in D state until
other I/O reaches the device (VSTOR-154182).
Patch 1 makes the destructor stop the timer and the event work. It goes
first because with patch 2 a timer that expires after the destructor
also calls wake_up_process() on a dispatcher thread that is gone.
> v2: cancel event_work in ploop_destroy(), reword the messages.
> v1: http://lore.virtuozzo.com/kernel/[email protected]/
The cover goes into each commit as the "Patchset description", and the
version history does not belong in the git log.
Separate patch, not needed for this series; I created a task for
it:
1. ploop_try_delay_enospc(): hold deferred_lock from the wants_suspend
test through schedule_work(). An ENOSPC endio that stalls between
llist_add() and mod_timer() can see presuspend resubmit its pio, the
request complete and the table go away, and then arm the timer and
queue event_work on the freed struct. No cancel in ploop_destroy()
can close that, as the endio itself touches the struct after the
free. presuspend sets wants_suspend under deferred_lock, so holding
it across the whole delay does. It needs an asynchronous ENOSPC
completion that stalls across the teardown, and it is as old as the
driver. This is what Sashiko's first remark on 1/2 comes down to.
https://virtuozzo.atlassian.net/browse/VSTOR-154847
--
Konstantin Khorenko,
Virtuozzo Linux Kernel Team
_______________________________________________
Devel mailing list
[email protected]
https://lists.openvz.org/mailman/listinfo/devel