The commit is pushed to "branch-rh7-3.10.0-123.1.2-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git after rh7-3.10.0-123.1.2.vz7.5.1 ------> commit a4d6baccc4792451330b47c9fd1b70fa3c73f73c Author: Andrey Smetanin <asmeta...@virtuozzo.com> Date: Tue May 19 08:27:02 2015 +0400
ploop: fix check_zero optimization v2 We can skip zero writes only if all lower deltas has no mapping for given cluser. Let's use map_index_fault() as we do it for unaligned requests. https://jira.sw.ru/browse/PSBM-23452 Signed-off-by: Dmitry Monakhov <dmonak...@openvz.org> Acked-by: Maxim V. Patlasov <mpatla...@parallels.com> --- drivers/block/ploop/dev.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/drivers/block/ploop/dev.c b/drivers/block/ploop/dev.c index e3422d8..0124349 100644 --- a/drivers/block/ploop/dev.c +++ b/drivers/block/ploop/dev.c @@ -2148,24 +2148,28 @@ delta_io: &sbl, iblk, 1<<plo->cluster_log); } } else { - if (!whole_block(plo, preq)) { - if (map_index_fault(preq) == 0) { + if (!whole_block(plo, preq) && map_index_fault(preq) == 0) { __TRACE("f %p %u\n", preq, preq->req_cluster); return; - } - } else { - plo->st.bio_alloc_whole++; } if (plo->tune.check_zeros && check_zeros(&preq->bl)) { + if (map_index_fault(preq) == 0) { + __TRACE("f %p %u\n", preq, preq->req_cluster); + return; + } preq->eng_state = PLOOP_E_COMPLETE; /* Not ploop_complete_request(). * This can be TRANS request. */ ploop_complete_io_state(preq); + if(whole_block(plo, preq)) + plo->st.bio_alloc_whole++; plo->st.bio_wzero++; return; } + if(whole_block(plo, preq)) + plo->st.bio_alloc_whole++; spin_lock_irq(&plo->lock); ploop_add_lockout(preq, 0); _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel