Add functions to lock specific hash bucket
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
This commit is contained in:
parent
fd88c2c3a4
commit
93bda499c7
@ -221,6 +221,34 @@ int ocf_metadata_hash_try_lock(struct ocf_metadata_lock *metadata_lock,
|
||||
return 0;
|
||||
}
|
||||
|
||||
void ocf_metadata_lock_hash_rd(struct ocf_metadata_lock *metadata_lock,
|
||||
ocf_cache_line_t hash)
|
||||
{
|
||||
ocf_metadata_start_shared_access(metadata_lock);
|
||||
ocf_metadata_hash_lock(metadata_lock, hash, OCF_METADATA_RD);
|
||||
}
|
||||
|
||||
void ocf_metadata_unlock_hash_rd(struct ocf_metadata_lock *metadata_lock,
|
||||
ocf_cache_line_t hash)
|
||||
{
|
||||
ocf_metadata_hash_unlock(metadata_lock, hash, OCF_METADATA_RD);
|
||||
ocf_metadata_end_shared_access(metadata_lock);
|
||||
}
|
||||
|
||||
void ocf_metadata_lock_hash_wr(struct ocf_metadata_lock *metadata_lock,
|
||||
ocf_cache_line_t hash)
|
||||
{
|
||||
ocf_metadata_start_shared_access(metadata_lock);
|
||||
ocf_metadata_hash_lock(metadata_lock, hash, OCF_METADATA_WR);
|
||||
}
|
||||
|
||||
void ocf_metadata_unlock_hash_wr(struct ocf_metadata_lock *metadata_lock,
|
||||
ocf_cache_line_t hash)
|
||||
{
|
||||
ocf_metadata_hash_unlock(metadata_lock, hash, OCF_METADATA_WR);
|
||||
ocf_metadata_end_shared_access(metadata_lock);
|
||||
}
|
||||
|
||||
/* NOTE: attempt to acquire hash lock for multiple core lines may end up
|
||||
* in deadlock. In order to hash lock multiple core lines safely, use
|
||||
* ocf_req_hash_lock_* functions */
|
||||
|
@ -136,6 +136,17 @@ static inline void ocf_metadata_status_bits_unlock(
|
||||
ocf_metadata_status_bits_unlock(&cache->metadata.lock, \
|
||||
OCF_METADATA_WR)
|
||||
|
||||
/* lock/unlock single hash */
|
||||
void ocf_metadata_lock_hash_rd(struct ocf_metadata_lock *metadata_lock,
|
||||
ocf_cache_line_t hash);
|
||||
void ocf_metadata_unlock_hash_rd(struct ocf_metadata_lock *metadata_lock,
|
||||
ocf_cache_line_t hash);
|
||||
void ocf_metadata_lock_hash_wr(struct ocf_metadata_lock *metadata_lock,
|
||||
ocf_cache_line_t hash);
|
||||
void ocf_metadata_unlock_hash_wr(struct ocf_metadata_lock *metadata_lock,
|
||||
ocf_cache_line_t hash);
|
||||
|
||||
/* lock/unlock single hash provided core id and core line */
|
||||
void ocf_metadata_hash_lock_rd(struct ocf_metadata_lock *metadata_lock,
|
||||
uint32_t core_id, uint64_t core_line);
|
||||
void ocf_metadata_hash_unlock_rd(struct ocf_metadata_lock *metadata_lock,
|
||||
|
Loading…
Reference in New Issue
Block a user