Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 26 May 2010 14:15:40 +0300
From:      Andriy Gapon <avg@icyb.net.ua>
To:        Pawel Jakub Dawidek <pjd@FreeBSD.org>
Cc:        freebsd-fs@FreeBSD.org
Subject:   Re: ZFS panic: wrong length 131072 for sectorsize 2352
Message-ID:  <4BFD02DC.1050203@icyb.net.ua>
In-Reply-To: <20100525192721.GE1659@garage.freebsd.pl>
References:  <4BFA9AEC.1070608@jrv.org> <4BFB884A.3010804@jrv.org> <20100525192721.GE1659@garage.freebsd.pl>

next in thread | previous in thread | raw e-mail | index | archive | help
on 25/05/2010 22:27 Pawel Jakub Dawidek said the following:
> On Tue, May 25, 2010 at 03:20:26AM -0500, James R. Van Artsdalen wrote:
>> On 5/24/2010 10:27 AM, James R. Van Artsdalen wrote:
>>> panic: wrong length 131072 for sectorsize 2352
>> This fixes the bug.
> 
> I don't think so:) size should be properly calculated at this point and
> should be multiple of sectorsize. The problem is that vdev_geom_io()
> splits request into MAXPHYS chunks if it is too big, which is wrong,
> because MAXPHYS doesn't have to be multiple of sectorsize.

But do we really want to support here sector sizes that are not power of two?
And/or MAXPHYS which is not power of two?

> Could you try this patch instead:
> 
> 	http://people.freebsd.org/~pjd/patches/vdev_geom.c.4.patch

Otherwise MAXPHYS % cp->provider->sectorsize would always be zero.

>> Index: sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c
>> ===================================================================
>> --- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c  (revision 208373)
>> +++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c  (working copy)
>> @@ -250,6 +250,9 @@
>>                 if ((offset % pp->sectorsize) != 0)
>>                         continue;
>>
>> +               if ((size % pp->sectorsize) != 0)
>> +                       continue;
>> +
>>                 if (vdev_geom_io(cp, BIO_READ, label, offset, size) != 0)
>>                         continue;
>>                 buf = label->vl_vdev_phys.vp_nvlist;
> 


-- 
Andriy Gapon



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