Public bug reported:
Running Gutsy / 2.6.22-14-386
Using a PCI SATA controller card with a Silicon Image sil3114 chipset
and the sata_sil module, attempting to use the xfs filesystem on a SATA
drive attached to it results in an xfs crash and filesystem corruption
whenever a write is attempted.
lspci for controller:
00:0b.0 Mass storage controller: Silicon Image, Inc. SiI 3114
[SATALink/SATARaid] Serial ATA Controller (rev 02)
Subsystem: Silicon Image, Inc. SiI 3114 SATALink Controller
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
Latency: 32, Cache Line Size: 32 bytes
Interrupt: pin A routed to IRQ 10
Region 0: I/O ports at b400 [size=8]
Region 1: I/O ports at b000 [size=4]
Region 2: I/O ports at a800 [size=8]
Region 3: I/O ports at a400 [size=4]
Region 4: I/O ports at a000 [size=16]
Region 5: Memory at f8800000 (32-bit, non-prefetchable) [size=1K]
[virtual] Expansion ROM at 30000000 [disabled] [size=512K]
Capabilities: [60] Power Management version 2
Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=2 PME-
Steps to reproduce:
- partition SATA drive
- create xfs filesystem(s)
- mount filesystem(s)
- attempt to 'touch somefile.txt'
result:
touch: cannot touch `somefile.txt': Structure needs cleaning
At this point xfs filesystem is corrupted
dmesg after touch command:
[ 3031.072000] Filesystem "md3": XFS internal error xfs_btree_check_sblock at
line 334 of file /build/buildd/linux-source-2.6.22-2.6.22/fs/xfs/xfs_btree.c.
Caller 0xe0a788e9
[ 3031.116000] [<e0a6631b>] xfs_btree_check_sblock+0x5b/0xd0 [xfs]
[ 3031.116000] [<e0a788e9>] xfs_inobt_lookup+0x1c9/0x450 [xfs]
[ 3031.116000] [<e0a788e9>] xfs_inobt_lookup+0x1c9/0x450 [xfs]
[ 3031.116000] [<e0aa09a8>] kmem_zone_zalloc+0x28/0x60 [xfs]
[ 3031.116000] [<e0a778af>] xfs_dialloc+0x5cf/0x990 [xfs]
[ 3031.116000] [<c02e06cc>] do_page_fault+0x37c/0x690
[ 3031.116000] [<e0a7fdf1>] xfs_ialloc+0x61/0x550 [xfs]
[ 3031.116000] [<e0a95fc5>] xfs_dir_ialloc+0x85/0x2d0 [xfs]
[ 3031.116000] [<e0a93534>] xfs_trans_reserve+0xa4/0x220 [xfs]
[ 3031.116000] [<e0a9c8f8>] xfs_create+0x398/0x6a0 [xfs]
[ 3031.116000] [<e0aa81c6>] xfs_vn_mknod+0x236/0x350 [xfs]
[ 3031.120000] [<c0172138>] vfs_create+0x108/0x150
[ 3031.120000] [<c0175338>] open_namei+0x588/0x5e0
[ 3031.120000] [<c0168ff3>] do_filp_open+0x33/0x60
[ 3031.120000] [<c016906e>] do_sys_open+0x4e/0xf0
[ 3031.120000] [<c0168c67>] filp_close+0x47/0x80
[ 3031.120000] [<c016914c>] sys_open+0x1c/0x20
[ 3031.120000] [<c0103f62>] sysenter_past_esp+0x6b/0xa9
[ 3031.120000] [<c02d0000>] km_report+0x40/0x80
[ 3031.120000] =======================
After the error, if I unmount the filesystem and run xfs_repair on it, I get
output like this:
xfs_repair /dev/sda2
- creating 2 worker thread(s)
Phase 1 - find and verify superblock...
- reporting progress in intervals of 15 minutes
Phase 2 - using internal log
- zero log...
- scan filesystem freespace and inode maps...
ir_freecount/free mismatch, inode chunk 0/128, freecount 60 nfree 56
- 05:26:40: scanning filesystem freespace - 8 of 8 allocation groups
done
- found root inode chunk
Phase 3 - for each AG...
- scan and clear agi unlinked lists...
- 05:26:40: scanning agi unlinked lists - 8 of 8 allocation groups done
- process known inodes and perform inode discovery...
- agno = 0
- agno = 1
- agno = 2
- agno = 3
- agno = 4
- agno = 5
- agno = 6
- agno = 7
imap claims a free inode 186 is in use, correcting imap and clearing inode
cleared inode 186
imap claims a free inode 188 is in use, correcting imap and clearing inode
cleared inode 188
imap claims a free inode 189 is in use, correcting imap and clearing inode
cleared inode 189
imap claims a free inode 190 is in use, correcting imap and clearing inode
cleared inode 190
- 05:26:40: process known inodes and inode discovery - 64 of 64 inodes
done
- process newly discovered inodes...
- 05:26:40: process newly discovered inodes - 8 of 8 allocation groups
done
Phase 4 - check for duplicate blocks...
- setting up duplicate extent list...
- clear lost+found (if it exists) ...
- clearing existing "lost+found" inode
- deleting existing "lost+found" entry
- 05:26:40: setting up duplicate extent list - 8 of 8 allocation groups
done
- check for inodes claiming duplicate blocks...
- agno = 0
- agno = 1
- agno = 2
- agno = 3
- agno = 4
- agno = 5
- agno = 6
- agno = 7
- 05:26:40: check for inodes claiming duplicate blocks - 64 of 64
inodes done
Phase 5 - rebuild AG headers and trees...
- 05:26:40: rebuild AG headers and trees - 8 of 8 allocation groups done
- reset superblock...
Phase 6 - check inode connectivity...
- resetting contents of realtime bitmap and summary inodes
- ensuring existence of lost+found directory
- traversing filesystem starting at / ...
- 05:26:40: traversing filesystem - 8 of 8 allocation groups done
- traversal finished ...
- traversing all unattached subtrees ...
- traversals finished ...
- moving disconnected inodes to lost+found ...
Phase 7 - verify and correct link counts...
- 05:26:40: verify and correct link counts - 64 of 64 inodes done
done
I have ruled out problems with the hard drive or controller by doing the
following:
-created ext3 and jfs partitions on same drive, wrote and verified data to
those partitions, mounted and unmounted without problems, and the data remained
intact.
-put SATA disk in external USB enclosure and created and mounted xfs
partitions, created and deleted files without any errors.
I have upgraded the BIOS on the controller card to the most recent
version, but this had no effect.
I originally had this problem on Feisty (i386) and so I upgraded to
Gutsy to see if that fixed it, but the problem is exactly the same.
** Affects: ubuntu
Importance: Undecided
Status: New
--
filesystem corruption on xfs using sata_sil (sil3114)
https://bugs.launchpad.net/bugs/156612
You received this bug notification because you are a member of Ubuntu
Bugs, which is the bug contact for Ubuntu.
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs