[GFS2] Add superblock into key for glock lookups
This adds the superblock as a key for glock lookups. Since the glocks are already stored in a per-superblock table, this has no effect at the moment. Later on this will change though. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
This commit is contained in:
parent
d6a5372768
commit
899be4d3b7
1 changed files with 6 additions and 3 deletions
|
@ -200,6 +200,7 @@ static inline int queue_empty(struct gfs2_glock *gl, struct list_head *head)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static struct gfs2_glock *search_bucket(struct gfs2_gl_hash_bucket *bucket,
|
static struct gfs2_glock *search_bucket(struct gfs2_gl_hash_bucket *bucket,
|
||||||
|
const struct gfs2_sbd *sdp,
|
||||||
const struct lm_lockname *name)
|
const struct lm_lockname *name)
|
||||||
{
|
{
|
||||||
struct gfs2_glock *gl;
|
struct gfs2_glock *gl;
|
||||||
|
@ -209,6 +210,8 @@ static struct gfs2_glock *search_bucket(struct gfs2_gl_hash_bucket *bucket,
|
||||||
continue;
|
continue;
|
||||||
if (!lm_name_equal(&gl->gl_name, name))
|
if (!lm_name_equal(&gl->gl_name, name))
|
||||||
continue;
|
continue;
|
||||||
|
if (gl->gl_sbd != sdp)
|
||||||
|
continue;
|
||||||
|
|
||||||
kref_get(&gl->gl_ref);
|
kref_get(&gl->gl_ref);
|
||||||
|
|
||||||
|
@ -233,7 +236,7 @@ static struct gfs2_glock *gfs2_glock_find(struct gfs2_sbd *sdp,
|
||||||
struct gfs2_glock *gl;
|
struct gfs2_glock *gl;
|
||||||
|
|
||||||
read_lock(&bucket->hb_lock);
|
read_lock(&bucket->hb_lock);
|
||||||
gl = search_bucket(bucket, name);
|
gl = search_bucket(bucket, sdp, name);
|
||||||
read_unlock(&bucket->hb_lock);
|
read_unlock(&bucket->hb_lock);
|
||||||
|
|
||||||
return gl;
|
return gl;
|
||||||
|
@ -266,7 +269,7 @@ int gfs2_glock_get(struct gfs2_sbd *sdp, uint64_t number,
|
||||||
bucket = &sdp->sd_gl_hash[gl_hash(&name)];
|
bucket = &sdp->sd_gl_hash[gl_hash(&name)];
|
||||||
|
|
||||||
read_lock(&bucket->hb_lock);
|
read_lock(&bucket->hb_lock);
|
||||||
gl = search_bucket(bucket, &name);
|
gl = search_bucket(bucket, sdp, &name);
|
||||||
read_unlock(&bucket->hb_lock);
|
read_unlock(&bucket->hb_lock);
|
||||||
|
|
||||||
if (gl || !create) {
|
if (gl || !create) {
|
||||||
|
@ -311,7 +314,7 @@ int gfs2_glock_get(struct gfs2_sbd *sdp, uint64_t number,
|
||||||
goto fail_aspace;
|
goto fail_aspace;
|
||||||
|
|
||||||
write_lock(&bucket->hb_lock);
|
write_lock(&bucket->hb_lock);
|
||||||
tmp = search_bucket(bucket, &name);
|
tmp = search_bucket(bucket, sdp, &name);
|
||||||
if (tmp) {
|
if (tmp) {
|
||||||
write_unlock(&bucket->hb_lock);
|
write_unlock(&bucket->hb_lock);
|
||||||
glock_free(gl);
|
glock_free(gl);
|
||||||
|
|
Loading…
Reference in a new issue