On 08/20/2018 08:09 AM, Michal Privoznik wrote:
There are few operations in the storage driver that read/write
data onto volumes. Such operations can take very long time to
finish. During that time the storage pool object is locked which
has bad performance impacts (other threads can't fetch its XML
for instance). This commit prepares the storage driver for
releasing the lock during those operations (downloadVol,
uploadVol, wipeVol).
The performance concurrency implications description could just be moved
to the next patch instead of indicating there "As advertised".
For this commit, noting that we are preparing for future release of the
pool lock while one of the upload, download, or wipe volumes operations
is occurring. This means adjusting the asyncJob count to inhibit pool
operations that would be affected by the volume change from occurring
while we're in the process of upload, download, or wipe of a volume and
similarly adjusting the volume in_use count to inhibit other competing
operations from occurring (or something really generic).
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/storage/storage_driver.c | 34 ++++++++++++++++++++++++++++------
1 file changed, 28 insertions(+), 6 deletions(-)
Reviewed-by: John Ferlan <jferlan(a)redhat.com>
John