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 _______________________________________________ Devel mailing list [email protected] https://lists.openvz.org/mailman/listinfo/devel
