On Sun, Jan 20, 2013 at 05:39:57PM -0800, Elladan wrote: > I upgraded to Ubuntu 12.10 and thought, "Hey, that 3.5 kernel is > relatively recent. And they seem to finally have implemented > restriping. Maybe it's time to try btrfs again!" > > So, first off, I backed up all my data. > > Next, I decided I would attempt to use btrfs's features for my benefit. > > Specifically (this part is less interesting except as setup): > > 1. I put a btrfs filesystem on top of dm-crypt on an external USB drive. > 2. I copied data to it. > 3. I unmounted the original partition, and then immediately mounted > the btrfs partition in its place. > > Ok, now to the interesting bits: > > My goal here is to delete the usb device and just leave myself with my > data, migrated back to the internal disk (with minimal downtime) > > So, I figured I could use restriping/device delete to live-migrate > back onto the internal hard disk. > > 4. I did a btrfs device add on a partition (over lvm/dm-crypt) on the > internal disk. Now I have 2 partitons in the fs. > > I attempted to btrfs device delete the usb disk, and it errored out > (with somewhat inscrutable information) telling me that I can't reduce > raid1 to dup this way. > > Note: Arguably, this is a bug. You really ought to do it, but with a > -f option, and automatically reduce the chunks appropriately. > > Note: Also arguably, this is also a bug because it should not have > changed the metadata profile from dup to raid1 without asking me. > Maybe I don't want raid1. > > Anyway, I figure I can fix this up with a balance filter (this is > primarily what made me think btrfs might be more usable now). > > 6. I attempt to balance with a filter -mconvert=dup. This immediately > errors out with no real indication as to why. > > In the dmesg log I found: > > [52656.153908] btrfs: unable to start balance with target metadata profile 32 > > Clearly a bug. > > 7. After some random trial and error, I find that it accepts > -mconvert=single, and the result appears to be metadata in dup state. > Maybe. > > Ok now that's done, it's time to delete. > > 8. btrfs device delete /dev/dm-11 /btrfs > > Some hours later, it fails. I find stuff like this all over my dmesg log: > > [113936.300109] bio too big device dm-11 (1024 > 240) > [113936.297242] btrfs: bdev /dev/dm-11 errs: wr 101, rd 10247, flush > 0, corrupt 109, gen 0 > [113935.425960] btrfs_dev_stat_print_on_error: 38 callbacks suppressed > > It also found 2 files with csum errors, which were left on the USB device. > > [92750.052638] btrfs csum failed ino 257 off 49278976 csum 948519347 > private 2127080388 > [95692.348662] btrfs: checksum error at logical 94682349568 on dev > /dev/mapper/tempusb, sector 224788736, root 256, inode 114815, offset > 14360576, length 4096, links 1 (path:...path to file) > > The csum errors appeared to have caused it to stop. > > Googling around seemed to indicate that someone had once experienced a > similar problem with an external drive around the 3.0 kernel era. > They suggested something about the filesystem not working when dealing > with devices mixed between SATA and USB, which sounded a bit wacky to > me. I initially assumed that maybe the USB drive was a bit flaky, but > this sounds to me like the csum errors were probably btrfs causing > silent corruption. > > I tried deleting the files with the csum errors and running the device > delete again, but it immediately failed with invalid argument errors > and nothing in the dmesg log. Clearly a bug. > > Then, I tried unmounting, remounting, and then re-running the delete. > This time it started, but it's been running for a long time and > spamming my kernel logs with the bio too big for device errors. I'm > guessing I'll probably need to sysrq reboot or something. > > This is with Ubuntu's standard 3.5.0-22 generic kernel. > > Any ideas? I guess I could try to mount in degraded mode or try a 3.6 > kernel or something, but this all seems like I should probably just > restore from backups and move on.
Hi Elladan, For 'bio too big' issue, this patch is helpful, https://patchwork.kernel.org/patch/1619691/ thanks, liubo > > Thanks! > -- > 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 -- 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