diff options
Diffstat (limited to 'usr/src/uts/common/fs/nfs')
-rw-r--r-- | usr/src/uts/common/fs/nfs/nfs4_client.c | 18 | ||||
-rw-r--r-- | usr/src/uts/common/fs/nfs/nfs4_db.c | 9 | ||||
-rw-r--r-- | usr/src/uts/common/fs/nfs/nfs4_deleg_ops.c | 6 | ||||
-rw-r--r-- | usr/src/uts/common/fs/nfs/nfs4_recovery.c | 4 | ||||
-rw-r--r-- | usr/src/uts/common/fs/nfs/nfs4_srv.c | 4 | ||||
-rw-r--r-- | usr/src/uts/common/fs/nfs/nfs4_stub_vnops.c | 2 | ||||
-rw-r--r-- | usr/src/uts/common/fs/nfs/nfs_client.c | 11 | ||||
-rw-r--r-- | usr/src/uts/common/fs/nfs/nfs_dump.c | 9 |
8 files changed, 34 insertions, 29 deletions
diff --git a/usr/src/uts/common/fs/nfs/nfs4_client.c b/usr/src/uts/common/fs/nfs/nfs4_client.c index 7335f83616..9ed69f7eed 100644 --- a/usr/src/uts/common/fs/nfs/nfs4_client.c +++ b/usr/src/uts/common/fs/nfs/nfs4_client.c @@ -1412,8 +1412,9 @@ nfs4_async_start(struct vfs *vfsp) zthread_exit(); /* NOTREACHED */ } - time_left = cv_timedwait(&mi->mi_async_work_cv, - &mi->mi_async_lock, nfs_async_timeout + lbolt); + time_left = cv_reltimedwait(&mi->mi_async_work_cv, + &mi->mi_async_lock, nfs_async_timeout, + TR_CLOCK_TICK); CALLB_CPR_SAFE_END(&cprinfo, &mi->mi_async_lock); @@ -2619,6 +2620,7 @@ void nfs4_write_error(vnode_t *vp, int error, cred_t *cr) { mntinfo4_t *mi; + clock_t now = ddi_get_lbolt(); mi = VTOMI4(vp); /* @@ -2640,7 +2642,7 @@ nfs4_write_error(vnode_t *vp, int error, cred_t *cr) * messages from the same file system. */ if ((error != ENOSPC && error != EDQUOT) || - lbolt - mi->mi_printftime > 0) { + now - mi->mi_printftime > 0) { zoneid_t zoneid = mi->mi_zone->zone_id; #ifdef DEBUG @@ -2661,7 +2663,7 @@ nfs4_write_error(vnode_t *vp, int error, cred_t *cr) crgetuid(curthread->t_cred), crgetgid(curthread->t_cred)); } - mi->mi_printftime = lbolt + + mi->mi_printftime = now + nfs_write_error_interval * hz; } sfh4_printfhandle(VTOR4(vp)->r_fh); @@ -3225,8 +3227,8 @@ nfs4_renew_lease_thread(nfs4_server_t *sp) mutex_enter(&cpr_lock); CALLB_CPR_SAFE_BEGIN(&cpr_info); mutex_exit(&cpr_lock); - time_left = cv_timedwait(&sp->cv_thread_exit, - &sp->s_lock, tick_delay + lbolt); + time_left = cv_reltimedwait(&sp->cv_thread_exit, + &sp->s_lock, tick_delay, TR_CLOCK_TICK); mutex_enter(&cpr_lock); CALLB_CPR_SAFE_END(&cpr_info, &cpr_lock); mutex_exit(&cpr_lock); @@ -3261,8 +3263,8 @@ nfs4_renew_lease_thread(nfs4_server_t *sp) mutex_enter(&cpr_lock); CALLB_CPR_SAFE_BEGIN(&cpr_info); mutex_exit(&cpr_lock); - time_left = cv_timedwait(&sp->cv_thread_exit, &sp->s_lock, - tick_delay + lbolt); + time_left = cv_reltimedwait(&sp->cv_thread_exit, &sp->s_lock, + tick_delay, TR_CLOCK_TICK); mutex_enter(&cpr_lock); CALLB_CPR_SAFE_END(&cpr_info, &cpr_lock); mutex_exit(&cpr_lock); diff --git a/usr/src/uts/common/fs/nfs/nfs4_db.c b/usr/src/uts/common/fs/nfs/nfs4_db.c index 13accb9eac..98685a5938 100644 --- a/usr/src/uts/common/fs/nfs/nfs4_db.c +++ b/usr/src/uts/common/fs/nfs/nfs4_db.c @@ -804,7 +804,7 @@ static void reaper_thread(caddr_t *arg) { rfs4_table_t *table = (rfs4_table_t *)arg; - clock_t rc, time; + clock_t rc, time, wakeup; NFS4_DEBUG(table->dbt_debug, (CE_NOTE, "rfs4_reaper_thread starting for %s", table->dbt_name)); @@ -813,12 +813,13 @@ reaper_thread(caddr_t *arg) callb_generic_cpr, "nfsv4Reaper"); time = MIN(rfs4_reap_interval, table->dbt_max_cache_time); + wakeup = SEC_TO_TICK(time); + mutex_enter(&table->dbt_reaper_cv_lock); do { CALLB_CPR_SAFE_BEGIN(&table->dbt_reaper_cpr_info); - rc = cv_timedwait_sig(&table->dbt_reaper_wait, - &table->dbt_reaper_cv_lock, - lbolt + SEC_TO_TICK(time)); + rc = cv_reltimedwait_sig(&table->dbt_reaper_wait, + &table->dbt_reaper_cv_lock, wakeup, TR_CLOCK_TICK); CALLB_CPR_SAFE_END(&table->dbt_reaper_cpr_info, &table->dbt_reaper_cv_lock); rfs4_dbe_reap(table, table->dbt_max_cache_time, 0); diff --git a/usr/src/uts/common/fs/nfs/nfs4_deleg_ops.c b/usr/src/uts/common/fs/nfs/nfs4_deleg_ops.c index 696e060c63..bc29ee8ae7 100644 --- a/usr/src/uts/common/fs/nfs/nfs4_deleg_ops.c +++ b/usr/src/uts/common/fs/nfs/nfs4_deleg_ops.c @@ -84,7 +84,7 @@ recall_all_delegations(rfs4_file_t *fp, bool_t trunc, caller_context_t *ct) while (fp->rf_dinfo.rd_dtype != OPEN_DELEGATE_NONE) { rc = rfs4_dbe_twait(fp->rf_dbe, - lbolt + SEC_TO_TICK(rfs4_lease_time)); + ddi_get_lbolt() + SEC_TO_TICK(rfs4_lease_time)); if (rc == -1) { /* timed out */ rfs4_dbe_unlock(fp->rf_dbe); rfs4_recall_deleg(fp, trunc, NULL); @@ -377,7 +377,7 @@ deleg_rd_vnevent(femarg_t *arg, vnevent_t vnevent, vnode_t *dvp, char *name, rfs4_dbe_lock(fp->rf_dbe); while (fp->rf_dinfo.rd_dtype != OPEN_DELEGATE_NONE) { rc = rfs4_dbe_twait(fp->rf_dbe, - lbolt + SEC_TO_TICK(rfs4_lease_time)); + ddi_get_lbolt() + SEC_TO_TICK(rfs4_lease_time)); if (rc == -1) { /* timed out */ rfs4_dbe_unlock(fp->rf_dbe); rfs4_recall_deleg(fp, trunc, NULL); @@ -414,7 +414,7 @@ deleg_wr_vnevent(femarg_t *arg, vnevent_t vnevent, vnode_t *dvp, char *name, rfs4_dbe_lock(fp->rf_dbe); while (fp->rf_dinfo.rd_dtype != OPEN_DELEGATE_NONE) { rc = rfs4_dbe_twait(fp->rf_dbe, - lbolt + SEC_TO_TICK(rfs4_lease_time)); + ddi_get_lbolt() + SEC_TO_TICK(rfs4_lease_time)); if (rc == -1) { /* timed out */ rfs4_dbe_unlock(fp->rf_dbe); rfs4_recall_deleg(fp, trunc, NULL); diff --git a/usr/src/uts/common/fs/nfs/nfs4_recovery.c b/usr/src/uts/common/fs/nfs/nfs4_recovery.c index f107519eda..9d2ef14175 100644 --- a/usr/src/uts/common/fs/nfs/nfs4_recovery.c +++ b/usr/src/uts/common/fs/nfs/nfs4_recovery.c @@ -2479,8 +2479,8 @@ recov_openfiles(recov_info_t *recovp, nfs4_server_t *sp) mutex_enter(&sp->s_lock); if ((sp->s_flags & (N4S_CB_PINGED | N4S_CB_WAITER)) == 0) { sp->s_flags |= N4S_CB_WAITER; - (void) cv_timedwait(&sp->wait_cb_null, &sp->s_lock, - (lbolt + drv_usectohz(N4S_CB_PAUSE_TIME))); + (void) cv_reltimedwait(&sp->wait_cb_null, &sp->s_lock, + drv_usectohz(N4S_CB_PAUSE_TIME), TR_CLOCK_TICK); } mutex_exit(&sp->s_lock); diff --git a/usr/src/uts/common/fs/nfs/nfs4_srv.c b/usr/src/uts/common/fs/nfs/nfs4_srv.c index 27eb457b05..d7f71fa380 100644 --- a/usr/src/uts/common/fs/nfs/nfs4_srv.c +++ b/usr/src/uts/common/fs/nfs/nfs4_srv.c @@ -597,7 +597,7 @@ void rfs4_grace_start(rfs4_servinst_t *sip) { rw_enter(&sip->rwlock, RW_WRITER); - sip->start_time = (time_t)TICK_TO_SEC(lbolt); + sip->start_time = (time_t)TICK_TO_SEC(ddi_get_lbolt()); sip->grace_period = rfs4_grace_period; rw_exit(&sip->rwlock); } @@ -630,7 +630,7 @@ rfs4_servinst_in_grace(rfs4_servinst_t *sip) grace_expiry = sip->start_time + sip->grace_period; rw_exit(&sip->rwlock); - return (((time_t)TICK_TO_SEC(lbolt)) < grace_expiry); + return (((time_t)TICK_TO_SEC(ddi_get_lbolt())) < grace_expiry); } int diff --git a/usr/src/uts/common/fs/nfs/nfs4_stub_vnops.c b/usr/src/uts/common/fs/nfs/nfs4_stub_vnops.c index e26f15264c..37bc502b0b 100644 --- a/usr/src/uts/common/fs/nfs/nfs4_stub_vnops.c +++ b/usr/src/uts/common/fs/nfs/nfs4_stub_vnops.c @@ -2370,7 +2370,7 @@ nfs4_ephemeral_harvester(nfs4_trigger_globals_t *ntg) zone_t *zone = curproc->p_zone; for (;;) { - timeleft = zone_status_timedwait(zone, lbolt + + timeleft = zone_status_timedwait(zone, ddi_get_lbolt() + nfs4_trigger_thread_timer * hz, ZONE_IS_SHUTTING_DOWN); /* diff --git a/usr/src/uts/common/fs/nfs/nfs_client.c b/usr/src/uts/common/fs/nfs/nfs_client.c index 3c5d02fad9..a32d730ea7 100644 --- a/usr/src/uts/common/fs/nfs/nfs_client.c +++ b/usr/src/uts/common/fs/nfs/nfs_client.c @@ -2050,8 +2050,9 @@ nfs_async_start(struct vfs *vfsp) zthread_exit(); /* NOTREACHED */ } - time_left = cv_timedwait(&mi->mi_async_work_cv, - &mi->mi_async_lock, nfs_async_timeout + lbolt); + time_left = cv_reltimedwait(&mi->mi_async_work_cv, + &mi->mi_async_lock, nfs_async_timeout, + TR_CLOCK_TICK); CALLB_CPR_SAFE_END(&cprinfo, &mi->mi_async_lock); @@ -2554,6 +2555,7 @@ void nfs_write_error(vnode_t *vp, int error, cred_t *cr) { mntinfo_t *mi; + clock_t now; mi = VTOMI(vp); /* @@ -2567,8 +2569,9 @@ nfs_write_error(vnode_t *vp, int error, cred_t *cr) * No use in flooding the console with ENOSPC * messages from the same file system. */ + now = ddi_get_lbolt(); if ((error != ENOSPC && error != EDQUOT) || - lbolt - mi->mi_printftime > 0) { + now - mi->mi_printftime > 0) { zoneid_t zoneid = mi->mi_zone->zone_id; #ifdef DEBUG @@ -2588,7 +2591,7 @@ nfs_write_error(vnode_t *vp, int error, cred_t *cr) MSG("^User: userid=%d, groupid=%d\n"), crgetuid(CRED()), crgetgid(CRED())); } - mi->mi_printftime = lbolt + + mi->mi_printftime = now + nfs_write_error_interval * hz; } nfs_printfhandle(&VTOR(vp)->r_fh); diff --git a/usr/src/uts/common/fs/nfs/nfs_dump.c b/usr/src/uts/common/fs/nfs/nfs_dump.c index 98a69cca50..9b570716d8 100644 --- a/usr/src/uts/common/fs/nfs/nfs_dump.c +++ b/usr/src/uts/common/fs/nfs/nfs_dump.c @@ -19,16 +19,15 @@ * CDDL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - /* * Dump memory to NFS swap file after a panic. * We have no timeouts, context switches, etc. */ + #include <rpc/types.h> #include <sys/param.h> #include <sys/errno.h> @@ -452,7 +451,7 @@ nd_get_reply(TIUSER *tiptr, XDR *xdrp, uint32_t call_xid, int *badmsg) static int nd_poll(TIUSER *tiptr, int retry, int *eventp) { - clock_t start_bolt = lbolt; + clock_t start_bolt = ddi_get_lbolt(); clock_t timout = TIMEOUT * (retry + 1); int error; @@ -460,7 +459,7 @@ nd_poll(TIUSER *tiptr, int retry, int *eventp) *eventp = 0; - while (!*eventp && ((lbolt - start_bolt) < timout)) { + while (!*eventp && ((ddi_get_lbolt() - start_bolt) < timout)) { /* * Briefly enable interrupts before checking for a reply; * the network transports do not yet support do_polled_io. |