mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 07:43:54 -06:00
qed: protect table cache with CoMutex
This makes the driver thread-safe. The CoMutex is dropped temporarily while accessing the data clusters or the backing file. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Message-Id: <20170629132749.997-10-pbonzini@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Fam Zheng <famz@redhat.com> Signed-off-by: Fam Zheng <famz@redhat.com>
This commit is contained in:
parent
61c7887e0f
commit
1f01e50b83
5 changed files with 129 additions and 54 deletions
|
@ -101,6 +101,8 @@ CachedL2Table *qed_alloc_l2_cache_entry(L2TableCache *l2_cache)
|
|||
/**
|
||||
* Decrease an entry's reference count and free if necessary when the reference
|
||||
* count drops to zero.
|
||||
*
|
||||
* Called with table_lock held.
|
||||
*/
|
||||
void qed_unref_l2_cache_entry(CachedL2Table *entry)
|
||||
{
|
||||
|
@ -122,6 +124,8 @@ void qed_unref_l2_cache_entry(CachedL2Table *entry)
|
|||
*
|
||||
* For a cached entry, this function increases the reference count and returns
|
||||
* the entry.
|
||||
*
|
||||
* Called with table_lock held.
|
||||
*/
|
||||
CachedL2Table *qed_find_l2_cache_entry(L2TableCache *l2_cache, uint64_t offset)
|
||||
{
|
||||
|
@ -150,6 +154,8 @@ CachedL2Table *qed_find_l2_cache_entry(L2TableCache *l2_cache, uint64_t offset)
|
|||
* N.B. This function steals a reference to the l2_table from the caller so the
|
||||
* caller must obtain a new reference by issuing a call to
|
||||
* qed_find_l2_cache_entry().
|
||||
*
|
||||
* Called with table_lock held.
|
||||
*/
|
||||
void qed_commit_l2_cache_entry(L2TableCache *l2_cache, CachedL2Table *l2_table)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue