ReiserFS buglet

Jakob Oestergaard (jakob@unthought.net)
Tue, 24 Sep 2002 09:24:55 +0200


First:

In linux-2.4.19, I found the following:

fs/reiserfs/super.c:707

s->s_blocksize = sb_blocksize(rs);
s->s_blocksize_bits = 0;
while ((1 << s->s_blocksize_bits) != s->s_blocksize)
s->s_blocksize_bits ++;

What happens if there's a bit-flip on the disk so that s->s_blocksize is
not a power of two ?

I would suggest replacing the '!=' with a '<' in the while loop and
adding a sanity check afterwards.

After all, a single bit-flip in the root fs superblock would cause the
system to hang silently (but spinning really fast!) at boot.

Second:

As I see it, the ReiserFS journal has the same problems as jbd wrt. to
atomicity of write operations of indexes. Please see my recent mail
about the jbd problems.

-- 
................................................................
:   jakob@unthought.net   : And I see the elder races,         :
:.........................: putrid forms of man                :
:   Jakob Østergaard      : See him rise and claim the earth,  :
:        OZ9ABN           : his downfall is at hand.           :
:.........................:............{Konkhra}...............:
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/