Bug 199309 - Kernel panic "binsfree: free buffer onto another queue???" extracting tar to ext2fs partition.
Summary: Kernel panic "binsfree: free buffer onto another queue???" extracting tar to ...
Status: Closed FIXED
Alias: None
Product: Base System
Classification: Unclassified
Component: kern (show other bugs)
Version: 10.1-RELEASE
Hardware: Any Any
: --- Affects Only Me
Assignee: Pedro F. Giffuni
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-04-09 13:00 UTC by karl
Modified: 2015-04-22 00:43 UTC (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description karl 2015-04-09 13:00:25 UTC
When extracting a large .tar.gz file onto a mounted ext2fs filesystem - under 10.1-RELEASE you get a reproducible kernel panic (details below).

The same set of operations on a FreeBSD 9.1-RELEASE system work correctly.

To reproduce:

 - Install FreeBSD
 - Install 'e2fsutils'

'mke2fs' a new partition, and mount it (e.g. 'mount -t ext2fs /dev/ada1s4 /mnt') - extract a large tar file (20Gb) to this new partition.

Under 9.1-R it finishes extraction. Under 10.1-R it fails after about the same amount of time, but in slightly different places with:

"
panic: binsfree: free buffer onto another queue???
cpuid =3
KDB: stack backtrace:
#0 0xffffffff80963000 at kb_backtrace+0x60
#1 0xffffffff80928125 at panic+0x155
#2 0xffffffff809b18f7 at binsfree+0x327
#3 0xffffffff809afca0 at brelse+0x5f0
#4 0xffffffff81a19c34 at ext2_htree_add_entry+0x714
#5 0xffffffff81a1c1d4 at ext2_direnter+0xc4
#6 0xffffffff81a21d7d at ext2_makeinode+0x12d
#7 0xffffffff80e41ca1 at VOP_CREATE_APV+0xa1
#8 0xffffffff809d66c8 at vn_open_cred+0x2a8
#9 0xffffffff809cfedf at kern_openat+0x26f
#10 0xffffffff80d25851 at amd64_syscall+0x351
"

I have a minidump (~470Mb) of this crash - so I can kgdb it to run off various bits (I can't publish as it likely has confidential data in the dump).

Smaller tar files extract OK.
Comment 1 Pedro F. Giffuni freebsd_committer freebsd_triage 2015-04-17 21:11:53 UTC
Hello;


I assume you are using ext3.
I think that this is yet another bug report related to dir_index implementation.
As a workaround disable the dir_index extension using tune2fs utility.
Comment 2 commit-hook freebsd_committer freebsd_triage 2015-04-17 22:26:39 UTC
A commit references this bug:

Author: pfg
Date: Fri Apr 17 22:26:04 UTC 2015
New revision: 281670
URL: https://svnweb.freebsd.org/changeset/base/281670

Log:
  Drop experimental dir_index support.

  The htree directory index is a highly desirable feature for research
  purposes and was meant to improve performance in our ext2/3 driver.
  Unfortunately our implementation has two problems:

  - It never really delivered any performance improvement.
  - It appears to corrupt the filesystem in undetermined circumstances.

  Strictly speaking dir_index is not required for read/write support in
  ext2/3 and our limited ext4 support still works fine without it.

  Regain stability in the ext2 driver by removing it. We may need it back
  (fixed) if we want to support encrypted ext4 support but thanks to the
  wonders of version control we can always revert this change and bring it
  back.

  PR:	191895
  PR:	198731
  PR:	199309

  MFC after:	5 days

Changes:
  head/sys/fs/ext2fs/ext2_dir.h
  head/sys/fs/ext2fs/ext2_extern.h
  head/sys/fs/ext2fs/ext2_hash.c
  head/sys/fs/ext2fs/ext2_htree.c
  head/sys/fs/ext2fs/ext2_lookup.c
  head/sys/fs/ext2fs/ext2_vfsops.c
  head/sys/fs/ext2fs/ext2fs.h
  head/sys/modules/ext2fs/Makefile
Comment 3 commit-hook freebsd_committer freebsd_triage 2015-04-22 00:38:23 UTC
A commit references this bug:

Author: pfg
Date: Wed Apr 22 00:38:14 UTC 2015
New revision: 281841
URL: https://svnweb.freebsd.org/changeset/base/281841

Log:
  MFC	r281670, r281703:
  Drop experimental ext2fs dir_index support.

  The htree directory index is a highly desirable feature for research
  purposes and was meant to improve performance in our ext2/3 driver.
  Unfortunately our implementation has two problems:

  - It never really delivered any performance improvement.
  - It appears to corrupt the filesystem in undetermined circumstances.

  Strictly speaking dir_index is not required for read/write support in
  ext2/3 and our limited ext4 support still works fine without it.

  Regain stability in the ext2 driver by removing it. We may need it back
  (fixed) if we want to support encrypted ext4 support but thanks to the
  wonders of version control we can always revert this change and bring it
  back.

  PR:	191895
  PR:	198731
  PR:	199309

Changes:
_U  stable/10/
  stable/10/sys/conf/files
  stable/10/sys/fs/ext2fs/ext2_dir.h
  stable/10/sys/fs/ext2fs/ext2_extern.h
  stable/10/sys/fs/ext2fs/ext2_hash.c
  stable/10/sys/fs/ext2fs/ext2_htree.c
  stable/10/sys/fs/ext2fs/ext2_lookup.c
  stable/10/sys/fs/ext2fs/ext2_vfsops.c
  stable/10/sys/fs/ext2fs/ext2fs.h
  stable/10/sys/modules/ext2fs/Makefile
Comment 4 commit-hook freebsd_committer freebsd_triage 2015-04-22 00:41:28 UTC
A commit references this bug:

Author: pfg
Date: Wed Apr 22 00:40:44 UTC 2015
New revision: 281842
URL: https://svnweb.freebsd.org/changeset/base/281842

Log:
  MFC	r281670, r281703:
  Drop experimental ext2fs dir_index support.

  The htree directory index is a highly desirable feature for research
  purposes and was meant to improve performance in our ext2/3 driver.
  Unfortunately our implementation has two problems:

  - It never really delivered any performance improvement.
  - It appears to corrupt the filesystem in undetermined circumstances.

  Strictly speaking dir_index is not required for read/write support in
  ext2/3 and our limited ext4 support still works fine without it.

  Regain stability in the ext2 driver by removing it. We may need it back
  (fixed) if we want to support encrypted ext4 support but thanks to the
  wonders of version control we can always revert this change and bring it
  back.

  PR:	191895
  PR:	198731
  PR:	199309

Changes:
_U  stable/9/sys/
_U  stable/9/sys/conf/
  stable/9/sys/conf/files
_U  stable/9/sys/fs/
  stable/9/sys/fs/ext2fs/ext2_dir.h
  stable/9/sys/fs/ext2fs/ext2_extern.h
  stable/9/sys/fs/ext2fs/ext2_hash.c
  stable/9/sys/fs/ext2fs/ext2_htree.c
  stable/9/sys/fs/ext2fs/ext2_lookup.c
  stable/9/sys/fs/ext2fs/ext2_vfsops.c
  stable/9/sys/fs/ext2fs/ext2fs.h
_U  stable/9/sys/modules/
  stable/9/sys/modules/ext2fs/Makefile