diff options
Diffstat (limited to 'fs/gfs2/glock.c')
-rw-r--r-- | fs/gfs2/glock.c | 16 |
1 files changed, 3 insertions, 13 deletions
diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c index 8e4b55a2bd77..1345c3d44ede 100644 --- a/fs/gfs2/glock.c +++ b/fs/gfs2/glock.c | |||
@@ -391,10 +391,6 @@ void gfs2_holder_init(struct gfs2_glock *gl, unsigned int state, unsigned flags, | |||
391 | gh->gh_flags = flags; | 391 | gh->gh_flags = flags; |
392 | gh->gh_error = 0; | 392 | gh->gh_error = 0; |
393 | gh->gh_iflags = 0; | 393 | gh->gh_iflags = 0; |
394 | |||
395 | if (gh->gh_state == LM_ST_EXCLUSIVE) | ||
396 | gh->gh_flags |= GL_LOCAL_EXCL; | ||
397 | |||
398 | gfs2_glock_hold(gl); | 394 | gfs2_glock_hold(gl); |
399 | } | 395 | } |
400 | 396 | ||
@@ -412,9 +408,6 @@ void gfs2_holder_reinit(unsigned int state, unsigned flags, struct gfs2_holder * | |||
412 | { | 408 | { |
413 | gh->gh_state = state; | 409 | gh->gh_state = state; |
414 | gh->gh_flags = flags; | 410 | gh->gh_flags = flags; |
415 | if (gh->gh_state == LM_ST_EXCLUSIVE) | ||
416 | gh->gh_flags |= GL_LOCAL_EXCL; | ||
417 | |||
418 | gh->gh_iflags &= 1 << HIF_ALLOCED; | 411 | gh->gh_iflags &= 1 << HIF_ALLOCED; |
419 | gh->gh_ip = (unsigned long)__builtin_return_address(0); | 412 | gh->gh_ip = (unsigned long)__builtin_return_address(0); |
420 | } | 413 | } |
@@ -557,11 +550,11 @@ static int rq_promote(struct gfs2_holder *gh) | |||
557 | set_bit(GLF_LOCK, &gl->gl_flags); | 550 | set_bit(GLF_LOCK, &gl->gl_flags); |
558 | } else { | 551 | } else { |
559 | struct gfs2_holder *next_gh; | 552 | struct gfs2_holder *next_gh; |
560 | if (gh->gh_flags & GL_LOCAL_EXCL) | 553 | if (gh->gh_state == LM_ST_EXCLUSIVE) |
561 | return 1; | 554 | return 1; |
562 | next_gh = list_entry(gl->gl_holders.next, struct gfs2_holder, | 555 | next_gh = list_entry(gl->gl_holders.next, struct gfs2_holder, |
563 | gh_list); | 556 | gh_list); |
564 | if (next_gh->gh_flags & GL_LOCAL_EXCL) | 557 | if (next_gh->gh_state == LM_ST_EXCLUSIVE) |
565 | return 1; | 558 | return 1; |
566 | } | 559 | } |
567 | 560 | ||
@@ -1363,10 +1356,7 @@ static int glock_compare(const void *arg_a, const void *arg_b) | |||
1363 | return 1; | 1356 | return 1; |
1364 | if (a->ln_number < b->ln_number) | 1357 | if (a->ln_number < b->ln_number) |
1365 | return -1; | 1358 | return -1; |
1366 | if (gh_a->gh_state == LM_ST_SHARED && gh_b->gh_state == LM_ST_EXCLUSIVE) | 1359 | BUG_ON(gh_a->gh_gl->gl_ops->go_type == gh_b->gh_gl->gl_ops->go_type); |
1367 | return 1; | ||
1368 | if (!(gh_a->gh_flags & GL_LOCAL_EXCL) && (gh_b->gh_flags & GL_LOCAL_EXCL)) | ||
1369 | return 1; | ||
1370 | return 0; | 1360 | return 0; |
1371 | } | 1361 | } |
1372 | 1362 | ||