mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-11-17 10:01:01 +03:00
Use ddi_time_after and friends to compare time
Also, make sure we use clock_t for ddi_get_lbolt to prevent type conversion from screwing things. Signed-off-by: Chunwei Chen <tuxoko@gmail.com> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #2142
This commit is contained in:
parent
888f7141a3
commit
0b75bdb369
@ -86,7 +86,7 @@ typedef const struct vdev_ops {
|
|||||||
struct vdev_cache_entry {
|
struct vdev_cache_entry {
|
||||||
char *ve_data;
|
char *ve_data;
|
||||||
uint64_t ve_offset;
|
uint64_t ve_offset;
|
||||||
uint64_t ve_lastused;
|
clock_t ve_lastused;
|
||||||
avl_node_t ve_offset_node;
|
avl_node_t ve_offset_node;
|
||||||
avl_node_t ve_lastused_node;
|
avl_node_t ve_lastused_node;
|
||||||
uint32_t ve_hits;
|
uint32_t ve_hits;
|
||||||
|
@ -584,6 +584,16 @@ extern vnode_t *rootdir;
|
|||||||
#define ddi_get_lbolt64() (gethrtime() >> 23)
|
#define ddi_get_lbolt64() (gethrtime() >> 23)
|
||||||
#define hz 119 /* frequency when using gethrtime() >> 23 for lbolt */
|
#define hz 119 /* frequency when using gethrtime() >> 23 for lbolt */
|
||||||
|
|
||||||
|
#define ddi_time_before(a, b) (a < b)
|
||||||
|
#define ddi_time_after(a, b) ddi_time_before(b, a)
|
||||||
|
#define ddi_time_before_eq(a, b) (!ddi_time_after(a, b))
|
||||||
|
#define ddi_time_after_eq(a, b) ddi_time_before_eq(b, a)
|
||||||
|
|
||||||
|
#define ddi_time_before64(a, b) (a < b)
|
||||||
|
#define ddi_time_after64(a, b) ddi_time_before64(b, a)
|
||||||
|
#define ddi_time_before_eq64(a, b) (!ddi_time_after64(a, b))
|
||||||
|
#define ddi_time_after_eq64(a, b) ddi_time_before_eq64(b, a)
|
||||||
|
|
||||||
extern void delay(clock_t ticks);
|
extern void delay(clock_t ticks);
|
||||||
|
|
||||||
#define SEC_TO_TICK(sec) ((sec) * hz)
|
#define SEC_TO_TICK(sec) ((sec) * hz)
|
||||||
|
@ -2480,7 +2480,8 @@ arc_adapt_thread(void)
|
|||||||
#endif /* !_KERNEL */
|
#endif /* !_KERNEL */
|
||||||
|
|
||||||
/* No recent memory pressure allow the ARC to grow. */
|
/* No recent memory pressure allow the ARC to grow. */
|
||||||
if (arc_no_grow && ddi_get_lbolt() >= arc_grow_time)
|
if (arc_no_grow &&
|
||||||
|
ddi_time_after_eq(ddi_get_lbolt(), arc_grow_time))
|
||||||
arc_no_grow = FALSE;
|
arc_no_grow = FALSE;
|
||||||
|
|
||||||
arc_adjust_meta();
|
arc_adjust_meta();
|
||||||
@ -2918,7 +2919,7 @@ arc_access(arc_buf_hdr_t *buf, kmutex_t *hash_lock)
|
|||||||
* but it is still in the cache. Move it to the MFU
|
* but it is still in the cache. Move it to the MFU
|
||||||
* state.
|
* state.
|
||||||
*/
|
*/
|
||||||
if (now > buf->b_arc_access + ARC_MINTIME) {
|
if (ddi_time_after(now, buf->b_arc_access + ARC_MINTIME)) {
|
||||||
/*
|
/*
|
||||||
* More than 125ms have passed since we
|
* More than 125ms have passed since we
|
||||||
* instantiated this buffer. Move it to the
|
* instantiated this buffer. Move it to the
|
||||||
|
@ -480,7 +480,7 @@ txg_sync_thread(dsl_pool_t *dp)
|
|||||||
tx_state_t *tx = &dp->dp_tx;
|
tx_state_t *tx = &dp->dp_tx;
|
||||||
callb_cpr_t cpr;
|
callb_cpr_t cpr;
|
||||||
vdev_stat_t *vs1, *vs2;
|
vdev_stat_t *vs1, *vs2;
|
||||||
uint64_t start, delta;
|
clock_t start, delta;
|
||||||
|
|
||||||
#ifdef _KERNEL
|
#ifdef _KERNEL
|
||||||
/*
|
/*
|
||||||
@ -498,7 +498,7 @@ txg_sync_thread(dsl_pool_t *dp)
|
|||||||
|
|
||||||
start = delta = 0;
|
start = delta = 0;
|
||||||
for (;;) {
|
for (;;) {
|
||||||
uint64_t timer, timeout;
|
clock_t timer, timeout;
|
||||||
uint64_t txg;
|
uint64_t txg;
|
||||||
uint64_t ndirty;
|
uint64_t ndirty;
|
||||||
|
|
||||||
|
@ -123,9 +123,9 @@ vdev_cache_lastused_compare(const void *a1, const void *a2)
|
|||||||
const vdev_cache_entry_t *ve1 = a1;
|
const vdev_cache_entry_t *ve1 = a1;
|
||||||
const vdev_cache_entry_t *ve2 = a2;
|
const vdev_cache_entry_t *ve2 = a2;
|
||||||
|
|
||||||
if (ve1->ve_lastused < ve2->ve_lastused)
|
if (ddi_time_before(ve1->ve_lastused, ve2->ve_lastused))
|
||||||
return (-1);
|
return (-1);
|
||||||
if (ve1->ve_lastused > ve2->ve_lastused)
|
if (ddi_time_after(ve1->ve_lastused, ve2->ve_lastused))
|
||||||
return (1);
|
return (1);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -345,9 +345,10 @@ spa_handle_ignored_writes(spa_t *spa)
|
|||||||
|
|
||||||
if (handler->zi_record.zi_duration > 0) {
|
if (handler->zi_record.zi_duration > 0) {
|
||||||
VERIFY(handler->zi_record.zi_timer == 0 ||
|
VERIFY(handler->zi_record.zi_timer == 0 ||
|
||||||
handler->zi_record.zi_timer +
|
ddi_time_after64(
|
||||||
handler->zi_record.zi_duration * hz >
|
(int64_t)handler->zi_record.zi_timer +
|
||||||
ddi_get_lbolt64());
|
handler->zi_record.zi_duration * hz,
|
||||||
|
ddi_get_lbolt64()));
|
||||||
} else {
|
} else {
|
||||||
/* duration is negative so the subtraction here adds */
|
/* duration is negative so the subtraction here adds */
|
||||||
VERIFY(handler->zi_record.zi_timer == 0 ||
|
VERIFY(handler->zi_record.zi_timer == 0 ||
|
||||||
|
Loading…
Reference in New Issue
Block a user