[Devel] [PATCH rh7 0/4] ploop: fix free_list starvation

Maxim Patlasov mpatlasov at virtuozzo.com
Mon Jul 11 21:56:39 PDT 2016


The first patch of the patch-set fixes a minor unrelated
problem. It is trivial.

The remaining three patches try to solve the following
problem:

Under high load, and when push_backup is in progress, it is
possible that all preq-s from free_list will be consumed by
either incoming bio-s waiting for backup tool out-of-band
processing, or some incoming bio-s blocked on the former ones.

Then, ploop reaches maximum possible preq->active_reqs and
goes to sleep waiting for something. But this something is
actually the backup tool who is blocked on reading from
the ploop device. Deadlock.

See per-patch descriptions for details.

https://jira.sw.ru/browse/PSBM-49454

---

Maxim Patlasov (4):
      ploop: fix fsync_reqs accounting
      ploop: introduce plo->free_qlen counter
      ploop: introduce plo->blockable_reqs counter
      ploop: fix free_list starvation


 drivers/block/ploop/dev.c         |  107 ++++++++++++++++++++++++++++++++-----
 drivers/block/ploop/io_direct.c   |    3 +
 drivers/block/ploop/push_backup.c |   74 +++++++++++++++++++++++++-
 drivers/block/ploop/push_backup.h |    6 ++
 drivers/block/ploop/sysfs.c       |   24 ++++++++
 include/linux/ploop/ploop.h       |    5 ++
 6 files changed, 202 insertions(+), 17 deletions(-)

--
Signature


More information about the Devel mailing list