zfs process hang on pool access
Martin Matuska
mm at FreeBSD.org
Mon Aug 1 12:56:03 UTC 2011
Dňa 1. 8. 2011 1:33, Steven Hartland wrote / napísal(a):
> ----- Original Message ----- From: "Martin Matuska" <mm at FreeBSD.org>
>
>
>> I walked through all occurences of ddi_get_lbolt() in the ZFS code and
>> this is the only place where it is incorrectly initialized.
>> This is how it should look like.
>>
>> ===================================================================
>> --- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c (revision
>> 224527)
>> +++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c (working copy)
>> @@ -488,7 +488,7 @@
>> txg_delay(dsl_pool_t *dp, uint64_t txg, int ticks)
>> {
>> tx_state_t *tx = &dp->dp_tx;
>> - int timeout = ddi_get_lbolt() + ticks;
>> + clock_t timeout = ddi_get_lbolt() + ticks;
>
> So you recon that one line will fix the 100+ days overflow David's
> talking about?
No, this bug causes that after 28,5 days of uptime this function won't
delay txg sync threads anymore (ddi_get_lbolt() will be always larger
than timeout).This may lead to a slowdown of writes.
--
Martin Matuska
FreeBSD committer
http://blog.vx.sk
More information about the freebsd-fs
mailing list