return clp->cl_time == 0;
 }
 
-static __be32 mark_client_expired_locked(struct nfs4_client *clp)
-{
-       if (atomic_read(&clp->cl_refcount))
-               return nfserr_jukebox;
-       clp->cl_time = 0;
-       return nfs_ok;
-}
-
 static __be32 get_client_locked(struct nfs4_client *clp)
 {
        struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id);
        spin_unlock(&nn->client_lock);
 }
 
+static __be32 mark_client_expired_locked(struct nfs4_client *clp)
+{
+       if (atomic_read(&clp->cl_refcount))
+               return nfserr_jukebox;
+       unhash_client_locked(clp);
+       return nfs_ok;
+}
+
 static void
 __destroy_client(struct nfs4_client *clp)
 {
                        status = mark_client_expired_locked(old);
                        if (status)
                                goto out_free_conn;
-                       unhash_client_locked(old);
                }
                move_to_confirmed(unconf);
                conf = unconf;
                        status = mark_client_expired_locked(old);
                        if (status)
                                goto out;
-                       unhash_client_locked(old);
                }
                move_to_confirmed(unconf);
                conf = unconf;
                                clp->cl_clientid.cl_id);
                        continue;
                }
-               unhash_client_locked(clp);
                list_add(&clp->cl_lru, &reaplist);
        }
        spin_unlock(&nn->client_lock);