[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Re: e2fsck hanging
- From: Brian Davidson <bdavids1 gmu edu>
- To: Theodore Tso <tytso mit edu>
- Cc: ext3-users redhat com
- Subject: Re: e2fsck hanging
- Date: Tue, 13 Mar 2007 10:59:43 -0400
On Mar 13, 2007, at 9:53 AM, Theodore Tso wrote:
At a first glance your report looks vaguely like this bugreport:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=411838
I've been crazy busy the last few weeks so I haven't had a chance to
look at it yet. There is a suggested fix in the above bug report, but
not a patch, and I haven't had time to validate it yet.
Regards,
- Ted
Yes, that's the same issue. We reduced the issue to a floating point
precision issue too:
main()
{
float range;
double range2;
unsigned int ino, lowval, highval;
int high, low;
ino=732562070;
lowval= 2;
highval = 732562081;
high=57402135;
low=0;
range = ((float) (ino - lowval)) / (highval - lowval);
printf("range=%f\n",range);
}
It outputs 1.0, rather than .99999...
We're trying the suggested fix from the bug report. It'll take about
6 hours or so to get to that point. Here's specifically what we're
doing:
--- e2fsprogs-1.39/lib/ext2fs/icount.c 2005-09-06 05:40:14.000000000
-0400
+++ e2fsprogs-1.39-test/lib/ext2fs/icount.c 2007-03-13
10:56:19.000000000 -0400
@@ -251,6 +251,10 @@
range = ((float) (ino - lowval)) /
(highval - lowval);
mid = low + ((int) (range * (high-low)));
+ if (mid > high)
+ mid = high;
+ if (mid < low)
+ mid = low;
}
#endif
if (ino == icount->list[mid].ino) {
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]