aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/gfs2/glock.c10
-rw-r--r--fs/gfs2/glock.h1
-rw-r--r--fs/gfs2/ops_fstype.c10
-rw-r--r--fs/gfs2/recovery.c3
-rw-r--r--fs/gfs2/super.c6
-rw-r--r--fs/gfs2/trans.c3
6 files changed, 14 insertions, 19 deletions
diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c
index 0f317155915d..67e3f2a4d109 100644
--- a/fs/gfs2/glock.c
+++ b/fs/gfs2/glock.c
@@ -357,7 +357,6 @@ int gfs2_glock_get(struct gfs2_sbd *sdp, uint64_t number,
357void gfs2_holder_init(struct gfs2_glock *gl, unsigned int state, unsigned flags, 357void gfs2_holder_init(struct gfs2_glock *gl, unsigned int state, unsigned flags,
358 struct gfs2_holder *gh) 358 struct gfs2_holder *gh)
359{ 359{
360 flags |= GL_NEVER_RECURSE;
361 INIT_LIST_HEAD(&gh->gh_list); 360 INIT_LIST_HEAD(&gh->gh_list);
362 gh->gh_gl = gl; 361 gh->gh_gl = gl;
363 gh->gh_ip = (unsigned long)__builtin_return_address(0); 362 gh->gh_ip = (unsigned long)__builtin_return_address(0);
@@ -387,7 +386,7 @@ void gfs2_holder_init(struct gfs2_glock *gl, unsigned int state, unsigned flags,
387void gfs2_holder_reinit(unsigned int state, unsigned flags, struct gfs2_holder *gh) 386void gfs2_holder_reinit(unsigned int state, unsigned flags, struct gfs2_holder *gh)
388{ 387{
389 gh->gh_state = state; 388 gh->gh_state = state;
390 gh->gh_flags = flags | GL_NEVER_RECURSE; 389 gh->gh_flags = flags;
391 if (gh->gh_state == LM_ST_EXCLUSIVE) 390 if (gh->gh_state == LM_ST_EXCLUSIVE)
392 gh->gh_flags |= GL_LOCAL_EXCL; 391 gh->gh_flags |= GL_LOCAL_EXCL;
393 392
@@ -731,8 +730,7 @@ static void handle_callback(struct gfs2_glock *gl, unsigned int state)
731 } else { 730 } else {
732 spin_unlock(&gl->gl_spin); 731 spin_unlock(&gl->gl_spin);
733 732
734 new_gh = gfs2_holder_get(gl, state, 733 new_gh = gfs2_holder_get(gl, state, LM_FLAG_TRY,
735 LM_FLAG_TRY | GL_NEVER_RECURSE,
736 GFP_KERNEL | __GFP_NOFAIL), 734 GFP_KERNEL | __GFP_NOFAIL),
737 set_bit(HIF_DEMOTE, &new_gh->gh_iflags); 735 set_bit(HIF_DEMOTE, &new_gh->gh_iflags);
738 set_bit(HIF_DEALLOC, &new_gh->gh_iflags); 736 set_bit(HIF_DEALLOC, &new_gh->gh_iflags);
@@ -1336,7 +1334,7 @@ void gfs2_glock_force_drop(struct gfs2_glock *gl)
1336{ 1334{
1337 struct gfs2_holder gh; 1335 struct gfs2_holder gh;
1338 1336
1339 gfs2_holder_init(gl, LM_ST_UNLOCKED, GL_NEVER_RECURSE, &gh); 1337 gfs2_holder_init(gl, LM_ST_UNLOCKED, 0, &gh);
1340 set_bit(HIF_DEMOTE, &gh.gh_iflags); 1338 set_bit(HIF_DEMOTE, &gh.gh_iflags);
1341 1339
1342 spin_lock(&gl->gl_spin); 1340 spin_lock(&gl->gl_spin);
@@ -1401,7 +1399,7 @@ int gfs2_glock_be_greedy(struct gfs2_glock *gl, unsigned int time)
1401 } 1399 }
1402 gh = &gr->gr_gh; 1400 gh = &gr->gr_gh;
1403 1401
1404 gfs2_holder_init(gl, 0, GL_NEVER_RECURSE, gh); 1402 gfs2_holder_init(gl, 0, 0, gh);
1405 set_bit(HIF_GREEDY, &gh->gh_iflags); 1403 set_bit(HIF_GREEDY, &gh->gh_iflags);
1406 INIT_WORK(&gr->gr_work, greedy_work, gr); 1404 INIT_WORK(&gr->gr_work, greedy_work, gr);
1407 1405
diff --git a/fs/gfs2/glock.h b/fs/gfs2/glock.h
index ed5bc3e65397..6f9c88ed5383 100644
--- a/fs/gfs2/glock.h
+++ b/fs/gfs2/glock.h
@@ -26,7 +26,6 @@
26#define GL_NOCACHE 0x00000400 26#define GL_NOCACHE 0x00000400
27#define GL_SYNC 0x00000800 27#define GL_SYNC 0x00000800
28#define GL_NOCANCEL 0x00001000 28#define GL_NOCANCEL 0x00001000
29#define GL_NEVER_RECURSE 0x00002000
30#define GL_AOP 0x00004000 29#define GL_AOP 0x00004000
31 30
32#define GLR_TRYFAILED 13 31#define GLR_TRYFAILED 13
diff --git a/fs/gfs2/ops_fstype.c b/fs/gfs2/ops_fstype.c
index 70745f3561a6..d19d98766aa5 100644
--- a/fs/gfs2/ops_fstype.c
+++ b/fs/gfs2/ops_fstype.c
@@ -223,7 +223,7 @@ static int init_locking(struct gfs2_sbd *sdp, struct gfs2_holder *mount_gh,
223 error = gfs2_glock_nq_num(sdp, 223 error = gfs2_glock_nq_num(sdp,
224 GFS2_LIVE_LOCK, &gfs2_nondisk_glops, 224 GFS2_LIVE_LOCK, &gfs2_nondisk_glops,
225 LM_ST_SHARED, 225 LM_ST_SHARED,
226 LM_FLAG_NOEXP | GL_EXACT | GL_NEVER_RECURSE, 226 LM_FLAG_NOEXP | GL_EXACT,
227 &sdp->sd_live_gh); 227 &sdp->sd_live_gh);
228 if (error) { 228 if (error) {
229 fs_err(sdp, "can't acquire live glock: %d\n", error); 229 fs_err(sdp, "can't acquire live glock: %d\n", error);
@@ -638,7 +638,7 @@ static int init_per_node(struct gfs2_sbd *sdp, int undo)
638 638
639 ip = sdp->sd_ir_inode->u.generic_ip; 639 ip = sdp->sd_ir_inode->u.generic_ip;
640 error = gfs2_glock_nq_init(ip->i_gl, 640 error = gfs2_glock_nq_init(ip->i_gl,
641 LM_ST_EXCLUSIVE, GL_NEVER_RECURSE, 641 LM_ST_EXCLUSIVE, 0,
642 &sdp->sd_ir_gh); 642 &sdp->sd_ir_gh);
643 if (error) { 643 if (error) {
644 fs_err(sdp, "can't lock local \"ir\" file: %d\n", error); 644 fs_err(sdp, "can't lock local \"ir\" file: %d\n", error);
@@ -647,7 +647,7 @@ static int init_per_node(struct gfs2_sbd *sdp, int undo)
647 647
648 ip = sdp->sd_sc_inode->u.generic_ip; 648 ip = sdp->sd_sc_inode->u.generic_ip;
649 error = gfs2_glock_nq_init(ip->i_gl, 649 error = gfs2_glock_nq_init(ip->i_gl,
650 LM_ST_EXCLUSIVE, GL_NEVER_RECURSE, 650 LM_ST_EXCLUSIVE, 0,
651 &sdp->sd_sc_gh); 651 &sdp->sd_sc_gh);
652 if (error) { 652 if (error) {
653 fs_err(sdp, "can't lock local \"sc\" file: %d\n", error); 653 fs_err(sdp, "can't lock local \"sc\" file: %d\n", error);
@@ -656,7 +656,7 @@ static int init_per_node(struct gfs2_sbd *sdp, int undo)
656 656
657 ip = sdp->sd_ut_inode->u.generic_ip; 657 ip = sdp->sd_ut_inode->u.generic_ip;
658 error = gfs2_glock_nq_init(ip->i_gl, 658 error = gfs2_glock_nq_init(ip->i_gl,
659 LM_ST_EXCLUSIVE, GL_NEVER_RECURSE, 659 LM_ST_EXCLUSIVE, 0,
660 &sdp->sd_ut_gh); 660 &sdp->sd_ut_gh);
661 if (error) { 661 if (error) {
662 fs_err(sdp, "can't lock local \"ut\" file: %d\n", error); 662 fs_err(sdp, "can't lock local \"ut\" file: %d\n", error);
@@ -665,7 +665,7 @@ static int init_per_node(struct gfs2_sbd *sdp, int undo)
665 665
666 ip = sdp->sd_qc_inode->u.generic_ip; 666 ip = sdp->sd_qc_inode->u.generic_ip;
667 error = gfs2_glock_nq_init(ip->i_gl, 667 error = gfs2_glock_nq_init(ip->i_gl,
668 LM_ST_EXCLUSIVE, GL_NEVER_RECURSE, 668 LM_ST_EXCLUSIVE, 0,
669 &sdp->sd_qc_gh); 669 &sdp->sd_qc_gh);
670 if (error) { 670 if (error) {
671 fs_err(sdp, "can't lock local \"qc\" file: %d\n", error); 671 fs_err(sdp, "can't lock local \"qc\" file: %d\n", error);
diff --git a/fs/gfs2/recovery.c b/fs/gfs2/recovery.c
index 7d467966f92c..d916817fb6e3 100644
--- a/fs/gfs2/recovery.c
+++ b/fs/gfs2/recovery.c
@@ -487,8 +487,7 @@ int gfs2_recover_journal(struct gfs2_jdesc *jd)
487 error = gfs2_glock_nq_init(sdp->sd_trans_gl, 487 error = gfs2_glock_nq_init(sdp->sd_trans_gl,
488 LM_ST_SHARED, 488 LM_ST_SHARED,
489 LM_FLAG_NOEXP | LM_FLAG_PRIORITY | 489 LM_FLAG_NOEXP | LM_FLAG_PRIORITY |
490 GL_NEVER_RECURSE | GL_NOCANCEL | 490 GL_NOCANCEL | GL_NOCACHE,
491 GL_NOCACHE,
492 &t_gh); 491 &t_gh);
493 if (error) 492 if (error)
494 goto fail_gunlock_ji; 493 goto fail_gunlock_ji;
diff --git a/fs/gfs2/super.c b/fs/gfs2/super.c
index a4da649d086f..f0dbd2d7aadc 100644
--- a/fs/gfs2/super.c
+++ b/fs/gfs2/super.c
@@ -469,7 +469,7 @@ int gfs2_make_fs_rw(struct gfs2_sbd *sdp)
469 int error; 469 int error;
470 470
471 error = gfs2_glock_nq_init(sdp->sd_trans_gl, LM_ST_SHARED, 471 error = gfs2_glock_nq_init(sdp->sd_trans_gl, LM_ST_SHARED,
472 GL_LOCAL_EXCL | GL_NEVER_RECURSE, &t_gh); 472 GL_LOCAL_EXCL, &t_gh);
473 if (error) 473 if (error)
474 return error; 474 return error;
475 475
@@ -530,7 +530,7 @@ int gfs2_make_fs_ro(struct gfs2_sbd *sdp)
530 gfs2_statfs_sync(sdp); 530 gfs2_statfs_sync(sdp);
531 531
532 error = gfs2_glock_nq_init(sdp->sd_trans_gl, LM_ST_SHARED, 532 error = gfs2_glock_nq_init(sdp->sd_trans_gl, LM_ST_SHARED,
533 GL_LOCAL_EXCL | GL_NEVER_RECURSE | GL_NOCACHE, 533 GL_LOCAL_EXCL | GL_NOCACHE,
534 &t_gh); 534 &t_gh);
535 if (error && !test_bit(SDF_SHUTDOWN, &sdp->sd_flags)) 535 if (error && !test_bit(SDF_SHUTDOWN, &sdp->sd_flags))
536 return error; 536 return error;
@@ -869,7 +869,7 @@ int gfs2_lock_fs_check_clean(struct gfs2_sbd *sdp, struct gfs2_holder *t_gh)
869 } 869 }
870 870
871 error = gfs2_glock_nq_init(sdp->sd_trans_gl, LM_ST_DEFERRED, 871 error = gfs2_glock_nq_init(sdp->sd_trans_gl, LM_ST_DEFERRED,
872 LM_FLAG_PRIORITY | GL_NEVER_RECURSE | GL_NOCACHE, 872 LM_FLAG_PRIORITY | GL_NOCACHE,
873 t_gh); 873 t_gh);
874 874
875 list_for_each_entry(jd, &sdp->sd_jindex_list, jd_list) { 875 list_for_each_entry(jd, &sdp->sd_jindex_list, jd_list) {
diff --git a/fs/gfs2/trans.c b/fs/gfs2/trans.c
index 6b02d8c38f0f..18c606d07126 100644
--- a/fs/gfs2/trans.c
+++ b/fs/gfs2/trans.c
@@ -50,8 +50,7 @@ int gfs2_trans_begin(struct gfs2_sbd *sdp, unsigned int blocks,
50 sizeof(uint64_t)); 50 sizeof(uint64_t));
51 INIT_LIST_HEAD(&tr->tr_list_buf); 51 INIT_LIST_HEAD(&tr->tr_list_buf);
52 52
53 gfs2_holder_init(sdp->sd_trans_gl, LM_ST_SHARED, 53 gfs2_holder_init(sdp->sd_trans_gl, LM_ST_SHARED, 0, &tr->tr_t_gh);
54 GL_NEVER_RECURSE, &tr->tr_t_gh);
55 54
56 error = gfs2_glock_nq(&tr->tr_t_gh); 55 error = gfs2_glock_nq(&tr->tr_t_gh);
57 if (error) 56 if (error)