(gdb) bt
#0  0x000002aa0001baa4 in ocfs2_image_mark_bitmap (ofs=0x2aa0005a2c0, 
blkno=236353) at image.c:254
#1  0x000002aa00007678 in traverse_extents (ofs=0x2aa0005a2c0, 
el=0x2aa0007a8c0) at o2image.c:117
#2  0x000002aa00007faa in traverse_inode (ofs=0x2aa0005a2c0, inode=10) at 
o2image.c:317
#3  0x000002aa00007474 in traverse_group_desc (ofs=0x2aa0005a2c0, 
grp=0x2aa00077c00, dump_type=2, bpc=4) at o2image.c:76
#4  0x000002aa00007876 in traverse_chains (ofs=0x2aa0005a2c0, cl=0x2aa00076cc0, 
dump_type=2) at o2image.c:155
#5  0x000002aa00007e7c in traverse_inode (ofs=0x2aa0005a2c0, inode=12) at 
o2image.c:291
#6  0x000002aa00008f38 in scan_raw_disk (ofs=0x2aa0005a2c0) at o2image.c:633
#7  0x000002aa000096fc in main (argc=3, argv=0x3fffffffc18) at o2image.c:780

ofs seems to be broken:

(gdb) print *(ofs)
$6 = {
  fs_devname = 0xffffffffffffffff <error: Cannot access memory at address 
0xffffffffffffffff>,
  fs_flags = 4294967295,
  fs_io = 0xffffffffffffffff,
  fs_super = 0xffffffffffffffff,
  fs_orig_super = 0xffffffffffffffff,
  fs_blocksize = 4294967295,
  fs_clustersize = 4294967295,
  fs_clusters = 4294967295,
  fs_blocks = 18446744073709551615,
  fs_umask = 4294967295,
  fs_root_blkno = 18446744073709551615,
  fs_sysdir_blkno = 18446744073709551615,
  fs_first_cg_blkno = 18446744073709551615,
  uuid_str = '\377' <repeats 33 times>,
  fs_cluster_alloc = 0xffffffffffffffff,
  fs_inode_allocs = 0xffffffffffffffff,
  fs_system_inode_alloc = 0xffffffffffffffff,
  fs_eb_allocs = 0xffffffffffffffff,
  fs_system_eb_alloc = 0xffffffffffffffff,
  fs_dlm_ctxt = 0xffffffffffffffff,
  ost = 0x10002aa0005d040,
  qinfo = {{
      qi_inode = 0x0,
      flags = 0,
      qi_info = {
        dqi_bgrace = 0,
        dqi_igrace = 0,
        dqi_syncms = 0,
        dqi_blocks = 0,
        dqi_free_blk = 0,
        dqi_free_entry = 0
      }
    }, {
      qi_inode = 0x0,
      flags = 0,
      qi_info = {
        dqi_bgrace = 0,
        dqi_igrace = 0,
        dqi_syncms = 0,
        dqi_blocks = 0,
        dqi_free_blk = 0,
        dqi_free_entry = 0
      }
    }},
  fs_private = 0x0
}

and its pointer is passed along the stack trace since frame #1
(scan_raw_disk).

It comes from:

* ocfs2_open is modified to be aware of OCFS2_FLAG_IMAGE_FILE.
* open routine allocates ocfs2_image_state and loads the bitmap if
* OCFS2_FLAG_IMAGE_FILE flag is passed in

ret =
ocfs2_open(src_file,OCFS2_FLAG_RO|OCFS2_FLAG_NO_ECC_CHECKS|open_flags,
0,0, &ofs);

And likely related to how bitmap is disposed in the image file for a big
endian arch.

ofs->ost pointer is not broken, because it comes from a malloc call
after ofs was "allegedly" correctly read (which is not true in big
endian arches):

ret = ocfs2_malloc0(sizeof(struct ocfs2_image_state),&ofs->ost);

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1745155

Title:
  o2image fails on s390x

To manage notifications about this bug go to:
https://bugs.launchpad.net/ocfs2-tools/+bug/1745155/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to