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/