diff options
author | Steven Whitehouse <swhiteho@redhat.com> | 2010-10-06 04:58:44 -0400 |
---|---|---|
committer | Steven Whitehouse <swhiteho@redhat.com> | 2010-10-06 04:58:44 -0400 |
commit | 134669854e3a680d8aad9a4047891c653715f4c0 (patch) | |
tree | 8c6f6b2615fc7bf84c69b02bde33065aaa8688c9 /fs/gfs2 | |
parent | 46290341cd649c2bfb69e5067c1804c0395c83a1 (diff) |
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>
Diffstat (limited to 'fs/gfs2')
-rw-r--r-- | fs/gfs2/glops.c | 1 | ||||
-rw-r--r-- | fs/gfs2/sys.c | 5 |
2 files changed, 4 insertions, 2 deletions
diff --git a/fs/gfs2/glops.c b/fs/gfs2/glops.c index 621d80e8fb2a..0d149dcc04e5 100644 --- a/fs/gfs2/glops.c +++ b/fs/gfs2/glops.c | |||
@@ -452,7 +452,6 @@ const struct gfs2_glock_operations *gfs2_glops_list[] = { | |||
452 | [LM_TYPE_META] = &gfs2_meta_glops, | 452 | [LM_TYPE_META] = &gfs2_meta_glops, |
453 | [LM_TYPE_INODE] = &gfs2_inode_glops, | 453 | [LM_TYPE_INODE] = &gfs2_inode_glops, |
454 | [LM_TYPE_RGRP] = &gfs2_rgrp_glops, | 454 | [LM_TYPE_RGRP] = &gfs2_rgrp_glops, |
455 | [LM_TYPE_NONDISK] = &gfs2_trans_glops, | ||
456 | [LM_TYPE_IOPEN] = &gfs2_iopen_glops, | 455 | [LM_TYPE_IOPEN] = &gfs2_iopen_glops, |
457 | [LM_TYPE_FLOCK] = &gfs2_flock_glops, | 456 | [LM_TYPE_FLOCK] = &gfs2_flock_glops, |
458 | [LM_TYPE_NONDISK] = &gfs2_nondisk_glops, | 457 | [LM_TYPE_NONDISK] = &gfs2_nondisk_glops, |
diff --git a/fs/gfs2/sys.c b/fs/gfs2/sys.c index 64082a5feae1..748ccb557c18 100644 --- a/fs/gfs2/sys.c +++ b/fs/gfs2/sys.c | |||
@@ -230,7 +230,10 @@ static ssize_t demote_rq_store(struct gfs2_sbd *sdp, const char *buf, size_t len | |||
230 | 230 | ||
231 | if (gltype > LM_TYPE_JOURNAL) | 231 | if (gltype > LM_TYPE_JOURNAL) |
232 | return -EINVAL; | 232 | return -EINVAL; |
233 | glops = gfs2_glops_list[gltype]; | 233 | if (gltype == LM_TYPE_NONDISK && glnum == GFS2_TRANS_LOCK) |
234 | glops = &gfs2_trans_glops; | ||
235 | else | ||
236 | glops = gfs2_glops_list[gltype]; | ||
234 | if (glops == NULL) | 237 | if (glops == NULL) |
235 | return -EINVAL; | 238 | return -EINVAL; |
236 | if (!test_and_set_bit(SDF_DEMOTE, &sdp->sd_flags)) | 239 | if (!test_and_set_bit(SDF_DEMOTE, &sdp->sd_flags)) |