Comment 3 for bug 198125

Revision history for this message
sibidiba (sibidiba) wrote : Re: suspend and hibernate causes severe data corruption because not syncing and not umounting external drives

HW: ThinkPad R61i
SW: Hardy, daily update, since now I had kernel 2.6.24-8-generic

I have to apologize, because further examination of the logs revealed that there were I/O errors probably before I first suspended the box:

Mar 3 07:39:58 Kamorka kernel: [38410.059414] usb 2-2: reset high speed USB device using ehci_hcd and address 3
Mar 3 07:40:08 Kamorka kernel: [38412.832572] usb 2-2: reset high speed USB device using ehci_hcd and address 3
Mar 3 07:40:14 Kamorka kernel: [38413.130585] EXT3-fs error (device sdb2): htree_dirblock_to_tree: bad entry in directory #884738: rec_len is smaller than minimal - offset=0, inode=0, rec_len=0, name_len=0
Mar 3 07:40:14 Kamorka kernel: [38413.137189] EXT3-fs error (device sdb2): htree_dirblock_to_tree: bad entry in directory #14123009: rec_len is smaller than minimal - offset=0, inode=0, rec_len=0, name_len=0
Mar 3 07:40:14 Kamorka kernel: [38413.149699] EXT3-fs error (device sdb2): ext3_readdir: bad entry in directory #11: rec_len is smaller than minimal - offset=0, inode=0, rec_len=0, name_len=0
Mar 3 07:40:14 Kamorka kernel: [38413.155155] EXT3-fs error (device sdb2): htree_dirblock_to_tree: bad entry in directory #15040513: rec_len is smaller than minimal - offset=0, inode=0, rec_len=0, name_len=0
Mar 3 07:40:14 Kamorka kernel: [38413.163752] EXT3-fs error (device sdb2): htree_dirblock_to_tree: bad entry in directory #28327937: rec_len % 4 != 0 - offset=0, inode=1919240992, rec_len=25966, name_len=108
Mar 3 07:40:15 Kamorka kernel: [38413.174590] EXT3-fs error (device sdb2): htree_dirblock_to_tree: bad entry in directory #14483457: rec_len % 4 != 0 - offset=0, inode=1684628289, rec_len=28535, name_len=108
Mar 3 07:40:15 Kamorka kernel: [38413.183440] EXT3-fs error (device sdb2): htree_dirblock_to_tree: bad entry in directory #20447233: rec_len is smaller than minimal - offset=0, inode=0, rec_len=0, name_len=0
(...)
Mar 3 07:40:16 Kamorka kernel: [38413.779429] EXT3-fs error (device sdb2): ext3_readdir: bad entry in directory #11: rec_len is smaller than minimal - offset=0, inode=0, rec_len=0, name_len=0

Also my flatmate said there was a short power-outage in the morning, just before I left, but I haven't noticed it at all.
It is a possible scenario, that the file-system corruption occurred when the laptop kept going on batteries, while the external disk shut down.

When first resumed without the disk attached:
Mar 3 09:46:43 Kamorka hald[6155]: forcibly attempting to lazy unmount /dev/sdb2 as enclosing drive was disconnected
ar 3 09:46:43 Kamorka kernel: [40226.138935] Buffer I/O error on device sdb2, logical block 1545
Mar 3 09:46:43 Kamorka kernel: [40226.138941] lost page write due to I/O error on sdb2
Mar 3 09:46:43 Kamorka kernel: [40226.138968] WARNING: at /build/buildd/linux-2.6.24/fs/buffer.c:1169 mark_buffer_dirty()
Mar 3 09:46:43 Kamorka kernel: [40226.138972] Pid: 22078, comm: umount Not tainted 2.6.24-8-generic #1
Mar 3 09:46:43 Kamorka kernel: [40226.139006] [ext3:mark_buffer_dirty+0x7a/0x150] mark_buffer_dirty+0x7a/0x90
Mar 3 09:46:43 Kamorka kernel: [40226.139029] [<f89ab8e0>] journal_update_superblock+0x70/0xd0 [jbd]
Mar 3 09:46:43 Kamorka kernel: [40226.139051] [<f89aa446>] cleanup_journal_tail+0x86/0xd0 [jbd]
Mar 3 09:46:43 Kamorka kernel: [40226.139070] [<f89aa758>] log_do_checkpoint+0x288/0x360 [jbd]
Mar 3 09:46:43 Kamorka kernel: [40226.139103] [sched_clock+0x13/0x40] sched_clock+0x13/0x40
Mar 3 09:46:43 Kamorka kernel: [40226.139118] [update_curr+0x103/0x110] update_curr+0x103/0x110
Mar 3 09:46:43 Kamorka kernel: [40226.139136] [set_next_entity+0x1c/0x50] set_next_entity+0x1c/0x50
Mar 3 09:46:43 Kamorka kernel: [40226.139147] [pick_next_task_fair+0x2b/0x40] pick_next_task_fair+0x2b/0x40
Mar 3 09:46:43 Kamorka kernel: [40226.139159] [dm_mod:schedule+0x27e/0x650] schedule+0x27e/0x600
Mar 3 09:46:43 Kamorka kernel: [40226.139176] [load_balance_start_fair+0x0/0x10] load_balance_start_fair+0x0/0x10
Mar 3 09:46:43 Kamorka kernel: [40226.139203] [__cond_resched+0x13/0x40] __cond_resched+0x13/0x40
Mar 3 09:46:43 Kamorka kernel: [40226.139207] [scsi_mod:cond_resched+0x27/0x1a0] cond_resched+0x27/0x30
Mar 3 09:46:43 Kamorka kernel: [40226.139210] [__reacquire_kernel_lock+0x1c/0x3c] __reacquire_kernel_lock+0x1c/0x3c
Mar 3 09:46:43 Kamorka kernel: [40226.139223] [dm_mod:schedule+0x51b/0x650] schedule+0x51b/0x600
Mar 3 09:46:43 Kamorka kernel: [40226.139259] [<f89ac46b>] journal_destroy+0xfb/0x1b0 [jbd]
Mar 3 09:46:43 Kamorka kernel: [40226.139276] [<c0141bb0>] autoremove_wake_function+0x0/0x40
Mar 3 09:46:43 Kamorka kernel: [40226.139294] [<f89f44b2>] ext3_put_super+0x22/0x1e0 [ext3]
Mar 3 09:46:43 Kamorka kernel: [40226.139316] [invalidate_inodes+0xc4/0xd0] invalidate_inodes+0xc4/0xd0
Mar 3 09:46:43 Kamorka kernel: [40226.139334] [generic_shutdown_super+0x55/0xf0] generic_shutdown_super+0x55/0xf0
Mar 3 09:46:43 Kamorka kernel: [40226.139339] [fuse:mntput_no_expire+0x3b/0x3ed0] mntput_no_expire+0x3b/0x70
Mar 3 09:46:43 Kamorka kernel: [40226.139351] [fuse:kill_block_super+0xc/0x20] kill_block_super+0xc/0x20
Mar 3 09:46:43 Kamorka kernel: [40226.139358] [deactivate_super+0x5d/0x80] deactivate_super+0x5d/0x80
Mar 3 09:46:43 Kamorka kernel: [40226.139368] [sys_umount+0x46/0x250] sys_umount+0x46/0x250
Mar 3 09:46:43 Kamorka kernel: [40226.139392] [do_munmap+0x180/0x1f0] do_munmap+0x180/0x1f0
Mar 3 09:46:43 Kamorka kernel: [40226.139422] [sysenter_past_esp+0x6b/0xa9] sysenter_past_esp+0x6b/0xa9
Mar 3 09:46:43 Kamorka kernel: [40226.139457] =======================
Mar 3 09:46:43 Kamorka kernel: [40226.139465] Buffer I/O error on device sdb2, logical block 1545
Mar 3 09:46:43 Kamorka kernel: [40226.139467] lost page write due to I/O error on sdb2
Mar 3 09:46:43 Kamorka kernel: [40226.139534] Buffer I/O error on device sdb2, logical block 1545
Mar 3 09:46:43 Kamorka kernel: [40226.139537] lost page write due to I/O error on sdb2
Mar 3 09:46:43 Kamorka kernel: [40226.139725] Buffer I/O error on device sdb2, logical block 0
Mar 3 09:46:43 Kamorka kernel: [40226.139727] lost page write due to I/O error on sdb2
(...)

I updated the bugreport's description. I think it is still a bug, because the latter log shows, that the disk was not umounted before entering suspend.
I also couldn't find any acpid scripts that would do any umount/mount.

Current state is:
Mar 3 18:36:44 Kamorka kernel: [ 7.967199] EXT2-fs: corrupt root inode, run e2fsck

The loss is not a big deal, mostly I kept backups there.