All Virtuozzo development lists (kernel + QEMU)
 help / color / mirror / Atom feed
From: "Denis V. Lunev" <den@openvz.org>
To: khorenko@virtuozzo.com, andrey.zhadchenko@virtuozzo.com
Cc: devel@openvz.org
Subject: [Devel] [PATCH hci-8.1 0/2] dm-ploop: fix writes held on ENOSPC never being retried
Date: Mon,  9 Nov 2026 20:06:55 +0100	[thread overview]
Message-ID: <20261109190657.1851487-1-den@openvz.org> (raw)

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. The timer only
sets a flag that the dispatcher consumes, and nothing wakes the
dispatcher, so the held writes are retried only when other I/O reaches
the device. On a device whose only I/O is the held writes, the writers
stay in D state for good after the space is freed (patch 2,
VSTOR-154182).

Patch 1 makes the destructor shut the timer down first. Nothing stops
it there today, and with patch 2 the callback dereferences the
dispatcher thread as well as struct ploop.

Found in a vmcore: 16 writers in D state, submit_enospc set, all 16
pios on enospc_pios, the timer expired 12 s before the crash.

Tested on 6.12.0-211.52.1.22.19.vz10, dm-ploop built out of tree:
- 16 O_DIRECT writers held on a full host ext4, then the space freed
  with no other I/O on the device. Stock: still stuck after 60 s, one
  unrelated read releases them. With the series: done 8 s after the
  space is freed, on the next timer tick;
- ploop test suite, make -j48 test on dev-cl04, green for ploop and
  qcow2 with this series together with the VSTOR-154096 one.

Denis V. Lunev (2):
  dm-ploop: stop enospc_timer in ploop_destroy()
  dm-ploop: fix the ENOSPC retry timer not waking the dispatcher

 drivers/md/dm-ploop-map.c    | 9 +++++----
 drivers/md/dm-ploop-target.c | 1 +
 2 files changed, 6 insertions(+), 4 deletions(-)

-- 
2.53.0

_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

             reply	other threads:[~2026-11-09 19:08 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-09 19:06 Denis V. Lunev [this message]
2026-11-09 19:06 ` [Devel] [PATCH hci-8.1 1/2] dm-ploop: stop enospc_timer in ploop_destroy() Denis V. Lunev
2026-11-09 19:17   ` no-reply
2026-11-09 19:06 ` [Devel] [PATCH hci-8.1 2/2] dm-ploop: fix the ENOSPC retry timer not waking the dispatcher Denis V. Lunev
2026-11-09 19:18   ` no-reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20261109190657.1851487-1-den@openvz.org \
    --to=den@openvz.org \
    --cc=andrey.zhadchenko@virtuozzo.com \
    --cc=devel@openvz.org \
    --cc=khorenko@virtuozzo.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.