Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 01 Aug 2011 14:55:59 +0200
From:      Martin Matuska <mm@FreeBSD.org>
To:        Steven Hartland <killing@multiplay.co.uk>
Cc:        freebsd-fs@FreeBSD.org, Andriy Gapon <avg@freebsd.org>
Subject:   Re: zfs process hang on pool access
Message-ID:  <4E36A25F.7000000@FreeBSD.org>
In-Reply-To: <0E851F439C384186A1D44A347C19A7D7@multiplay.co.uk>
References:  <A14F1C768A41483C876AD77502A864D6@multiplay.co.uk> <0D449EC916264947AB31AA17F870EA7A@multiplay.co.uk> <4E3013DF.10803@FreeBSD.org> <3D6CEB50BEDD4ACE96FD35C4D085618A@multiplay.co.uk> <4E301C55.7090105@FreeBSD.org> <5C84E7C8452E489C8CA738294F5EBB78@multiplay.co.uk> <4E301F10.6060708@FreeBSD.org> <63705B5AEEAD4BB88ADB9EF770AB6C76@multiplay.co.uk> <4E302204.2030009@FreeBSD.org> <6703F0BB-D4FC-4417-B519-CAFC62E5BC39@bitgravity.com> <04C305AE5F184C6AAC2A67CE23184013@multiplay.co.uk> <3D893A9B-2CD9-40EB-B4A2-5DBCBB72C62E@bitgravity.com> <4E35D2E5.4020108@FreeBSD.org> <0E851F439C384186A1D44A347C19A7D7@multiplay.co.uk>

next in thread | previous in thread | raw e-mail | index | archive | help
Dňa 1. 8. 2011 1:33, Steven Hartland  wrote / napísal(a):
> ----- Original Message ----- From: "Martin Matuska" <mm@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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4E36A25F.7000000>