Skip to content

Commit

Permalink
Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-fixes
Browse files Browse the repository at this point in the history
Pull gfs2 fixes from Steven Whitehouse.

* git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-fixes:
  GFS2: Instruct DLM to avoid queue convert slowdown
  • Loading branch information
torvalds committed Apr 24, 2012
2 parents 423b40e + 4c569a7 commit af3a3ab
Showing 1 changed file with 7 additions and 3 deletions.
10 changes: 7 additions & 3 deletions fs/gfs2/lock_dlm.c
Original file line number Diff line number Diff line change
Expand Up @@ -200,10 +200,11 @@ static int make_mode(const unsigned int lmstate)
return -1;
}

static u32 make_flags(const u32 lkid, const unsigned int gfs_flags,
static u32 make_flags(struct gfs2_glock *gl, const unsigned int gfs_flags,
const int req)
{
u32 lkf = DLM_LKF_VALBLK;
u32 lkid = gl->gl_lksb.sb_lkid;

if (gfs_flags & LM_FLAG_TRY)
lkf |= DLM_LKF_NOQUEUE;
Expand All @@ -227,8 +228,11 @@ static u32 make_flags(const u32 lkid, const unsigned int gfs_flags,
BUG();
}

if (lkid != 0)
if (lkid != 0) {
lkf |= DLM_LKF_CONVERT;
if (test_bit(GLF_BLOCKING, &gl->gl_flags))
lkf |= DLM_LKF_QUECVT;
}

return lkf;
}
Expand All @@ -250,7 +254,7 @@ static int gdlm_lock(struct gfs2_glock *gl, unsigned int req_state,
char strname[GDLM_STRNAME_BYTES] = "";

req = make_mode(req_state);
lkf = make_flags(gl->gl_lksb.sb_lkid, flags, req);
lkf = make_flags(gl, flags, req);
gfs2_glstats_inc(gl, GFS2_LKS_DCOUNT);
gfs2_sbstats_inc(gl, GFS2_LKS_DCOUNT);
if (gl->gl_lksb.sb_lkid) {
Expand Down

0 comments on commit af3a3ab

Please sign in to comment.