OSDN Git Service

nfsd: use ktime_get_seconds() for timestamps
authorArnd Bergmann <arnd@arndb.de>
Fri, 20 Oct 2017 09:25:34 +0000 (11:25 +0200)
committerJ. Bruce Fields <bfields@redhat.com>
Thu, 19 Dec 2019 22:46:08 +0000 (17:46 -0500)
The delegation logic in nfsd uses the somewhat inefficient
seconds_since_boot() function to record time intervals.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/nfsd/nfs4state.c

index be14113..7bba1e1 100644 (file)
@@ -854,7 +854,7 @@ static void nfs4_free_deleg(struct nfs4_stid *stid)
 static DEFINE_SPINLOCK(blocked_delegations_lock);
 static struct bloom_pair {
        int     entries, old_entries;
-       time_t  swap_time;
+       time64_t swap_time;
        int     new; /* index into 'set' */
        DECLARE_BITMAP(set[2], 256);
 } blocked_delegations;
@@ -866,15 +866,15 @@ static int delegation_blocked(struct knfsd_fh *fh)
 
        if (bd->entries == 0)
                return 0;
-       if (seconds_since_boot() - bd->swap_time > 30) {
+       if (ktime_get_seconds() - bd->swap_time > 30) {
                spin_lock(&blocked_delegations_lock);
-               if (seconds_since_boot() - bd->swap_time > 30) {
+               if (ktime_get_seconds() - bd->swap_time > 30) {
                        bd->entries -= bd->old_entries;
                        bd->old_entries = bd->entries;
                        memset(bd->set[bd->new], 0,
                               sizeof(bd->set[0]));
                        bd->new = 1-bd->new;
-                       bd->swap_time = seconds_since_boot();
+                       bd->swap_time = ktime_get_seconds();
                }
                spin_unlock(&blocked_delegations_lock);
        }
@@ -904,7 +904,7 @@ static void block_delegations(struct knfsd_fh *fh)
        __set_bit((hash>>8)&255, bd->set[bd->new]);
        __set_bit((hash>>16)&255, bd->set[bd->new]);
        if (bd->entries == 0)
-               bd->swap_time = seconds_since_boot();
+               bd->swap_time = ktime_get_seconds();
        bd->entries += 1;
        spin_unlock(&blocked_delegations_lock);
 }