]> rtime.felk.cvut.cz Git - zynq/linux.git/blobdiff - fs/nfs/nfs4state.c
Apply preempt_rt patch-4.9-rt1.patch.xz
[zynq/linux.git] / fs / nfs / nfs4state.c
index 0959c96616623f876a5905deb6e03c1a438fe338..dabd834d768622dc8cb268305c67d3ba3d790d5e 100644 (file)
@@ -488,7 +488,7 @@ nfs4_alloc_state_owner(struct nfs_server *server,
        nfs4_init_seqid_counter(&sp->so_seqid);
        atomic_set(&sp->so_count, 1);
        INIT_LIST_HEAD(&sp->so_lru);
-       seqcount_init(&sp->so_reclaim_seqcount);
+       seqlock_init(&sp->so_reclaim_seqlock);
        mutex_init(&sp->so_delegreturn_mutex);
        return sp;
 }
@@ -1497,8 +1497,12 @@ static int nfs4_reclaim_open_state(struct nfs4_state_owner *sp, const struct nfs
         * recovering after a network partition or a reboot from a
         * server that doesn't support a grace period.
         */
+#ifdef CONFIG_PREEMPT_RT_FULL
+       write_seqlock(&sp->so_reclaim_seqlock);
+#else
+       write_seqcount_begin(&sp->so_reclaim_seqlock.seqcount);
+#endif
        spin_lock(&sp->so_lock);
-       raw_write_seqcount_begin(&sp->so_reclaim_seqcount);
 restart:
        list_for_each_entry(state, &sp->so_states, open_states) {
                if (!test_and_clear_bit(ops->state_flag_bit, &state->flags))
@@ -1567,14 +1571,20 @@ restart:
                spin_lock(&sp->so_lock);
                goto restart;
        }
-       raw_write_seqcount_end(&sp->so_reclaim_seqcount);
        spin_unlock(&sp->so_lock);
+#ifdef CONFIG_PREEMPT_RT_FULL
+       write_sequnlock(&sp->so_reclaim_seqlock);
+#else
+       write_seqcount_end(&sp->so_reclaim_seqlock.seqcount);
+#endif
        return 0;
 out_err:
        nfs4_put_open_state(state);
-       spin_lock(&sp->so_lock);
-       raw_write_seqcount_end(&sp->so_reclaim_seqcount);
-       spin_unlock(&sp->so_lock);
+#ifdef CONFIG_PREEMPT_RT_FULL
+       write_sequnlock(&sp->so_reclaim_seqlock);
+#else
+       write_seqcount_end(&sp->so_reclaim_seqlock.seqcount);
+#endif
        return status;
 }