hc
2023-11-22 f743a7adbd6e230d66a6206fa115b59fec2d88eb
kernel/fs/nfs/nfs4state.c
....@@ -515,7 +515,7 @@
515515 nfs4_init_seqid_counter(&sp->so_seqid);
516516 atomic_set(&sp->so_count, 1);
517517 INIT_LIST_HEAD(&sp->so_lru);
518
- seqcount_init(&sp->so_reclaim_seqcount);
518
+ seqlock_init(&sp->so_reclaim_seqlock);
519519 mutex_init(&sp->so_delegreturn_mutex);
520520 return sp;
521521 }
....@@ -1583,8 +1583,12 @@
15831583 * recovering after a network partition or a reboot from a
15841584 * server that doesn't support a grace period.
15851585 */
1586
+#ifdef CONFIG_PREEMPT_RT_FULL
1587
+ write_seqlock(&sp->so_reclaim_seqlock);
1588
+#else
1589
+ write_seqcount_begin(&sp->so_reclaim_seqlock.seqcount);
1590
+#endif
15861591 spin_lock(&sp->so_lock);
1587
- raw_write_seqcount_begin(&sp->so_reclaim_seqcount);
15881592 restart:
15891593 list_for_each_entry(state, &sp->so_states, open_states) {
15901594 if (!test_and_clear_bit(ops->state_flag_bit, &state->flags))
....@@ -1671,14 +1675,20 @@
16711675 spin_lock(&sp->so_lock);
16721676 goto restart;
16731677 }
1674
- raw_write_seqcount_end(&sp->so_reclaim_seqcount);
16751678 spin_unlock(&sp->so_lock);
1679
+#ifdef CONFIG_PREEMPT_RT_FULL
1680
+ write_sequnlock(&sp->so_reclaim_seqlock);
1681
+#else
1682
+ write_seqcount_end(&sp->so_reclaim_seqlock.seqcount);
1683
+#endif
16761684 return 0;
16771685 out_err:
16781686 nfs4_put_open_state(state);
1679
- spin_lock(&sp->so_lock);
1680
- raw_write_seqcount_end(&sp->so_reclaim_seqcount);
1681
- spin_unlock(&sp->so_lock);
1687
+#ifdef CONFIG_PREEMPT_RT_FULL
1688
+ write_sequnlock(&sp->so_reclaim_seqlock);
1689
+#else
1690
+ write_seqcount_end(&sp->so_reclaim_seqlock.seqcount);
1691
+#endif
16821692 return status;
16831693 }
16841694