Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-fixes
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
This commit is contained in:
commit
af3a3ab296
1 changed files with 7 additions and 3 deletions
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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) {
|
||||
|
|
Loading…
Reference in a new issue