]> git.ipfire.org Git - thirdparty/e2fsprogs.git/commitdiff
e2undo: cast dptr to blk64_t to retrieve block number
authorEric Sandeen <sandeen@redhat.com>
Fri, 18 Nov 2011 22:45:42 +0000 (17:45 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Sat, 19 Nov 2011 03:14:24 +0000 (22:14 -0500)
A 32-bit s390 build was failing on a 64-bit s390x host, when
make check failed e2undo tests, like this:

md5sum before mke2fs 922c8a591c882dbdd1a381d18547cfd5
using mke2fs to test e2undo
Overwriting existing filesystem; this can be undone using the command:
    e2undo /tmp/mke2fs-tmp.EM9XjmTA81.e2undo /tmp/tmp.EM9XjmTA81

md5sum after mke2fs cbf32fb6c3db45280ad013f42ac294f1
Replayed transaction of size 32768 at location 0
Replayed transaction of size 32768 at location 0
Replayed transaction of size 32768 at location 0
Replayed transaction of size 32768 at location 0
Replayed transaction of size 0 at location 0
md5sum after e2undo 31b4e14307c5b7ccce5b8d300c2ad5f1

Note the "at location 0" for the block number.

A proper cast in e2undo.c fixes this up.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
misc/e2undo.c

index f97ddc2f9e7780fcbe079600cfac085b6480c2ae..b1cb7509373cae1b8432aa97e4cdfb04abf7c2ce 100644 (file)
@@ -206,7 +206,7 @@ int main(int argc, char *argv[])
                                _("Failed tdb_fetch %s\n"), tdb_errorstr(tdb));
                        exit(1);
                }
-               blk_num = *(unsigned long *)key.dptr;
+               blk_num = *(blk64_t *)key.dptr;
                printf(_("Replayed transaction of size %zd at location %llu\n"),
                                                        data.dsize, blk_num);
                retval = io_channel_write_blk64(channel, blk_num,