bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: rumpdisk status


From: Damien Zammit
Subject: Re: rumpdisk status
Date: Sat, 14 Nov 2020 12:27:58 +1100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.11.0


On 11/11/20 5:58 am, Samuel Thibault wrote:
> Damien Zammit, le mar. 10 nov. 2020 21:11:31 +1100, a ecrit:
>> I also printed inside rumpdisk to dump the offsets before calling 
>> pread/pwrite,
>> these offsets are sometimes wider than 32 bits, sometimes not.
> 
> Ok. Do pread/pwrite get called concurrently, or is pread/pwrite always
> finished before the next one starts?

Looks like all the pread/pwrites occur serially one-by-one with no overlap.

I tried booting off IDE and mounting 2x rumpdisks with gdb attached.
I tried to mount the second partition twice and got two failures,

root@zamhurd:~# mount /dev/wd0s3b /part3 -t ext2 -o ro
RUMP: OPEN: /dev/wd0d
ext2fs: /dev/wd0s3b: panic: get_hypermetadata: Cannot read hypermetadata
mount: cannot start translator /hurd/ext2fs: Translator died

root@zamhurd:~# mount /dev/wd0s3b /part3 -t ext2 -o ro
RUMP: OPEN: /dev/wd0d
ext2fs: /dev/wd0s3b: panic: get_hypermetadata: Cannot read hypermetadata
mount: cannot start translator /hurd/ext2fs: Translator died

then on the third time running the same command I got the following crash and 
backtrace in rumpdisk.static:
root@zamhurd:~# mount /dev/wd0s3b /part3 -t ext2 -o ro
RUMP: OPEN: /dev/wd0d
/hurd/crash: /hurd/rumpdisk.static(777) crashed, signal {no:11, code:2, error:2}
, exception {1, code:2, subcode:16}, PCs: {0x804d77e, 0x81c0ecc, 0x81c0ecc, 0x81
c0ecc, 0x81c0ecc, 0x81c0ecc, 0x81c0ecc, 0x81c0ecc, 0x81c0ecc, 0x81c0ecc, 0x81c0e
cc, 0x81c0ecc, 0x81c0ecc, 0x81c0ecc, 0x81c0ecc, 0x81c0ecc, 0x81c0ecc, 0x81c0ecc,
 0x81c0ecc, 0x81c0ecc, 0x81c0ecc, 0x81c0ecc, 0x81c0ecc, 0x81c0ecc}, writing core
 file.
ext2fs: /dev/wd0s3b: panic: get_hypermetadata: Cannot read hypermetadata
mount: cannot start translator /hurd/ext2fs: Translator died

```
(gdb) bt full
#0  0x0804d77e in ports_port_deref (portstruct=0x10040420) at 
../../libports/port-deref.c:30
        pi = 0x10040420
        result = <optimized out>
#1  0x08049dd1 in device_open (reply_port=115, reply_port_type=18, mode=3, 
name=0x1fffd5c "/dev/wd0", 
    devp=0x2001d64, devicePoly=0x1fffc7c) at ../../rumpdisk/block-rump.c:257
        err = <optimized out>
        bd = <optimized out>
        dev_name = "/dev/wd0d\000\061\b(\327\004\b 
\323\061\bc\000\000\000\001\000\000\000\001\000\000"
        media_size = 2
        block_size = 137446780
#2  0x0804a25a in ds_device_open (open_port=99, reply_port=115, 
reply_port_type=18, mode=3, 
    name=0x1fffd5c "/dev/wd0", devp=0x2001d64, devicePoly=0x1fffc7c) at 
../../libmachdev/ds_routines.c:112
        i = 0
        dev_master = 3
        err = 2502
#3  0x0804b319 in _Xdevice_open (InHeadP=0x1fffd30, OutHeadP=0x2001d40) at 
deviceServer.c:125
        In0P = 0x1fffd30
        OutP = 0x2001d40
        msgh_simple = <optimized out>
        modeCheck = {msgt_name = 2, msgt_size = 32, msgt_number = 1, 
msgt_inline = 1, msgt_longform = 0, 
          msgt_deallocate = 0, msgt_unused = 0}
        deviceType = <optimized out>
        master_port = <optimized out>
        reply_port = <optimized out>
        devicePoly = 134525592
#4  0x0804a6d9 in demuxer (inp=0x1fffd30, outp=0x2001d40) at 
../../libmachdev/trivfs_server.c:479
        routine = <optimized out>
#5  0x0804da8d in internal_demuxer (inp=0x1fffd30, outheadp=<optimized out>)
    at ../../libports/manage-one-thread.c:96
        pi = 0x1003ef40
        link = {thread = 4, next = 0x0, prevp = 0x1003ef5c, notifies = 0x0, 
interrupted_next = 0x1fffd30}
        status = <optimized out>
        err = <optimized out>
        outp = 0x2001d40
        RetCodeType = <optimized out>
#6  0x0815fea0 in mach_msg_server_timeout ()
No symbol table info available.
#7  0x0804db65 in ports_manage_port_operations_one_thread (bucket=0x10002c50, 
demuxer=0x804a6a0 <demuxer>, 
    timeout=0) at ../../libports/manage-one-thread.c:120
        thread = {color = 1}
        err = <optimized out>
#8  0x0804b132 in machdev_trivfs_server (bootstrap=9) at 
../../libmachdev/trivfs_server.c:515
        fsys = 0x10002d10
        err = <optimized out>
#9  0x08048f2c in main (argc=1, argv=0x2003ef4) at ../../rumpdisk/main.c:126
        bootstrap = 9
        err = 0
        t = 27

```

Something fishy is going on.

Damien



reply via email to

[Prev in Thread] Current Thread [Next in Thread]