aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTrond Myklebust <trond.myklebust@primarydata.com>2014-06-05 10:42:37 -0400
committerTrond Myklebust <trond.myklebust@primarydata.com>2014-06-05 13:02:47 -0400
commitabbec2da13f0e4c5d9b78b7e2c025a3e617228ba (patch)
tree7f21e994a1e99775d320a4d8c8972ca4460b62da
parent7b160cfd19e0a3691043d1ac9f4523ed7675cc4d (diff)
NFS: Use raw_write_seqcount_begin/end int nfs4_reclaim_open_state
The addition of lockdep code to write_seqcount_begin/end has lead to a bunch of false positive claims of ABBA deadlocks with the so_lock spinlock. Audits show that this simply cannot happen because the read side code does not spin while holding so_lock. Cc: <stable@vger.kernel.org> # 3.13.x Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
-rw-r--r--fs/nfs/nfs4state.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c
index 2349518eef2c..21275148fc13 100644
--- a/fs/nfs/nfs4state.c
+++ b/fs/nfs/nfs4state.c
@@ -1456,7 +1456,7 @@ static int nfs4_reclaim_open_state(struct nfs4_state_owner *sp, const struct nfs
1456 * server that doesn't support a grace period. 1456 * server that doesn't support a grace period.
1457 */ 1457 */
1458 spin_lock(&sp->so_lock); 1458 spin_lock(&sp->so_lock);
1459 write_seqcount_begin(&sp->so_reclaim_seqcount); 1459 raw_write_seqcount_begin(&sp->so_reclaim_seqcount);
1460restart: 1460restart:
1461 list_for_each_entry(state, &sp->so_states, open_states) { 1461 list_for_each_entry(state, &sp->so_states, open_states) {
1462 if (!test_and_clear_bit(ops->state_flag_bit, &state->flags)) 1462 if (!test_and_clear_bit(ops->state_flag_bit, &state->flags))
@@ -1519,13 +1519,13 @@ restart:
1519 spin_lock(&sp->so_lock); 1519 spin_lock(&sp->so_lock);
1520 goto restart; 1520 goto restart;
1521 } 1521 }
1522 write_seqcount_end(&sp->so_reclaim_seqcount); 1522 raw_write_seqcount_end(&sp->so_reclaim_seqcount);
1523 spin_unlock(&sp->so_lock); 1523 spin_unlock(&sp->so_lock);
1524 return 0; 1524 return 0;
1525out_err: 1525out_err:
1526 nfs4_put_open_state(state); 1526 nfs4_put_open_state(state);
1527 spin_lock(&sp->so_lock); 1527 spin_lock(&sp->so_lock);
1528 write_seqcount_end(&sp->so_reclaim_seqcount); 1528 raw_write_seqcount_end(&sp->so_reclaim_seqcount);
1529 spin_unlock(&sp->so_lock); 1529 spin_unlock(&sp->so_lock);
1530 return status; 1530 return status;
1531} 1531}