Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 4 Nov 2016 19:05:55 +0100
From:      Ben RUBSON <ben.rubson@gmail.com>
To:        freebsd-fs <freebsd-fs@FreeBSD.org>
Subject:   Re: ZFS L2ARC checksum errors after compression
Message-ID:  <6D16D1E0-CA33-44DB-AB88-9257A8BDE67F@gmail.com>
In-Reply-To: <3bd7cb79-ec5a-3b7c-0642-24a7b1f001e6@FreeBSD.org>
References:  <921575537.20161029143626@serebryakov.spb.ru> <3dae7691-fcd1-b3b9-445c-b81d6f0cdc52@FreeBSD.org> <fe4962d6-75c3-32c0-8d28-c99661e5161f@FreeBSD.org> <3bd7cb79-ec5a-3b7c-0642-24a7b1f001e6@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help

> On 04 Nov 2016, at 15:20, Andriy Gapon <avg@FreeBSD.org> wrote:
>=20
> On 03/11/2016 21:43, Lev Serebryakov wrote:
>> On 29.10.2016 16:32, Andriy Gapon wrote:
>>=20
>> Looks like L2ARC is unusable now if your have compression enabled on
>> FSes. It shows 2x compression (ALLOC =3D 2xSIZE), and tons of =
checksum
>> errors. I simply don't have compressible enough data on my FSes! It =
is
>> mostly media files! Looks like this data is bogus.
>>=20
>>> I think that a recent upstream change, compressed ARC support, =
reintroduced an a
>>> old problem that was fixed a while ago.
>>=20
>=20
> Lev,
>=20
> because of the confusing variable names I made a mistake in the patch =
that I
> offered you.  Could you please try a new slight different patch?
> (...)
> +			if ((write_psize + asize) > target_sz) {

Do you think the issue comes from this test ?
target_sz is only the threshold under which we still have to write =
buffers to L2.

Note that I also proposed a modification around this test in the =
following PR :
https://github.com/openzfs/openzfs/pull/189

Here is an extract of the interesting code :

uint64_t size =3D arc_hdr_size(hdr);
passed_sz +=3D size;
if (passed_sz > headroom) {
    /*
     * Searched too far.
     */
    mutex_exit(hash_lock);
    break;
}
if (!l2arc_write_eligible(guid, hdr)) {
    mutex_exit(hash_lock);
    continue;
}
if ((write_asize + size) > target_sz) {
    full =3D B_TRUE;
    mutex_exit(hash_lock);
    break;
}

Note that I also faced the 16.0E bug in 11.0-RC3 (which has not =
compressed ARC support) :
https://www.illumos.org/issues/7410

Ben




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6D16D1E0-CA33-44DB-AB88-9257A8BDE67F>