OSDN Git Service

migration: Fix multi-thread compression bug
authorLiang Li <liang.z.li@intel.com>
Thu, 5 May 2016 07:32:51 +0000 (15:32 +0800)
committerAmit Shah <amit.shah@redhat.com>
Fri, 17 Jun 2016 12:54:01 +0000 (18:24 +0530)
commit73a8912b8aeed1c992e3f9cb4880e9d1edb935de
tree78442fbd586a9dbcde6c0c1966f31e23ddf8fc78
parent6dcf66681aea2a371ddd63770bf80615652f5c94
migration: Fix multi-thread compression bug

Recently, a bug related to multiple thread compression feature for
live migration is reported. The destination side will be blocked
during live migration if there are heavy workload in host and
memory intensive workload in guest, this is most likely to happen
when there is one decompression thread.

Some parts of the decompression code are incorrect:
1. The main thread receives data from source side will enter a busy
loop to wait for a free decompression thread.
2. A lock is needed to protect the decomp_param[idx]->start, because
it is checked in the main thread and is updated in the decompression
thread.

Fix these two issues by following the code pattern for compression.

Signed-off-by: Liang Li <liang.z.li@intel.com>
Reported-by: Daniel P. Berrange <berrange@redhat.com>
Reviewed-by: Daniel P. Berrange <berrange@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Tested-by: Daniel P. Berrange <berrange@redhat.com>
Signed-off-by: Liang Li <liang.z.li@intel.com>
Message-Id: <1462433579-13691-2-git-send-email-liang.z.li@intel.com>
Signed-off-by: Amit Shah <amit.shah@redhat.com>
migration/ram.c