GFS2: Fix type mapping for demote_rq interface
Mostly the glock operations follow the type of the glock. The one exception is the transaction glock, so we need to check for that directly. Reported-by: Dr. David Alan Gilbert <linux@treblig.org> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
This commit is contained in:
parent
46290341cd
commit
134669854e
|
@ -452,7 +452,6 @@ const struct gfs2_glock_operations *gfs2_glops_list[] = {
|
|||
[LM_TYPE_META] = &gfs2_meta_glops,
|
||||
[LM_TYPE_INODE] = &gfs2_inode_glops,
|
||||
[LM_TYPE_RGRP] = &gfs2_rgrp_glops,
|
||||
[LM_TYPE_NONDISK] = &gfs2_trans_glops,
|
||||
[LM_TYPE_IOPEN] = &gfs2_iopen_glops,
|
||||
[LM_TYPE_FLOCK] = &gfs2_flock_glops,
|
||||
[LM_TYPE_NONDISK] = &gfs2_nondisk_glops,
|
||||
|
|
|
@ -230,7 +230,10 @@ static ssize_t demote_rq_store(struct gfs2_sbd *sdp, const char *buf, size_t len
|
|||
|
||||
if (gltype > LM_TYPE_JOURNAL)
|
||||
return -EINVAL;
|
||||
glops = gfs2_glops_list[gltype];
|
||||
if (gltype == LM_TYPE_NONDISK && glnum == GFS2_TRANS_LOCK)
|
||||
glops = &gfs2_trans_glops;
|
||||
else
|
||||
glops = gfs2_glops_list[gltype];
|
||||
if (glops == NULL)
|
||||
return -EINVAL;
|
||||
if (!test_and_set_bit(SDF_DEMOTE, &sdp->sd_flags))
|
||||
|
|
Loading…
Reference in New Issue