When blob persist starts, there can already be multiple of such requests pending. It is possible to complete a set of persists at once, if blob state after their execution would be the same. This is the case when persists are already pending when a particular persist request is started. This patch implements such mechanism by introducing persists_to_complete queue, containing entries that were previously queued up before starting the current persist request. If there are any entries in this queue, further requests are put into pending_persists. When first request from persists_to_complete is persisted, completions are issued for all requests on that queue at once. If at that point there are any new entries on pending_persists, all of them are put into persists_to_complete. Persist process is started again with the first request from that queue. Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I10063e55d6f821b1863de016d3148da6a719a422 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/7643 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> |
||
---|---|---|
.. | ||
blob_bs_dev.c | ||
blobstore.c | ||
blobstore.h | ||
Makefile | ||
request.c | ||
request.h | ||
spdk_blob.map | ||
zeroes.c |