Hi Josef,

tried your btrfs-image tool (which didn't work for me but that's not that
important).

# ~/btrfs-image /dev/sdt1 /var/tmp/janosch.btrfsimage
# mount -o loop /var/tmp/janosch.btrfsimage /mnt/test
mount: you must specify the filesystem type

Doesn't mount, okay. Use -r:

# ~/btrfs-image -r /var/tmp/janosch.btrfsimage /var/tmp/removeme
# mount -o loop /var/tmp/removeme /mnt/test

That failed in open_ctree - probably related. The following loopback mount of a
different dd dump of the same file system lead to a null pointer dereference.

# mount -o loop /var/tmp/janosch.dump /mnt/test

I'm just guessing, should btrfs-image patch the uuid in the blocks and generate
a fresh one?

<1>[ 2287.927943] BUG: unable to handle kernel
<6>[ 2287.927944] SysRq : Changing Loglevel
<4>[ 2287.927945] Loglevel set to 3
<4>[ 2288.061561] NULL pointer dereference at 00000000000001e8
<1>[ 2288.061563] IP: [<ffffffffa048da30>] start_transaction+0x20/0x4f0 [btrfs]
<4>[ 2288.143091] PGD 232f5c067 PUD 2279dd067 PMD 0
<4>[ 2288.143094] Oops: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC
<4>[ 2288.143098] Modules linked in: btrfs raid6_pq xor mpt2sas 
scsi_transport_sas raid_class [last unloaded: btrfs]
<4>[ 2288.143104] CPU 2
<4>[ 2288.143107] Pid: 22375, comm: btrfs-qgroup-re Not tainted 3.8.0+ #15 
Supermicro X8SIL/X8SIL
<4>[ 2288.143109] RIP: 0010:[<ffffffffa048da30>]  [<ffffffffa048da30>] 
start_transaction+0x20/0x4f0 [btrfs]
<4>[ 2288.143122] RSP: 0018:ffff880232d79c28  EFLAGS: 00010296
<4>[ 2288.143123] RAX: 0000000000000014 RBX: ffffffffffffffe2 RCX: 
0000000000000002
<4>[ 2288.143125] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 
0000000000000000
<4>[ 2288.143126] RBP: ffff880232d79c78 R08: 0000000000000000 R09: 
0000000000000000
<4>[ 2288.143128] R10: 0000000000000001 R11: 000000000000074b R12: 
ffff880231c31378
<4>[ 2288.143129] R13: ffff880227ce5158 R14: 0000000000000000 R15: 
ffff880231c31368
<4>[ 2288.143131] FS:  0000000000000000(0000) GS:ffff880236a00000(0000) 
knlGS:0000000000000000
<4>[ 2288.143133] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
<4>[ 2288.143134] CR2: 00000000000001e8 CR3: 000000022fdd0000 CR4: 
00000000000007e0
<4>[ 2288.143136] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 
0000000000000000
<4>[ 2288.143137] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 
0000000000000400
<4>[ 2288.143139] Process btrfs-qgroup-re (pid: 22375, threadinfo 
ffff880232d78000, task ffff880234eb0000)
<4>[ 2288.143140] Stack:
<4>[ 2288.143141]  ffff880200000010 ffff880232d79c98 ffff880232d79c58 
0000000000000298
<4>[ 2288.143144]  ffffffffa050658d 00000000fffffff4 ffff880231c31378 
ffff880227ce5158
<4>[ 2288.143147]  ffff880232d79dd8 ffff880231c31368 ffff880232d79c88 
ffffffffa048e298
<4>[ 2288.143151] Call Trace:
<4>[ 2288.143164]  [<ffffffffa048e298>] btrfs_start_transaction+0x18/0x20 
[btrfs]
<4>[ 2288.143180]  [<ffffffffa04ef035>] btrfs_qgroup_rescan_worker+0xd5/0x840 
[btrfs]
<4>[ 2288.143184]  [<ffffffff810ec06d>] ? trace_hardirqs_off+0xd/0x10
<4>[ 2288.143187]  [<ffffffff810c99ab>] ? local_clock+0x4b/0x60
<4>[ 2288.143191]  [<ffffffff819b9420>] ? _raw_spin_unlock_irq+0x30/0x60
<4>[ 2288.143206]  [<ffffffffa04bc26f>] worker_loop+0x13f/0x5b0 [btrfs]
<4>[ 2288.143221]  [<ffffffffa04bc130>] ? btrfs_queue_worker+0x300/0x300 [btrfs]
<4>[ 2288.143224]  [<ffffffff810b4ebe>] kthread+0xde/0xf0
<4>[ 2288.143227]  [<ffffffff810b4de0>] ? __init_kthread_worker+0x70/0x70
<4>[ 2288.143231]  [<ffffffff819c0bdc>] ret_from_fork+0x7c/0xb0
<4>[ 2288.143233]  [<ffffffff810b4de0>] ? __init_kthread_worker+0x70/0x70
<4>[ 2288.143235] Code: c9 c3 66 0f 1f 84 00 00 00 00 00 55 48 89 e5 41 57 41 
56 41 55 41 54 53 48 83 ec 28 66 66 66 66 90 48 c7 c3 e2 ff ff ff 49 89 f6 <48> 
8b b7 e8 01 00 00 49 89 fc 41 89 d5 48 8b 86 a0 33 00 00 a8
<1>[ 2288.143266] RIP  [<ffffffffa048da30>] start_transaction+0x20/0x4f0 [btrfs]
<4>[ 2288.225868]  RSP <ffff880232d79c28>
<4>[ 2288.225870] CR2: 00000000000001e8
<4>[ 2288.226363] ---[ end trace 64cb1c6d4f6c2fa7 ]---

The corresponding line of code from start_transaction is 334:

 324 static struct btrfs_trans_handle *
 325 start_transaction(struct btrfs_root *root, u64 num_items, int type,
 326                   enum btrfs_reserve_flush_enum flush)
 327 {
 328         struct btrfs_trans_handle *h;
 329         struct btrfs_transaction *cur_trans;
 330         u64 num_bytes = 0;
 331         int ret;
 332         u64 qgroup_reserved = 0;
 333 
 334         if (test_bit(BTRFS_FS_STATE_ERROR, &root->fs_info->fs_state))
 335                 return ERR_PTR(-EROFS);

With the mentioned steps I could reproduce the problem once, a second attempt
failed.

-Jan
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to