From owner-freebsd-current@FreeBSD.ORG Sun Sep 11 08:32:01 2011 Return-Path: Delivered-To: freebsd-current@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 875D41065670 for ; Sun, 11 Sep 2011 08:32:01 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id D0CD08FC0A for ; Sun, 11 Sep 2011 08:32:00 +0000 (UTC) Received: from porto.starpoint.kiev.ua (porto-e.starpoint.kiev.ua [212.40.38.100]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id LAA22037; Sun, 11 Sep 2011 11:31:55 +0300 (EEST) (envelope-from avg@FreeBSD.org) Received: from localhost ([127.0.0.1]) by porto.starpoint.kiev.ua with esmtp (Exim 4.34 (FreeBSD)) id 1R2fSF-000HoK-9Z; Sun, 11 Sep 2011 11:31:55 +0300 Message-ID: <4E6C71FA.50906@FreeBSD.org> Date: Sun, 11 Sep 2011 11:31:54 +0300 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:6.0.2) Gecko/20110907 Thunderbird/6.0.2 MIME-Version: 1.0 To: Peter Jeremy References: <20110901223646.14b8aae8@o2.pl> <4E60DBBD.1040703@FreeBSD.org> <4E679D3D.1000007@FreeBSD.org> <4E6B1285.70508@FreeBSD.org> <4E6B1AD4.6080206@FreeBSD.org> <4E6B320A.4090606@FreeBSD.org> <20110910110310.GA6263@server.vk2pj.dyndns.org> In-Reply-To: <20110910110310.GA6263@server.vk2pj.dyndns.org> X-Enigmail-Version: undefined Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: Alexander Kabaev , freebsd-current@FreeBSD.org Subject: Re: ZFS: i/o error - all block copies unavailable after upgrading to r225312 X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Sep 2011 08:32:01 -0000 on 10/09/2011 14:03 Peter Jeremy said the following: > On 2011-Sep-10 12:46:50 +0300, Andriy Gapon wrote: >> on 10/09/2011 11:07 Andriy Gapon said the following: >>> Actually, removing either -mrtd _or_ -fno-unit-at-a-time produces the >>> correct code. Puzzled. >> >> The problem is reproducible with base gcc and gcc42, it is not >> reproducible with gcc45, gcc46 and clang. > > I was just checking gcc44 & gcc46. gcc44 inlines the entire function and I > couldn't quickly find the offending code to see if the bug was there or > not. I agree you've triggered a gcc bug but I'm not sure of the correct > approach to fix it. I've tried a few trivial code transforms within > vdev_read_phys() but haven't stumbled on one that avoids the problem. > > Since -mrtd changes the calling convention, it's a more intrusive change. > I'm not sure if there's any simple way to alter CFLAGS for a single file > (since we only want to alter the zfsboot.c compilation. And I am actually wondering about -fno-unit-at-a-time option. In my opinion this is an anti-optimization option and it can actually increase a size of a final binary. In fact, it looks like the option was introduced to boot2 in r132870 in the year 2004, way before GCC 4.X switch, and it was introduced to avoid some optimizations that produced broken code. I wonder if there is any reason to keep using that option now. At least the zfs boot code works fine without the option in my testing. -- Andriy Gapon