Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 15 Jun 2008 23:42:58 -0400
From:      Martin Cracauer <cracauer@cons.org>
To:        Kris Kennaway <kris@FreeBSD.ORG>
Cc:        freebsd-fs@FreeBSD.ORG, cracauer@FreeBSD.ORG, Jakub Siroky <jakob@dev.citybikes.cz>, freebsd-stable@FreeBSD.ORG, maxim@FreeBSD.ORG
Subject:   Re: infinite loop when copying to ext2fs
Message-ID:  <20080616034258.GA94873@cons.org>
In-Reply-To: <47C9C912.1020700@FreeBSD.org>
References:  <20080118120140.2a8170a0@dev> <47921931.9050606@FreeBSD.org> <47921AE2.1060004@FreeBSD.org> <20080301220924.72bf355d@dev.citybikes.cz> <47C9C912.1020700@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Kris Kennaway wrote on Sat, Mar 01, 2008 at 10:22:26PM +0100: 
> Jakub Siroky wrote:
> >I've just confirmed the same situation on 6.2-RELEASE amd64/GENERIC. I
> >did not noticed it before because I started using ext2fs extensively
> >some months ago.
> >
> >Regards,
> >Jakub
> >
> >On Sat, 19 Jan 2008 16:44:34 +0100
> >Kris Kennaway <kris@FreeBSD.org> wrote:
> >
> >>Kris Kennaway wrote:
> >>>Jakub Siroky wrote:
> >>>>I have two large ext2fs partitions (368 and 313GB) to hold data
> >>>>shared between several OSes. While there were no problems on
> >>>>6-STABLE branch I was quite disappointed after upgrade to
> >>>>7-STABLE. Whenever I copy/write to ext2fs partition the system
> >>>>freezes totally without crashdump. So I set debugging settings to
> >>>>kernel config (DEBUG,WITNESS,..) and in console I reproduced error
> >>>>situation ending with full screen of unstoppable running text with
> >>>>lot of memory addresses and a few recognisable words: 'new block
> >>>>bit set for ext already' - again with no crashdump. Then I have
> >>>>formatted 1GB partition with ext2fs and the problem on this small
> >>>>partition appears only sometimes. 
> >>>OK, I am able to reproduce this.
> >>>
> >>>Kris
> >>>
> >>Is anyone able to look at this?  I could not spot a candidate change 
> >>that has not been merged to 6.x.
> >>
> >>Kris
> >
> >
> 
> Sounds like it may have been broken by the change to ext2_bitops.h by 
> cracauer.  Can you confirm whether backing out 1.2.2.1 fixes it?

I don't think my change can cause a new endless loop.

I only reversed the order of tests to ensure we don't overrun a page
bounddary (into possibly unmapped space).

-       while(*p == ~0U && ofs < sz) {
+       while(ofs < sz && *p == ~0U) {

It is, however, likely that the code was buggy in the first place.
Linux has replaced all this (the allocation code).

Also note that the code I fixed is amd64 only.  If the endless loop
appears on i386 it's something else.

Martin
-- 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Martin Cracauer <cracauer@cons.org>   http://www.cons.org/cracauer/
FreeBSD - where you want to go, today.      http://www.freebsd.org/



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