* RE: [2.6] Perl weirdness with ext3 and HTREE
@ 2003-08-06 20:22 Christopher Li
2003-08-06 22:28 ` Martin Schlemmer
0 siblings, 1 reply; 7+ messages in thread
From: Christopher Li @ 2003-08-06 20:22 UTC (permalink / raw)
To: azarah; +Cc: KML, akpm, adilger, ext3-users, x86-kernel
> -----Original Message-----
> From: Martin Schlemmer [mailto:azarah@gentoo.org]
> Sent: Tuesday, August 05, 2003 12:23 PM
> To: Christopher Li
> Cc: KML; akpm@digeo.com; adilger@clusterfs.com; ext3-users@redhat.com;
> x86-kernel@gentoo.org
> Subject: Re: [2.6] Perl weirdness with ext3 and HTREE
>
>
> On Tue, 2003-08-05 at 20:28, Christopher Li wrote:
> > I can take a look at it.
> >
> > Is there any way to reproduce this bug without installing the
> > whole gentoo? It would be nice if I can just download some
> > package to make it happen.
> >
>
> Just grab the perl source, if you want, I can mail you the ebuild that
> should give some direction in how to compile it, or grab your local
> .spec, configure it (maybe with install location not in /), and then
> just compile and finally install to a ext3 FS with HTREE enabled.
> Usually over here, it keeps on leaving an invalid entry to
> ..usr/share/man/man3/Hash::Util.tmp.
>
I am running 2.6-test2 kernel. Download the perl 5.8.0 (stable.tar.gz).
./Configure --prefix=/mnt/hdc3; make; make install.
It did not happen for me. Hash::Util.3 was installed correctly.
(Of course, I did turn on directory index)
Can you send me more infomation how you build the perl package
and install it? I guess I have to do more gentoo like step to duplicate
it :-)
Thanks
Chris
^ permalink raw reply [flat|nested] 7+ messages in thread* RE: [2.6] Perl weirdness with ext3 and HTREE 2003-08-06 20:22 [2.6] Perl weirdness with ext3 and HTREE Christopher Li @ 2003-08-06 22:28 ` Martin Schlemmer 2003-08-19 10:40 ` [PATCH] fix for htree corruption. Was: " chrisl 0 siblings, 1 reply; 7+ messages in thread From: Martin Schlemmer @ 2003-08-06 22:28 UTC (permalink / raw) To: Christopher Li; +Cc: KML, akpm, adilger, ext3-users, x86-kernel [-- Attachment #1.1: Type: text/plain, Size: 7518 bytes --] On Wed, 2003-08-06 at 22:22, Christopher Li wrote: > > Just grab the perl source, if you want, I can mail you the ebuild that > > should give some direction in how to compile it, or grab your local > > .spec, configure it (maybe with install location not in /), and then > > just compile and finally install to a ext3 FS with HTREE enabled. > > Usually over here, it keeps on leaving an invalid entry to > > ..usr/share/man/man3/Hash::Util.tmp. > > > > I am running 2.6-test2 kernel. Download the perl 5.8.0 (stable.tar.gz). > ./Configure --prefix=/mnt/hdc3; make; make install. > > It did not happen for me. Hash::Util.3 was installed correctly. > (Of course, I did turn on directory index) > > Can you send me more infomation how you build the perl package > and install it? I guess I have to do more gentoo like step to duplicate > it :-) > I have gotten a few of these while testing: ----------------------------------------- EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (4759186), 0 Slab corruption: start=cb147184, expend=cb14736f, problemat=cb1471f8 Last user: [<c019ae7f>](ext3_destroy_inode+0x1d/0x21) Data: ********************************************************************************************************************F4 F1 15 F6 ***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************A5 Next: 71 F0 2C .7F AE 19 C0 71 F0 2C .******************** slab error in check_poison_obj(): cache `ext3_inode_cache': object was modified after freeing Call Trace: [<c0141634>] check_poison_obj+0x161/0x1a1 [<c0143128>] kmem_cache_alloc+0x11f/0x159 [<c019ae46>] ext3_alloc_inode+0x18/0x34 [<c019ae46>] ext3_alloc_inode+0x18/0x34 [<c0171f74>] alloc_inode+0x1c/0x14d [<c01729db>] new_inode+0x1a/0xa2 [<c0192207>] ext3_new_inode+0x41/0x6d8 [<c014313c>] kmem_cache_alloc+0x133/0x159 [<c01a0244>] new_handle+0x1c/0x4e [<c01992e4>] ext3_mkdir+0x74/0x2b6 [<c01665dc>] permission+0x2f/0x4b [<c0168555>] vfs_mkdir+0x6d/0xbf [<c016865e>] sys_mkdir+0xb7/0xf7 [<c010aaa5>] sysenter_past_esp+0x52/0x71 ----------------------------------------- A more complete one is attached (just more similar ones). Attached is a script (test.sh) and a list of man page names (list) that I can recreate it without needing perl. The list may or may not be pruned some more, but I will try tonight again after some sleep ;) Here is a test run (note that it do the same with symlinks instead of hard links): ----------------------------------------- nosferatu space # uname -a Linux nosferatu 2.6.0-test2-bk5 #2 SMP Wed Aug 6 00:21:15 SAST 2003 i686 Intel(R) Pentium(R) 4 CPU 2.40GHz GenuineIntel GNU/Linux nosferatu space # dumpe2fs /dev/hdc1 | grep features dumpe2fs 1.34 (25-Jul-2003) Filesystem features: has_journal dir_index filetype needs_recovery sparse_super large_file nosferatu space # pwd /space nosferatu space # mount | grep `pwd` /dev/hdc1 on /space type ext3 (rw,noatime) nosferatu space # ls foo/ ls: foo/: No such file or directory nosferatu space # cat test.sh #!/bin/bash i=1 testdir="`pwd`/foo" (rm -rf "$testdir"; rm -rf "$testdir") &>/dev/null mkdir -p "$testdir" for x in $(cat list) do temp="$testdir/${x/3pm/tmp}" x="$testdir/${x}" touch "$temp" ln "$temp" "$x" rm -f "$temp" # echo "Pass $i" # i=$((i+1)) done nosferatu space # ./test.sh nosferatu space # ls foo/ ls: foo/Win32.tmp: No such file or directory Fcntl.3pm PerlIO::via.3pm Hash::Util.3pm PerlIO::via::QuotedPrint.3pm I18N::Collate.3pm Pod::Checker.3pm I18N::LangTags.3pm Pod::Find.3pm I18N::LangTags::List.3pm Pod::Html.3pm I18N::Langinfo.3pm Pod::InputObjects.3pm IO.3pm Pod::LaTeX.3pm IO::Dir.3pm Pod::Man.3pm IO::File.3pm Pod::ParseLink.3pm IO::Handle.3pm Pod::ParseUtils.3pm IO::Pipe.3pm Pod::Parser.3pm IO::Poll.3pm Pod::Plainer.3pm IO::Seekable.3pm Pod::Select.3pm IO::Select.3pm Pod::Text.3pm IO::Socket.3pm Pod::Text::Color.3pm IO::Socket::INET.3pm Pod::Text::Overstrike.3pm IO::Socket::UNIX.3pm Pod::Text::Termcap.3pm IPC::Msg.3pm Pod::Usage.3pm IPC::Open2.3pm SDBM_File.3pm IPC::Open3.3pm Safe.3pm IPC::Semaphore.3pm Scalar::Util.3pm IPC::SysV.3pm Search::Dict.3pm List::Util.3pm SelectSaver.3pm Locale::Constants.3pm SelfLoader.3pm Locale::Country.3pm Shell.3pm Locale::Currency.3pm Socket.3pm Locale::Language.3pm Storable.3pm Locale::Maketext.3pm Switch.3pm Locale::Maketext::TPJ13.3pm Symbol.3pm Locale::Script.3pm Sys::Hostname.3pm MIME::Base64.3pm Sys::Syslog.3pm MIME::QuotedPrint.3pm Term::ANSIColor.3pm Math::BigFloat.3pm Term::Cap.3pm Math::BigFloat::Trace.3pm Term::Complete.3pm Math::BigInt.3pm Term::ReadLine.3pm Math::BigInt::Calc.3pm Test.3pm Math::BigInt::Trace.3pm Test::Builder.3pm Math::BigRat.3pm Test::Harness.3pm Math::Complex.3pm Test::Harness::Assert.3pm Math::Trig.3pm Test::Harness::Iterator.3pm Memoize.3pm Test::Harness::Straps.3pm Memoize::AnyDBM_File.3pm Test::More.3pm Memoize::Expire.3pm Test::Simple.3pm Memoize::ExpireFile.3pm Test::Tutorial.3pm Memoize::ExpireTest.3pm Text::Abbrev.3pm Memoize::NDBM_File.3pm Text::Balanced.3pm Memoize::SDBM_File.3pm Text::ParseWords.3pm Memoize::Storable.3pm Text::Soundex.3pm NDBM_File.3pm Text::Tabs.3pm NEXT.3pm Text::Wrap.3pm Net::Cmd.3pm Thread.3pm Net::Config.3pm Thread::Queue.3pm Net::Domain.3pm Thread::Semaphore.3pm Net::FTP.3pm Tie::Array.3pm Net::FTP::A.3pm Tie::File.3pm Net::FTP::E.3pm Tie::Handle.3pm Net::FTP::I.3pm Tie::Hash.3pm Net::FTP::L.3pm Tie::Memoize.3pm Net::FTP::dataconn.3pm Tie::RefHash.3pm Net::NNTP.3pm Tie::Scalar.3pm Net::Netrc.3pm Tie::SubstrHash.3pm Net::POP3.3pm Time::HiRes.3pm Net::Ping.3pm Time::Local.3pm Net::SMTP.3pm Time::gmtime.3pm Net::Time.3pm Time::localtime.3pm Net::hostent.3pm Time::tm.3pm Net::libnetFAQ.3pm UNIVERSAL.3pm Net::netent.3pm Unicode::Collate.3pm Net::protoent.3pm Unicode::Normalize.3pm Net::servent.3pm Unicode::UCD.3pm O.3pm User::grent.3pm Opcode.3pm User::pwent.3pm POSIX.3pm Win32.3pm PerlIO.3pm XS::APItest.3pm PerlIO::encoding.3pm XS::Typemap.3pm PerlIO::scalar.3pm XSLoader.3pm nosferatu space # ---------------------------------- Thanks, -- Martin Schlemmer [-- Attachment #1.2: log.txt --] [-- Type: text/plain, Size: 7995 bytes --] kjournald starting. Commit interval 5 seconds EXT3 FS on hdc1, internal journal EXT3-fs: mounted filesystem with ordered data mode. EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (2961487), 0 EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (2944744), 0 Slab corruption: start=d230e184, expend=d230e36f, problemat=d230e1f8 Last user: [<c019ae7f>](ext3_destroy_inode+0x1d/0x21) Data: ********************************************************************************************************************08 89 A1 C6 ***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************A5 Next: 71 F0 2C .7F AE 19 C0 71 F0 2C .******************** slab error in check_poison_obj(): cache `ext3_inode_cache': object was modified after freeing Call Trace: [<c0141634>] check_poison_obj+0x161/0x1a1 [<c0143128>] kmem_cache_alloc+0x11f/0x159 [<c019ae46>] ext3_alloc_inode+0x18/0x34 [<c019ae46>] ext3_alloc_inode+0x18/0x34 [<c0171f74>] alloc_inode+0x1c/0x14d [<c01729db>] new_inode+0x1a/0xa2 [<c0192207>] ext3_new_inode+0x41/0x6d8 [<c014313c>] kmem_cache_alloc+0x133/0x159 [<c01a0244>] new_handle+0x1c/0x4e [<c0199154>] ext3_create+0x55/0xb0 [<c0167be9>] vfs_create+0x79/0xce [<c0168179>] open_namei+0x39a/0x3ee [<c0157976>] filp_open+0x3e/0x64 [<c0157edc>] sys_open+0x5b/0x8b [<c010aaa5>] sysenter_past_esp+0x52/0x71 EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (2944744), 0 Slab corruption: start=e2b7c27c, expend=e2b7c467, problemat=e2b7c2f0 Last user: [<c019ae7f>](ext3_destroy_inode+0x1d/0x21) Data: ********************************************************************************************************************08 89 A1 C6 ***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************A5 Next: 71 F0 2C .7F AE 19 C0 71 F0 2C .******************** slab error in check_poison_obj(): cache `ext3_inode_cache': object was modified after freeing Call Trace: [<c0141634>] check_poison_obj+0x161/0x1a1 [<c0143128>] kmem_cache_alloc+0x11f/0x159 [<c019ae46>] ext3_alloc_inode+0x18/0x34 [<c019ae46>] ext3_alloc_inode+0x18/0x34 [<c0171f74>] alloc_inode+0x1c/0x14d [<c01729db>] new_inode+0x1a/0xa2 [<c0192207>] ext3_new_inode+0x41/0x6d8 [<c014313c>] kmem_cache_alloc+0x133/0x159 [<c01a0244>] new_handle+0x1c/0x4e [<c0199154>] ext3_create+0x55/0xb0 [<c0167be9>] vfs_create+0x79/0xce [<c0168179>] open_namei+0x39a/0x3ee [<c0157976>] filp_open+0x3e/0x64 [<c0157edc>] sys_open+0x5b/0x8b [<c010aaa5>] sysenter_past_esp+0x52/0x71 EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (2944744), 0 Slab corruption: start=e2b7c27c, expend=e2b7c467, problemat=e2b7c2f0 Last user: [<c019ae7f>](ext3_destroy_inode+0x1d/0x21) Data: ********************************************************************************************************************44 BD 8F F6 ***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************A5 Next: 71 F0 2C .7F AE 19 C0 71 F0 2C .******************** slab error in check_poison_obj(): cache `ext3_inode_cache': object was modified after freeing Call Trace: [<c0141634>] check_poison_obj+0x161/0x1a1 [<c0143128>] kmem_cache_alloc+0x11f/0x159 [<c019ae46>] ext3_alloc_inode+0x18/0x34 [<c019ae46>] ext3_alloc_inode+0x18/0x34 [<c0171f74>] alloc_inode+0x1c/0x14d [<c01729db>] new_inode+0x1a/0xa2 [<c0192207>] ext3_new_inode+0x41/0x6d8 [<c014313c>] kmem_cache_alloc+0x133/0x159 [<c01a0244>] new_handle+0x1c/0x4e [<c0199154>] ext3_create+0x55/0xb0 [<c0167be9>] vfs_create+0x79/0xce [<c0168179>] open_namei+0x39a/0x3ee [<c0157976>] filp_open+0x3e/0x64 [<c0157edc>] sys_open+0x5b/0x8b [<c010aaa5>] sysenter_past_esp+0x52/0x71 EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (4759152), 0 Slab corruption: start=cb147184, expend=cb14736f, problemat=cb1471f8 Last user: [<c019ae7f>](ext3_destroy_inode+0x1d/0x21) Data: ********************************************************************************************************************08 89 A1 C6 ***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************A5 Next: 71 F0 2C .7F AE 19 C0 71 F0 2C .******************** slab error in check_poison_obj(): cache `ext3_inode_cache': object was modified after freeing Call Trace: [<c0141634>] check_poison_obj+0x161/0x1a1 [<c0143128>] kmem_cache_alloc+0x11f/0x159 [<c019ae46>] ext3_alloc_inode+0x18/0x34 [<c019ae46>] ext3_alloc_inode+0x18/0x34 [<c0171f74>] alloc_inode+0x1c/0x14d [<c01729db>] new_inode+0x1a/0xa2 [<c0192207>] ext3_new_inode+0x41/0x6d8 [<c014313c>] kmem_cache_alloc+0x133/0x159 [<c01a0244>] new_handle+0x1c/0x4e [<c0199154>] ext3_create+0x55/0xb0 [<c0167be9>] vfs_create+0x79/0xce [<c0168179>] open_namei+0x39a/0x3ee [<c0157976>] filp_open+0x3e/0x64 [<c0157edc>] sys_open+0x5b/0x8b [<c010aaa5>] sysenter_past_esp+0x52/0x71 EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (4759186), 0 Slab corruption: start=cb147184, expend=cb14736f, problemat=cb1471f8 Last user: [<c019ae7f>](ext3_destroy_inode+0x1d/0x21) Data: ********************************************************************************************************************F4 F1 15 F6 ***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************A5 Next: 71 F0 2C .7F AE 19 C0 71 F0 2C .******************** slab error in check_poison_obj(): cache `ext3_inode_cache': object was modified after freeing Call Trace: [<c0141634>] check_poison_obj+0x161/0x1a1 [<c0143128>] kmem_cache_alloc+0x11f/0x159 [<c019ae46>] ext3_alloc_inode+0x18/0x34 [<c019ae46>] ext3_alloc_inode+0x18/0x34 [<c0171f74>] alloc_inode+0x1c/0x14d [<c01729db>] new_inode+0x1a/0xa2 [<c0192207>] ext3_new_inode+0x41/0x6d8 [<c014313c>] kmem_cache_alloc+0x133/0x159 [<c01a0244>] new_handle+0x1c/0x4e [<c01992e4>] ext3_mkdir+0x74/0x2b6 [<c01665dc>] permission+0x2f/0x4b [<c0168555>] vfs_mkdir+0x6d/0xbf [<c016865e>] sys_mkdir+0xb7/0xf7 [<c010aaa5>] sysenter_past_esp+0x52/0x71 EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (4759122), 0 EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (4759194), 0 EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (4710637), 0 EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (4710637), 0 EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (4710637), 0 [-- Attachment #1.3: test.sh --] [-- Type: text/x-sh, Size: 293 bytes --] #!/bin/bash i=1 testdir="`pwd`/foo" (rm -rf "$testdir"; rm -rf "$testdir") &>/dev/null mkdir -p "$testdir" for x in $(cat list) do temp="$testdir/${x/3pm/tmp}" x="$testdir/${x}" touch "$temp" ln "$temp" "$x" rm -f "$temp" # echo "Pass $i" # i=$((i+1)) done [-- Attachment #1.4: list --] [-- Type: text/plain, Size: 2734 bytes --] Fcntl.3pm Hash::Util.3pm I18N::Collate.3pm I18N::LangTags.3pm I18N::LangTags::List.3pm I18N::Langinfo.3pm IO.3pm IO::Dir.3pm IO::File.3pm IO::Handle.3pm IO::Pipe.3pm IO::Poll.3pm IO::Seekable.3pm IO::Select.3pm IO::Socket.3pm IO::Socket::INET.3pm IO::Socket::UNIX.3pm IPC::Msg.3pm IPC::Open2.3pm IPC::Open3.3pm IPC::Semaphore.3pm IPC::SysV.3pm List::Util.3pm Locale::Constants.3pm Locale::Country.3pm Locale::Currency.3pm Locale::Language.3pm Locale::Maketext.3pm Locale::Maketext::TPJ13.3pm Locale::Script.3pm MIME::Base64.3pm MIME::QuotedPrint.3pm Math::BigFloat.3pm Math::BigFloat::Trace.3pm Math::BigInt.3pm Math::BigInt::Calc.3pm Math::BigInt::Trace.3pm Math::BigRat.3pm Math::Complex.3pm Math::Trig.3pm Memoize.3pm Memoize::AnyDBM_File.3pm Memoize::Expire.3pm Memoize::ExpireFile.3pm Memoize::ExpireTest.3pm Memoize::NDBM_File.3pm Memoize::SDBM_File.3pm Memoize::Storable.3pm NDBM_File.3pm NEXT.3pm Net::Cmd.3pm Net::Config.3pm Net::Domain.3pm Net::FTP.3pm Net::FTP::A.3pm Net::FTP::E.3pm Net::FTP::I.3pm Net::FTP::L.3pm Net::FTP::dataconn.3pm Net::NNTP.3pm Net::Netrc.3pm Net::POP3.3pm Net::Ping.3pm Net::SMTP.3pm Net::Time.3pm Net::hostent.3pm Net::libnetFAQ.3pm Net::netent.3pm Net::protoent.3pm Net::servent.3pm O.3pm Opcode.3pm POSIX.3pm PerlIO.3pm PerlIO::encoding.3pm PerlIO::scalar.3pm PerlIO::via.3pm PerlIO::via::QuotedPrint.3pm Pod::Checker.3pm Pod::Find.3pm Pod::Html.3pm Pod::InputObjects.3pm Pod::LaTeX.3pm Pod::Man.3pm Pod::ParseLink.3pm Pod::ParseUtils.3pm Pod::Parser.3pm Pod::Plainer.3pm Pod::Select.3pm Pod::Text.3pm Pod::Text::Color.3pm Pod::Text::Overstrike.3pm Pod::Text::Termcap.3pm Pod::Usage.3pm SDBM_File.3pm Safe.3pm Scalar::Util.3pm Search::Dict.3pm SelectSaver.3pm SelfLoader.3pm Shell.3pm Socket.3pm Storable.3pm Switch.3pm Symbol.3pm Sys::Hostname.3pm Sys::Syslog.3pm Term::ANSIColor.3pm Term::Cap.3pm Term::Complete.3pm Term::ReadLine.3pm Test.3pm Test::Builder.3pm Test::Harness.3pm Test::Harness::Assert.3pm Test::Harness::Iterator.3pm Test::Harness::Straps.3pm Test::More.3pm Test::Simple.3pm Test::Tutorial.3pm Text::Abbrev.3pm Text::Balanced.3pm Text::ParseWords.3pm Text::Soundex.3pm Text::Tabs.3pm Text::Wrap.3pm Thread.3pm Thread::Queue.3pm Thread::Semaphore.3pm Tie::Array.3pm Tie::File.3pm Tie::Handle.3pm Tie::Hash.3pm Tie::Memoize.3pm Tie::RefHash.3pm Tie::Scalar.3pm Tie::SubstrHash.3pm Time::HiRes.3pm Time::Local.3pm Time::gmtime.3pm Time::localtime.3pm Time::tm.3pm UNIVERSAL.3pm Unicode::Collate.3pm Unicode::Normalize.3pm Unicode::UCD.3pm User::grent.3pm User::pwent.3pm Win32.3pm XS::APItest.3pm XS::Typemap.3pm XSLoader.3pm [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH] fix for htree corruption. Was: [2.6] Perl weirdness with ext3 and HTREE 2003-08-06 22:28 ` Martin Schlemmer @ 2003-08-19 10:40 ` chrisl 2003-08-19 10:55 ` Andrew Morton ` (2 more replies) 0 siblings, 3 replies; 7+ messages in thread From: chrisl @ 2003-08-19 10:40 UTC (permalink / raw) To: Martin Schlemmer; +Cc: KML, akpm, adilger, ext3-users, x86-kernel, Ext2 Devel Martin, The first patch should fix it. The bug is trigger by creating the index. Coping out the index we assume the dirents start with the first entry after "." "..". It can make the first previous deleted entry reappear. In the past we set inode to zero for empty entry so this is not a problem. That is not true any more. Andrew, I assume touch inode->i_ctime after ext3_mark_inode_dirty is a bug? The second patch is for that. Chris ===== namei.c 1.44 vs edited ===== --- 1.44/fs/ext3/namei.c Sun Jun 29 23:49:04 2003 +++ edited/namei.c Tue Aug 19 03:28:52 2003 @@ -1304,7 +1304,8 @@ data1 = bh2->b_data; /* The 0th block becomes the root, move the dirents out */ - de = (struct ext3_dir_entry_2 *) &root->info; + de = &root->dotdot; + de = (struct ext3_dir_entry_2 *) ((char *)de + de->rec_len); len = ((char *) root) + blocksize - (char *) de; memcpy (data1, de, len); de = (struct ext3_dir_entry_2 *) data1; ===== namei.c 1.44 vs edited ===== --- 1.44/fs/ext3/namei.c Sun Jun 29 23:49:04 2003 +++ edited/namei.c Tue Aug 19 03:28:52 2003 @@ -2006,9 +2007,9 @@ * recovery. */ inode->i_size = 0; ext3_orphan_add(handle, inode); + inode->i_ctime = dir->i_ctime = dir->i_mtime = CURRENT_TIME; ext3_mark_inode_dirty(handle, inode); dir->i_nlink--; - inode->i_ctime = dir->i_ctime = dir->i_mtime = CURRENT_TIME; ext3_update_dx_flag(dir); ext3_mark_inode_dirty(handle, dir); @@ -2060,8 +2061,8 @@ inode->i_nlink--; if (!inode->i_nlink) ext3_orphan_add(handle, inode); - ext3_mark_inode_dirty(handle, inode); inode->i_ctime = dir->i_ctime; + ext3_mark_inode_dirty(handle, inode); retval = 0; end_unlink: @@ -2220,7 +2221,6 @@ goto end_rename; } else { BUFFER_TRACE(new_bh, "get write access"); - BUFFER_TRACE(new_bh, "get_write_access"); ext3_journal_get_write_access(handle, new_bh); new_de->inode = le32_to_cpu(old_inode->i_ino); if (EXT3_HAS_INCOMPAT_FEATURE(new_dir->i_sb, On Thu, Aug 07, 2003 at 12:28:07AM +0200, Martin Schlemmer wrote: > On Wed, 2003-08-06 at 22:22, Christopher Li wrote: > > > > Just grab the perl source, if you want, I can mail you the ebuild that > > > should give some direction in how to compile it, or grab your local > > > .spec, configure it (maybe with install location not in /), and then > > > just compile and finally install to a ext3 FS with HTREE enabled. > > > Usually over here, it keeps on leaving an invalid entry to > > > ..usr/share/man/man3/Hash::Util.tmp. > > > > > > > I am running 2.6-test2 kernel. Download the perl 5.8.0 (stable.tar.gz). > > ./Configure --prefix=/mnt/hdc3; make; make install. > > > > It did not happen for me. Hash::Util.3 was installed correctly. > > (Of course, I did turn on directory index) > > > > Can you send me more infomation how you build the perl package > > and install it? I guess I have to do more gentoo like step to duplicate > > it :-) > > > > I have gotten a few of these while testing: > > ----------------------------------------- > EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file > (4759186), 0 > Slab corruption: start=cb147184, expend=cb14736f, problemat=cb1471f8 > Last user: [<c019ae7f>](ext3_destroy_inode+0x1d/0x21) > Data: > ********************************************************************************************************************F4 F1 15 F6 ***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************A5 > Next: 71 F0 2C .7F AE 19 C0 71 F0 2C .******************** > slab error in check_poison_obj(): cache `ext3_inode_cache': object was > modified after freeing > Call Trace: > [<c0141634>] check_poison_obj+0x161/0x1a1 > [<c0143128>] kmem_cache_alloc+0x11f/0x159 > [<c019ae46>] ext3_alloc_inode+0x18/0x34 > [<c019ae46>] ext3_alloc_inode+0x18/0x34 > [<c0171f74>] alloc_inode+0x1c/0x14d > [<c01729db>] new_inode+0x1a/0xa2 > [<c0192207>] ext3_new_inode+0x41/0x6d8 > [<c014313c>] kmem_cache_alloc+0x133/0x159 > [<c01a0244>] new_handle+0x1c/0x4e > [<c01992e4>] ext3_mkdir+0x74/0x2b6 > [<c01665dc>] permission+0x2f/0x4b > [<c0168555>] vfs_mkdir+0x6d/0xbf > [<c016865e>] sys_mkdir+0xb7/0xf7 > [<c010aaa5>] sysenter_past_esp+0x52/0x71 > > ----------------------------------------- > > A more complete one is attached (just more similar ones). > > Attached is a script (test.sh) and a list of man page names (list) that > I can recreate it without needing perl. The list may or may not be > pruned some more, but I will try tonight again after some sleep ;) > > Here is a test run (note that it do the same with symlinks instead of > hard links): > > ----------------------------------------- > nosferatu space # uname -a > Linux nosferatu 2.6.0-test2-bk5 #2 SMP Wed Aug 6 00:21:15 SAST 2003 i686 > Intel(R) Pentium(R) 4 CPU 2.40GHz GenuineIntel GNU/Linux > nosferatu space # dumpe2fs /dev/hdc1 | grep features > dumpe2fs 1.34 (25-Jul-2003) > Filesystem features: has_journal dir_index filetype needs_recovery > sparse_super large_file > nosferatu space # pwd > /space > nosferatu space # mount | grep `pwd` > /dev/hdc1 on /space type ext3 (rw,noatime) > nosferatu space # ls foo/ > ls: foo/: No such file or directory > nosferatu space # cat test.sh > #!/bin/bash > > i=1 > > testdir="`pwd`/foo" > > (rm -rf "$testdir"; rm -rf "$testdir") &>/dev/null > mkdir -p "$testdir" > > for x in $(cat list) > do > temp="$testdir/${x/3pm/tmp}" > x="$testdir/${x}" > > touch "$temp" > ln "$temp" "$x" > rm -f "$temp" > > # echo "Pass $i" > > # i=$((i+1)) > done > > nosferatu space # ./test.sh > nosferatu space # ls foo/ > ls: foo/Win32.tmp: No such file or directory > Fcntl.3pm PerlIO::via.3pm > Hash::Util.3pm PerlIO::via::QuotedPrint.3pm > I18N::Collate.3pm Pod::Checker.3pm > I18N::LangTags.3pm Pod::Find.3pm > I18N::LangTags::List.3pm Pod::Html.3pm > I18N::Langinfo.3pm Pod::InputObjects.3pm > IO.3pm Pod::LaTeX.3pm > IO::Dir.3pm Pod::Man.3pm > IO::File.3pm Pod::ParseLink.3pm > IO::Handle.3pm Pod::ParseUtils.3pm > IO::Pipe.3pm Pod::Parser.3pm > IO::Poll.3pm Pod::Plainer.3pm > IO::Seekable.3pm Pod::Select.3pm > IO::Select.3pm Pod::Text.3pm > IO::Socket.3pm Pod::Text::Color.3pm > IO::Socket::INET.3pm Pod::Text::Overstrike.3pm > IO::Socket::UNIX.3pm Pod::Text::Termcap.3pm > IPC::Msg.3pm Pod::Usage.3pm > IPC::Open2.3pm SDBM_File.3pm > IPC::Open3.3pm Safe.3pm > IPC::Semaphore.3pm Scalar::Util.3pm > IPC::SysV.3pm Search::Dict.3pm > List::Util.3pm SelectSaver.3pm > Locale::Constants.3pm SelfLoader.3pm > Locale::Country.3pm Shell.3pm > Locale::Currency.3pm Socket.3pm > Locale::Language.3pm Storable.3pm > Locale::Maketext.3pm Switch.3pm > Locale::Maketext::TPJ13.3pm Symbol.3pm > Locale::Script.3pm Sys::Hostname.3pm > MIME::Base64.3pm Sys::Syslog.3pm > MIME::QuotedPrint.3pm Term::ANSIColor.3pm > Math::BigFloat.3pm Term::Cap.3pm > Math::BigFloat::Trace.3pm Term::Complete.3pm > Math::BigInt.3pm Term::ReadLine.3pm > Math::BigInt::Calc.3pm Test.3pm > Math::BigInt::Trace.3pm Test::Builder.3pm > Math::BigRat.3pm Test::Harness.3pm > Math::Complex.3pm Test::Harness::Assert.3pm > Math::Trig.3pm Test::Harness::Iterator.3pm > Memoize.3pm Test::Harness::Straps.3pm > Memoize::AnyDBM_File.3pm Test::More.3pm > Memoize::Expire.3pm Test::Simple.3pm > Memoize::ExpireFile.3pm Test::Tutorial.3pm > Memoize::ExpireTest.3pm Text::Abbrev.3pm > Memoize::NDBM_File.3pm Text::Balanced.3pm > Memoize::SDBM_File.3pm Text::ParseWords.3pm > Memoize::Storable.3pm Text::Soundex.3pm > NDBM_File.3pm Text::Tabs.3pm > NEXT.3pm Text::Wrap.3pm > Net::Cmd.3pm Thread.3pm > Net::Config.3pm Thread::Queue.3pm > Net::Domain.3pm Thread::Semaphore.3pm > Net::FTP.3pm Tie::Array.3pm > Net::FTP::A.3pm Tie::File.3pm > Net::FTP::E.3pm Tie::Handle.3pm > Net::FTP::I.3pm Tie::Hash.3pm > Net::FTP::L.3pm Tie::Memoize.3pm > Net::FTP::dataconn.3pm Tie::RefHash.3pm > Net::NNTP.3pm Tie::Scalar.3pm > Net::Netrc.3pm Tie::SubstrHash.3pm > Net::POP3.3pm Time::HiRes.3pm > Net::Ping.3pm Time::Local.3pm > Net::SMTP.3pm Time::gmtime.3pm > Net::Time.3pm Time::localtime.3pm > Net::hostent.3pm Time::tm.3pm > Net::libnetFAQ.3pm UNIVERSAL.3pm > Net::netent.3pm Unicode::Collate.3pm > Net::protoent.3pm Unicode::Normalize.3pm > Net::servent.3pm Unicode::UCD.3pm > O.3pm User::grent.3pm > Opcode.3pm User::pwent.3pm > POSIX.3pm Win32.3pm > PerlIO.3pm XS::APItest.3pm > PerlIO::encoding.3pm XS::Typemap.3pm > PerlIO::scalar.3pm XSLoader.3pm > nosferatu space # > ---------------------------------- > > > Thanks, > > -- > > Martin Schlemmer > > > > kjournald starting. Commit interval 5 seconds > EXT3 FS on hdc1, internal journal > EXT3-fs: mounted filesystem with ordered data mode. > EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (2961487), 0 > EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (2944744), 0 > Slab corruption: start=d230e184, expend=d230e36f, problemat=d230e1f8 > Last user: [<c019ae7f>](ext3_destroy_inode+0x1d/0x21) > Data: ********************************************************************************************************************08 89 A1 C6 ***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************A5 > Next: 71 F0 2C .7F AE 19 C0 71 F0 2C .******************** > slab error in check_poison_obj(): cache `ext3_inode_cache': object was modified after freeing > Call Trace: > [<c0141634>] check_poison_obj+0x161/0x1a1 > [<c0143128>] kmem_cache_alloc+0x11f/0x159 > [<c019ae46>] ext3_alloc_inode+0x18/0x34 > [<c019ae46>] ext3_alloc_inode+0x18/0x34 > [<c0171f74>] alloc_inode+0x1c/0x14d > [<c01729db>] new_inode+0x1a/0xa2 > [<c0192207>] ext3_new_inode+0x41/0x6d8 > [<c014313c>] kmem_cache_alloc+0x133/0x159 > [<c01a0244>] new_handle+0x1c/0x4e > [<c0199154>] ext3_create+0x55/0xb0 > [<c0167be9>] vfs_create+0x79/0xce > [<c0168179>] open_namei+0x39a/0x3ee > [<c0157976>] filp_open+0x3e/0x64 > [<c0157edc>] sys_open+0x5b/0x8b > [<c010aaa5>] sysenter_past_esp+0x52/0x71 > > EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (2944744), 0 > Slab corruption: start=e2b7c27c, expend=e2b7c467, problemat=e2b7c2f0 > Last user: [<c019ae7f>](ext3_destroy_inode+0x1d/0x21) > Data: ********************************************************************************************************************08 89 A1 C6 ***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************A5 > Next: 71 F0 2C .7F AE 19 C0 71 F0 2C .******************** > slab error in check_poison_obj(): cache `ext3_inode_cache': object was modified after freeing > Call Trace: > [<c0141634>] check_poison_obj+0x161/0x1a1 > [<c0143128>] kmem_cache_alloc+0x11f/0x159 > [<c019ae46>] ext3_alloc_inode+0x18/0x34 > [<c019ae46>] ext3_alloc_inode+0x18/0x34 > [<c0171f74>] alloc_inode+0x1c/0x14d > [<c01729db>] new_inode+0x1a/0xa2 > [<c0192207>] ext3_new_inode+0x41/0x6d8 > [<c014313c>] kmem_cache_alloc+0x133/0x159 > [<c01a0244>] new_handle+0x1c/0x4e > [<c0199154>] ext3_create+0x55/0xb0 > [<c0167be9>] vfs_create+0x79/0xce > [<c0168179>] open_namei+0x39a/0x3ee > [<c0157976>] filp_open+0x3e/0x64 > [<c0157edc>] sys_open+0x5b/0x8b > [<c010aaa5>] sysenter_past_esp+0x52/0x71 > > EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (2944744), 0 > Slab corruption: start=e2b7c27c, expend=e2b7c467, problemat=e2b7c2f0 > Last user: [<c019ae7f>](ext3_destroy_inode+0x1d/0x21) > Data: ********************************************************************************************************************44 BD 8F F6 ***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************A5 > Next: 71 F0 2C .7F AE 19 C0 71 F0 2C .******************** > slab error in check_poison_obj(): cache `ext3_inode_cache': object was modified after freeing > Call Trace: > [<c0141634>] check_poison_obj+0x161/0x1a1 > [<c0143128>] kmem_cache_alloc+0x11f/0x159 > [<c019ae46>] ext3_alloc_inode+0x18/0x34 > [<c019ae46>] ext3_alloc_inode+0x18/0x34 > [<c0171f74>] alloc_inode+0x1c/0x14d > [<c01729db>] new_inode+0x1a/0xa2 > [<c0192207>] ext3_new_inode+0x41/0x6d8 > [<c014313c>] kmem_cache_alloc+0x133/0x159 > [<c01a0244>] new_handle+0x1c/0x4e > [<c0199154>] ext3_create+0x55/0xb0 > [<c0167be9>] vfs_create+0x79/0xce > [<c0168179>] open_namei+0x39a/0x3ee > [<c0157976>] filp_open+0x3e/0x64 > [<c0157edc>] sys_open+0x5b/0x8b > [<c010aaa5>] sysenter_past_esp+0x52/0x71 > > EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (4759152), 0 > Slab corruption: start=cb147184, expend=cb14736f, problemat=cb1471f8 > Last user: [<c019ae7f>](ext3_destroy_inode+0x1d/0x21) > Data: ********************************************************************************************************************08 89 A1 C6 ***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************A5 > Next: 71 F0 2C .7F AE 19 C0 71 F0 2C .******************** > slab error in check_poison_obj(): cache `ext3_inode_cache': object was modified after freeing > Call Trace: > [<c0141634>] check_poison_obj+0x161/0x1a1 > [<c0143128>] kmem_cache_alloc+0x11f/0x159 > [<c019ae46>] ext3_alloc_inode+0x18/0x34 > [<c019ae46>] ext3_alloc_inode+0x18/0x34 > [<c0171f74>] alloc_inode+0x1c/0x14d > [<c01729db>] new_inode+0x1a/0xa2 > [<c0192207>] ext3_new_inode+0x41/0x6d8 > [<c014313c>] kmem_cache_alloc+0x133/0x159 > [<c01a0244>] new_handle+0x1c/0x4e > [<c0199154>] ext3_create+0x55/0xb0 > [<c0167be9>] vfs_create+0x79/0xce > [<c0168179>] open_namei+0x39a/0x3ee > [<c0157976>] filp_open+0x3e/0x64 > [<c0157edc>] sys_open+0x5b/0x8b > [<c010aaa5>] sysenter_past_esp+0x52/0x71 > > EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (4759186), 0 > Slab corruption: start=cb147184, expend=cb14736f, problemat=cb1471f8 > Last user: [<c019ae7f>](ext3_destroy_inode+0x1d/0x21) > Data: ********************************************************************************************************************F4 F1 15 F6 ***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************A5 > Next: 71 F0 2C .7F AE 19 C0 71 F0 2C .******************** > slab error in check_poison_obj(): cache `ext3_inode_cache': object was modified after freeing > Call Trace: > [<c0141634>] check_poison_obj+0x161/0x1a1 > [<c0143128>] kmem_cache_alloc+0x11f/0x159 > [<c019ae46>] ext3_alloc_inode+0x18/0x34 > [<c019ae46>] ext3_alloc_inode+0x18/0x34 > [<c0171f74>] alloc_inode+0x1c/0x14d > [<c01729db>] new_inode+0x1a/0xa2 > [<c0192207>] ext3_new_inode+0x41/0x6d8 > [<c014313c>] kmem_cache_alloc+0x133/0x159 > [<c01a0244>] new_handle+0x1c/0x4e > [<c01992e4>] ext3_mkdir+0x74/0x2b6 > [<c01665dc>] permission+0x2f/0x4b > [<c0168555>] vfs_mkdir+0x6d/0xbf > [<c016865e>] sys_mkdir+0xb7/0xf7 > [<c010aaa5>] sysenter_past_esp+0x52/0x71 > > EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (4759122), 0 > EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (4759194), 0 > EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (4710637), 0 > EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (4710637), 0 > EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (4710637), 0 > > Fcntl.3pm > Hash::Util.3pm > I18N::Collate.3pm > I18N::LangTags.3pm > I18N::LangTags::List.3pm > I18N::Langinfo.3pm > IO.3pm > IO::Dir.3pm > IO::File.3pm > IO::Handle.3pm > IO::Pipe.3pm > IO::Poll.3pm > IO::Seekable.3pm > IO::Select.3pm > IO::Socket.3pm > IO::Socket::INET.3pm > IO::Socket::UNIX.3pm > IPC::Msg.3pm > IPC::Open2.3pm > IPC::Open3.3pm > IPC::Semaphore.3pm > IPC::SysV.3pm > List::Util.3pm > Locale::Constants.3pm > Locale::Country.3pm > Locale::Currency.3pm > Locale::Language.3pm > Locale::Maketext.3pm > Locale::Maketext::TPJ13.3pm > Locale::Script.3pm > MIME::Base64.3pm > MIME::QuotedPrint.3pm > Math::BigFloat.3pm > Math::BigFloat::Trace.3pm > Math::BigInt.3pm > Math::BigInt::Calc.3pm > Math::BigInt::Trace.3pm > Math::BigRat.3pm > Math::Complex.3pm > Math::Trig.3pm > Memoize.3pm > Memoize::AnyDBM_File.3pm > Memoize::Expire.3pm > Memoize::ExpireFile.3pm > Memoize::ExpireTest.3pm > Memoize::NDBM_File.3pm > Memoize::SDBM_File.3pm > Memoize::Storable.3pm > NDBM_File.3pm > NEXT.3pm > Net::Cmd.3pm > Net::Config.3pm > Net::Domain.3pm > Net::FTP.3pm > Net::FTP::A.3pm > Net::FTP::E.3pm > Net::FTP::I.3pm > Net::FTP::L.3pm > Net::FTP::dataconn.3pm > Net::NNTP.3pm > Net::Netrc.3pm > Net::POP3.3pm > Net::Ping.3pm > Net::SMTP.3pm > Net::Time.3pm > Net::hostent.3pm > Net::libnetFAQ.3pm > Net::netent.3pm > Net::protoent.3pm > Net::servent.3pm > O.3pm > Opcode.3pm > POSIX.3pm > PerlIO.3pm > PerlIO::encoding.3pm > PerlIO::scalar.3pm > PerlIO::via.3pm > PerlIO::via::QuotedPrint.3pm > Pod::Checker.3pm > Pod::Find.3pm > Pod::Html.3pm > Pod::InputObjects.3pm > Pod::LaTeX.3pm > Pod::Man.3pm > Pod::ParseLink.3pm > Pod::ParseUtils.3pm > Pod::Parser.3pm > Pod::Plainer.3pm > Pod::Select.3pm > Pod::Text.3pm > Pod::Text::Color.3pm > Pod::Text::Overstrike.3pm > Pod::Text::Termcap.3pm > Pod::Usage.3pm > SDBM_File.3pm > Safe.3pm > Scalar::Util.3pm > Search::Dict.3pm > SelectSaver.3pm > SelfLoader.3pm > Shell.3pm > Socket.3pm > Storable.3pm > Switch.3pm > Symbol.3pm > Sys::Hostname.3pm > Sys::Syslog.3pm > Term::ANSIColor.3pm > Term::Cap.3pm > Term::Complete.3pm > Term::ReadLine.3pm > Test.3pm > Test::Builder.3pm > Test::Harness.3pm > Test::Harness::Assert.3pm > Test::Harness::Iterator.3pm > Test::Harness::Straps.3pm > Test::More.3pm > Test::Simple.3pm > Test::Tutorial.3pm > Text::Abbrev.3pm > Text::Balanced.3pm > Text::ParseWords.3pm > Text::Soundex.3pm > Text::Tabs.3pm > Text::Wrap.3pm > Thread.3pm > Thread::Queue.3pm > Thread::Semaphore.3pm > Tie::Array.3pm > Tie::File.3pm > Tie::Handle.3pm > Tie::Hash.3pm > Tie::Memoize.3pm > Tie::RefHash.3pm > Tie::Scalar.3pm > Tie::SubstrHash.3pm > Time::HiRes.3pm > Time::Local.3pm > Time::gmtime.3pm > Time::localtime.3pm > Time::tm.3pm > UNIVERSAL.3pm > Unicode::Collate.3pm > Unicode::Normalize.3pm > Unicode::UCD.3pm > User::grent.3pm > User::pwent.3pm > Win32.3pm > XS::APItest.3pm > XS::Typemap.3pm > XSLoader.3pm ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] fix for htree corruption. Was: [2.6] Perl weirdness with ext3 and HTREE 2003-08-19 10:40 ` [PATCH] fix for htree corruption. Was: " chrisl @ 2003-08-19 10:55 ` Andrew Morton 2003-08-19 18:23 ` chrisl 2003-08-19 14:17 ` Martin Schlemmer 2003-08-21 19:46 ` Martin Schlemmer 2 siblings, 1 reply; 7+ messages in thread From: Andrew Morton @ 2003-08-19 10:55 UTC (permalink / raw) To: chrisl; +Cc: azarah, linux-kernel, adilger, ext3-users, x86-kernel, ext2-devel chrisl@vmware.com wrote: > > Martin, > > The first patch should fix it. The bug is trigger by creating the index. > Coping out the index we assume the dirents start with the first entry > after "." "..". > > It can make the first previous deleted entry reappear. > In the past we set inode to zero for empty entry so this is not > a problem. That is not true any more. whee, neat, thanks. > Andrew, I assume touch inode->i_ctime after > ext3_mark_inode_dirty is a bug? The second patch is for that. That's correct. Could you please regenerate a full, single diff against a known kernel version? That patch generated 100% rejects for me... ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] fix for htree corruption. Was: [2.6] Perl weirdness with ext3 and HTREE 2003-08-19 10:55 ` Andrew Morton @ 2003-08-19 18:23 ` chrisl 0 siblings, 0 replies; 7+ messages in thread From: chrisl @ 2003-08-19 18:23 UTC (permalink / raw) To: Andrew Morton Cc: azarah, linux-kernel, adilger, ext3-users, x86-kernel, ext2-devel On Tue, Aug 19, 2003 at 03:55:06AM -0700, Andrew Morton wrote: > chrisl@vmware.com wrote: > > Could you please regenerate a full, single diff against a known kernel > version? That patch generated 100% rejects for me... > > Sorry for that. Here is the patch again. It is against the 2.6-test3. It also apply cleanly on current BK tree. Chris ===== fs/ext3/namei.c 1.44 vs edited ===== --- 1.44/fs/ext3/namei.c Sun Jun 29 23:49:04 2003 +++ edited/fs/ext3/namei.c Tue Aug 19 03:28:52 2003 @@ -1304,7 +1304,8 @@ data1 = bh2->b_data; /* The 0th block becomes the root, move the dirents out */ - de = (struct ext3_dir_entry_2 *) &root->info; + de = &root->dotdot; + de = (struct ext3_dir_entry_2 *) ((char *)de + de->rec_len); len = ((char *) root) + blocksize - (char *) de; memcpy (data1, de, len); de = (struct ext3_dir_entry_2 *) data1; @@ -2006,9 +2007,9 @@ * recovery. */ inode->i_size = 0; ext3_orphan_add(handle, inode); + inode->i_ctime = dir->i_ctime = dir->i_mtime = CURRENT_TIME; ext3_mark_inode_dirty(handle, inode); dir->i_nlink--; - inode->i_ctime = dir->i_ctime = dir->i_mtime = CURRENT_TIME; ext3_update_dx_flag(dir); ext3_mark_inode_dirty(handle, dir); @@ -2060,8 +2061,8 @@ inode->i_nlink--; if (!inode->i_nlink) ext3_orphan_add(handle, inode); - ext3_mark_inode_dirty(handle, inode); inode->i_ctime = dir->i_ctime; + ext3_mark_inode_dirty(handle, inode); retval = 0; end_unlink: @@ -2220,7 +2221,6 @@ goto end_rename; } else { BUFFER_TRACE(new_bh, "get write access"); - BUFFER_TRACE(new_bh, "get_write_access"); ext3_journal_get_write_access(handle, new_bh); new_de->inode = le32_to_cpu(old_inode->i_ino); if (EXT3_HAS_INCOMPAT_FEATURE(new_dir->i_sb, ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] fix for htree corruption. Was: [2.6] Perl weirdness with ext3 and HTREE 2003-08-19 10:40 ` [PATCH] fix for htree corruption. Was: " chrisl 2003-08-19 10:55 ` Andrew Morton @ 2003-08-19 14:17 ` Martin Schlemmer 2003-08-21 19:46 ` Martin Schlemmer 2 siblings, 0 replies; 7+ messages in thread From: Martin Schlemmer @ 2003-08-19 14:17 UTC (permalink / raw) To: chrisl; +Cc: KML, akpm, adilger, ext3-users, x86-kernel, Ext2 Devel On Tue, 2003-08-19 at 12:40, chrisl@vmware.com wrote: > Martin, > Hiya Chris > The first patch should fix it. The bug is trigger by creating the index. > Coping out the index we assume the dirents start with the first entry > after "." "..". > > It can make the first previous deleted entry reappear. > In the past we set inode to zero for empty entry so this is not > a problem. That is not true any more. > Thanks a lot! I will test as soon as I get home. If maybe delayed, sorry, but I have currently only working inet at work. > Andrew, I assume touch inode->i_ctime after > ext3_mark_inode_dirty is a bug? The second patch is for that. > > > Chris > > ===== namei.c 1.44 vs edited ===== > --- 1.44/fs/ext3/namei.c Sun Jun 29 23:49:04 2003 > +++ edited/namei.c Tue Aug 19 03:28:52 2003 > @@ -1304,7 +1304,8 @@ > data1 = bh2->b_data; > > /* The 0th block becomes the root, move the dirents out */ > - de = (struct ext3_dir_entry_2 *) &root->info; > + de = &root->dotdot; > + de = (struct ext3_dir_entry_2 *) ((char *)de + de->rec_len); > len = ((char *) root) + blocksize - (char *) de; > memcpy (data1, de, len); > de = (struct ext3_dir_entry_2 *) data1; > > > > > ===== namei.c 1.44 vs edited ===== > --- 1.44/fs/ext3/namei.c Sun Jun 29 23:49:04 2003 > +++ edited/namei.c Tue Aug 19 03:28:52 2003 > @@ -2006,9 +2007,9 @@ > * recovery. */ > inode->i_size = 0; > ext3_orphan_add(handle, inode); > + inode->i_ctime = dir->i_ctime = dir->i_mtime = CURRENT_TIME; > ext3_mark_inode_dirty(handle, inode); > dir->i_nlink--; > - inode->i_ctime = dir->i_ctime = dir->i_mtime = CURRENT_TIME; > ext3_update_dx_flag(dir); > ext3_mark_inode_dirty(handle, dir); > > @@ -2060,8 +2061,8 @@ > inode->i_nlink--; > if (!inode->i_nlink) > ext3_orphan_add(handle, inode); > - ext3_mark_inode_dirty(handle, inode); > inode->i_ctime = dir->i_ctime; > + ext3_mark_inode_dirty(handle, inode); > retval = 0; > > end_unlink: > @@ -2220,7 +2221,6 @@ > goto end_rename; > } else { > BUFFER_TRACE(new_bh, "get write access"); > - BUFFER_TRACE(new_bh, "get_write_access"); > ext3_journal_get_write_access(handle, new_bh); > new_de->inode = le32_to_cpu(old_inode->i_ino); > if (EXT3_HAS_INCOMPAT_FEATURE(new_dir->i_sb, > > > On Thu, Aug 07, 2003 at 12:28:07AM +0200, Martin Schlemmer wrote: > > On Wed, 2003-08-06 at 22:22, Christopher Li wrote: > > > > > > Just grab the perl source, if you want, I can mail you the ebuild that > > > > should give some direction in how to compile it, or grab your local > > > > .spec, configure it (maybe with install location not in /), and then > > > > just compile and finally install to a ext3 FS with HTREE enabled. > > > > Usually over here, it keeps on leaving an invalid entry to > > > > ..usr/share/man/man3/Hash::Util.tmp. > > > > > > > > > > I am running 2.6-test2 kernel. Download the perl 5.8.0 (stable.tar.gz). > > > ./Configure --prefix=/mnt/hdc3; make; make install. > > > > > > It did not happen for me. Hash::Util.3 was installed correctly. > > > (Of course, I did turn on directory index) > > > > > > Can you send me more infomation how you build the perl package > > > and install it? I guess I have to do more gentoo like step to duplicate > > > it :-) > > > > > > > I have gotten a few of these while testing: > > > > ----------------------------------------- > > EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file > > (4759186), 0 > > Slab corruption: start=cb147184, expend=cb14736f, problemat=cb1471f8 > > Last user: [<c019ae7f>](ext3_destroy_inode+0x1d/0x21) > > Data: > > ********************************************************************************************************************F4 F1 15 F6 ***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************A5 > > Next: 71 F0 2C .7F AE 19 C0 71 F0 2C .******************** > > slab error in check_poison_obj(): cache `ext3_inode_cache': object was > > modified after freeing > > Call Trace: > > [<c0141634>] check_poison_obj+0x161/0x1a1 > > [<c0143128>] kmem_cache_alloc+0x11f/0x159 > > [<c019ae46>] ext3_alloc_inode+0x18/0x34 > > [<c019ae46>] ext3_alloc_inode+0x18/0x34 > > [<c0171f74>] alloc_inode+0x1c/0x14d > > [<c01729db>] new_inode+0x1a/0xa2 > > [<c0192207>] ext3_new_inode+0x41/0x6d8 > > [<c014313c>] kmem_cache_alloc+0x133/0x159 > > [<c01a0244>] new_handle+0x1c/0x4e > > [<c01992e4>] ext3_mkdir+0x74/0x2b6 > > [<c01665dc>] permission+0x2f/0x4b > > [<c0168555>] vfs_mkdir+0x6d/0xbf > > [<c016865e>] sys_mkdir+0xb7/0xf7 > > [<c010aaa5>] sysenter_past_esp+0x52/0x71 > > > > ----------------------------------------- > > > > A more complete one is attached (just more similar ones). > > > > Attached is a script (test.sh) and a list of man page names (list) that > > I can recreate it without needing perl. The list may or may not be > > pruned some more, but I will try tonight again after some sleep ;) > > > > Here is a test run (note that it do the same with symlinks instead of > > hard links): > > > > ----------------------------------------- > > nosferatu space # uname -a > > Linux nosferatu 2.6.0-test2-bk5 #2 SMP Wed Aug 6 00:21:15 SAST 2003 i686 > > Intel(R) Pentium(R) 4 CPU 2.40GHz GenuineIntel GNU/Linux > > nosferatu space # dumpe2fs /dev/hdc1 | grep features > > dumpe2fs 1.34 (25-Jul-2003) > > Filesystem features: has_journal dir_index filetype needs_recovery > > sparse_super large_file > > nosferatu space # pwd > > /space > > nosferatu space # mount | grep `pwd` > > /dev/hdc1 on /space type ext3 (rw,noatime) > > nosferatu space # ls foo/ > > ls: foo/: No such file or directory > > nosferatu space # cat test.sh > > #!/bin/bash > > > > i=1 > > > > testdir="`pwd`/foo" > > > > (rm -rf "$testdir"; rm -rf "$testdir") &>/dev/null > > mkdir -p "$testdir" > > > > for x in $(cat list) > > do > > temp="$testdir/${x/3pm/tmp}" > > x="$testdir/${x}" > > > > touch "$temp" > > ln "$temp" "$x" > > rm -f "$temp" > > > > # echo "Pass $i" > > > > # i=$((i+1)) > > done > > > > nosferatu space # ./test.sh > > nosferatu space # ls foo/ > > ls: foo/Win32.tmp: No such file or directory > > Fcntl.3pm PerlIO::via.3pm > > Hash::Util.3pm PerlIO::via::QuotedPrint.3pm > > I18N::Collate.3pm Pod::Checker.3pm > > I18N::LangTags.3pm Pod::Find.3pm > > I18N::LangTags::List.3pm Pod::Html.3pm > > I18N::Langinfo.3pm Pod::InputObjects.3pm > > IO.3pm Pod::LaTeX.3pm > > IO::Dir.3pm Pod::Man.3pm > > IO::File.3pm Pod::ParseLink.3pm > > IO::Handle.3pm Pod::ParseUtils.3pm > > IO::Pipe.3pm Pod::Parser.3pm > > IO::Poll.3pm Pod::Plainer.3pm > > IO::Seekable.3pm Pod::Select.3pm > > IO::Select.3pm Pod::Text.3pm > > IO::Socket.3pm Pod::Text::Color.3pm > > IO::Socket::INET.3pm Pod::Text::Overstrike.3pm > > IO::Socket::UNIX.3pm Pod::Text::Termcap.3pm > > IPC::Msg.3pm Pod::Usage.3pm > > IPC::Open2.3pm SDBM_File.3pm > > IPC::Open3.3pm Safe.3pm > > IPC::Semaphore.3pm Scalar::Util.3pm > > IPC::SysV.3pm Search::Dict.3pm > > List::Util.3pm SelectSaver.3pm > > Locale::Constants.3pm SelfLoader.3pm > > Locale::Country.3pm Shell.3pm > > Locale::Currency.3pm Socket.3pm > > Locale::Language.3pm Storable.3pm > > Locale::Maketext.3pm Switch.3pm > > Locale::Maketext::TPJ13.3pm Symbol.3pm > > Locale::Script.3pm Sys::Hostname.3pm > > MIME::Base64.3pm Sys::Syslog.3pm > > MIME::QuotedPrint.3pm Term::ANSIColor.3pm > > Math::BigFloat.3pm Term::Cap.3pm > > Math::BigFloat::Trace.3pm Term::Complete.3pm > > Math::BigInt.3pm Term::ReadLine.3pm > > Math::BigInt::Calc.3pm Test.3pm > > Math::BigInt::Trace.3pm Test::Builder.3pm > > Math::BigRat.3pm Test::Harness.3pm > > Math::Complex.3pm Test::Harness::Assert.3pm > > Math::Trig.3pm Test::Harness::Iterator.3pm > > Memoize.3pm Test::Harness::Straps.3pm > > Memoize::AnyDBM_File.3pm Test::More.3pm > > Memoize::Expire.3pm Test::Simple.3pm > > Memoize::ExpireFile.3pm Test::Tutorial.3pm > > Memoize::ExpireTest.3pm Text::Abbrev.3pm > > Memoize::NDBM_File.3pm Text::Balanced.3pm > > Memoize::SDBM_File.3pm Text::ParseWords.3pm > > Memoize::Storable.3pm Text::Soundex.3pm > > NDBM_File.3pm Text::Tabs.3pm > > NEXT.3pm Text::Wrap.3pm > > Net::Cmd.3pm Thread.3pm > > Net::Config.3pm Thread::Queue.3pm > > Net::Domain.3pm Thread::Semaphore.3pm > > Net::FTP.3pm Tie::Array.3pm > > Net::FTP::A.3pm Tie::File.3pm > > Net::FTP::E.3pm Tie::Handle.3pm > > Net::FTP::I.3pm Tie::Hash.3pm > > Net::FTP::L.3pm Tie::Memoize.3pm > > Net::FTP::dataconn.3pm Tie::RefHash.3pm > > Net::NNTP.3pm Tie::Scalar.3pm > > Net::Netrc.3pm Tie::SubstrHash.3pm > > Net::POP3.3pm Time::HiRes.3pm > > Net::Ping.3pm Time::Local.3pm > > Net::SMTP.3pm Time::gmtime.3pm > > Net::Time.3pm Time::localtime.3pm > > Net::hostent.3pm Time::tm.3pm > > Net::libnetFAQ.3pm UNIVERSAL.3pm > > Net::netent.3pm Unicode::Collate.3pm > > Net::protoent.3pm Unicode::Normalize.3pm > > Net::servent.3pm Unicode::UCD.3pm > > O.3pm User::grent.3pm > > Opcode.3pm User::pwent.3pm > > POSIX.3pm Win32.3pm > > PerlIO.3pm XS::APItest.3pm > > PerlIO::encoding.3pm XS::Typemap.3pm > > PerlIO::scalar.3pm XSLoader.3pm > > nosferatu space # > > ---------------------------------- > > > > > > Thanks, > > > > -- > > > > Martin Schlemmer > > > > > > > > > kjournald starting. Commit interval 5 seconds > > EXT3 FS on hdc1, internal journal > > EXT3-fs: mounted filesystem with ordered data mode. > > EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (2961487), 0 > > EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (2944744), 0 > > Slab corruption: start=d230e184, expend=d230e36f, problemat=d230e1f8 > > Last user: [<c019ae7f>](ext3_destroy_inode+0x1d/0x21) > > Data: ********************************************************************************************************************08 89 A1 C6 ***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************A5 > > Next: 71 F0 2C .7F AE 19 C0 71 F0 2C .******************** > > slab error in check_poison_obj(): cache `ext3_inode_cache': object was modified after freeing > > Call Trace: > > [<c0141634>] check_poison_obj+0x161/0x1a1 > > [<c0143128>] kmem_cache_alloc+0x11f/0x159 > > [<c019ae46>] ext3_alloc_inode+0x18/0x34 > > [<c019ae46>] ext3_alloc_inode+0x18/0x34 > > [<c0171f74>] alloc_inode+0x1c/0x14d > > [<c01729db>] new_inode+0x1a/0xa2 > > [<c0192207>] ext3_new_inode+0x41/0x6d8 > > [<c014313c>] kmem_cache_alloc+0x133/0x159 > > [<c01a0244>] new_handle+0x1c/0x4e > > [<c0199154>] ext3_create+0x55/0xb0 > > [<c0167be9>] vfs_create+0x79/0xce > > [<c0168179>] open_namei+0x39a/0x3ee > > [<c0157976>] filp_open+0x3e/0x64 > > [<c0157edc>] sys_open+0x5b/0x8b > > [<c010aaa5>] sysenter_past_esp+0x52/0x71 > > > > EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (2944744), 0 > > Slab corruption: start=e2b7c27c, expend=e2b7c467, problemat=e2b7c2f0 > > Last user: [<c019ae7f>](ext3_destroy_inode+0x1d/0x21) > > Data: ********************************************************************************************************************08 89 A1 C6 ***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************A5 > > Next: 71 F0 2C .7F AE 19 C0 71 F0 2C .******************** > > slab error in check_poison_obj(): cache `ext3_inode_cache': object was modified after freeing > > Call Trace: > > [<c0141634>] check_poison_obj+0x161/0x1a1 > > [<c0143128>] kmem_cache_alloc+0x11f/0x159 > > [<c019ae46>] ext3_alloc_inode+0x18/0x34 > > [<c019ae46>] ext3_alloc_inode+0x18/0x34 > > [<c0171f74>] alloc_inode+0x1c/0x14d > > [<c01729db>] new_inode+0x1a/0xa2 > > [<c0192207>] ext3_new_inode+0x41/0x6d8 > > [<c014313c>] kmem_cache_alloc+0x133/0x159 > > [<c01a0244>] new_handle+0x1c/0x4e > > [<c0199154>] ext3_create+0x55/0xb0 > > [<c0167be9>] vfs_create+0x79/0xce > > [<c0168179>] open_namei+0x39a/0x3ee > > [<c0157976>] filp_open+0x3e/0x64 > > [<c0157edc>] sys_open+0x5b/0x8b > > [<c010aaa5>] sysenter_past_esp+0x52/0x71 > > > > EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (2944744), 0 > > Slab corruption: start=e2b7c27c, expend=e2b7c467, problemat=e2b7c2f0 > > Last user: [<c019ae7f>](ext3_destroy_inode+0x1d/0x21) > > Data: ********************************************************************************************************************44 BD 8F F6 ***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************A5 > > Next: 71 F0 2C .7F AE 19 C0 71 F0 2C .******************** > > slab error in check_poison_obj(): cache `ext3_inode_cache': object was modified after freeing > > Call Trace: > > [<c0141634>] check_poison_obj+0x161/0x1a1 > > [<c0143128>] kmem_cache_alloc+0x11f/0x159 > > [<c019ae46>] ext3_alloc_inode+0x18/0x34 > > [<c019ae46>] ext3_alloc_inode+0x18/0x34 > > [<c0171f74>] alloc_inode+0x1c/0x14d > > [<c01729db>] new_inode+0x1a/0xa2 > > [<c0192207>] ext3_new_inode+0x41/0x6d8 > > [<c014313c>] kmem_cache_alloc+0x133/0x159 > > [<c01a0244>] new_handle+0x1c/0x4e > > [<c0199154>] ext3_create+0x55/0xb0 > > [<c0167be9>] vfs_create+0x79/0xce > > [<c0168179>] open_namei+0x39a/0x3ee > > [<c0157976>] filp_open+0x3e/0x64 > > [<c0157edc>] sys_open+0x5b/0x8b > > [<c010aaa5>] sysenter_past_esp+0x52/0x71 > > > > EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (4759152), 0 > > Slab corruption: start=cb147184, expend=cb14736f, problemat=cb1471f8 > > Last user: [<c019ae7f>](ext3_destroy_inode+0x1d/0x21) > > Data: ********************************************************************************************************************08 89 A1 C6 ***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************A5 > > Next: 71 F0 2C .7F AE 19 C0 71 F0 2C .******************** > > slab error in check_poison_obj(): cache `ext3_inode_cache': object was modified after freeing > > Call Trace: > > [<c0141634>] check_poison_obj+0x161/0x1a1 > > [<c0143128>] kmem_cache_alloc+0x11f/0x159 > > [<c019ae46>] ext3_alloc_inode+0x18/0x34 > > [<c019ae46>] ext3_alloc_inode+0x18/0x34 > > [<c0171f74>] alloc_inode+0x1c/0x14d > > [<c01729db>] new_inode+0x1a/0xa2 > > [<c0192207>] ext3_new_inode+0x41/0x6d8 > > [<c014313c>] kmem_cache_alloc+0x133/0x159 > > [<c01a0244>] new_handle+0x1c/0x4e > > [<c0199154>] ext3_create+0x55/0xb0 > > [<c0167be9>] vfs_create+0x79/0xce > > [<c0168179>] open_namei+0x39a/0x3ee > > [<c0157976>] filp_open+0x3e/0x64 > > [<c0157edc>] sys_open+0x5b/0x8b > > [<c010aaa5>] sysenter_past_esp+0x52/0x71 > > > > EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (4759186), 0 > > Slab corruption: start=cb147184, expend=cb14736f, problemat=cb1471f8 > > Last user: [<c019ae7f>](ext3_destroy_inode+0x1d/0x21) > > Data: ********************************************************************************************************************F4 F1 15 F6 ***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************A5 > > Next: 71 F0 2C .7F AE 19 C0 71 F0 2C .******************** > > slab error in check_poison_obj(): cache `ext3_inode_cache': object was modified after freeing > > Call Trace: > > [<c0141634>] check_poison_obj+0x161/0x1a1 > > [<c0143128>] kmem_cache_alloc+0x11f/0x159 > > [<c019ae46>] ext3_alloc_inode+0x18/0x34 > > [<c019ae46>] ext3_alloc_inode+0x18/0x34 > > [<c0171f74>] alloc_inode+0x1c/0x14d > > [<c01729db>] new_inode+0x1a/0xa2 > > [<c0192207>] ext3_new_inode+0x41/0x6d8 > > [<c014313c>] kmem_cache_alloc+0x133/0x159 > > [<c01a0244>] new_handle+0x1c/0x4e > > [<c01992e4>] ext3_mkdir+0x74/0x2b6 > > [<c01665dc>] permission+0x2f/0x4b > > [<c0168555>] vfs_mkdir+0x6d/0xbf > > [<c016865e>] sys_mkdir+0xb7/0xf7 > > [<c010aaa5>] sysenter_past_esp+0x52/0x71 > > > > EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (4759122), 0 > > EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (4759194), 0 > > EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (4710637), 0 > > EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (4710637), 0 > > EXT3-fs warning (device hdc1): ext3_unlink: Deleting nonexistent file (4710637), 0 > > > > > > Fcntl.3pm > > Hash::Util.3pm > > I18N::Collate.3pm > > I18N::LangTags.3pm > > I18N::LangTags::List.3pm > > I18N::Langinfo.3pm > > IO.3pm > > IO::Dir.3pm > > IO::File.3pm > > IO::Handle.3pm > > IO::Pipe.3pm > > IO::Poll.3pm > > IO::Seekable.3pm > > IO::Select.3pm > > IO::Socket.3pm > > IO::Socket::INET.3pm > > IO::Socket::UNIX.3pm > > IPC::Msg.3pm > > IPC::Open2.3pm > > IPC::Open3.3pm > > IPC::Semaphore.3pm > > IPC::SysV.3pm > > List::Util.3pm > > Locale::Constants.3pm > > Locale::Country.3pm > > Locale::Currency.3pm > > Locale::Language.3pm > > Locale::Maketext.3pm > > Locale::Maketext::TPJ13.3pm > > Locale::Script.3pm > > MIME::Base64.3pm > > MIME::QuotedPrint.3pm > > Math::BigFloat.3pm > > Math::BigFloat::Trace.3pm > > Math::BigInt.3pm > > Math::BigInt::Calc.3pm > > Math::BigInt::Trace.3pm > > Math::BigRat.3pm > > Math::Complex.3pm > > Math::Trig.3pm > > Memoize.3pm > > Memoize::AnyDBM_File.3pm > > Memoize::Expire.3pm > > Memoize::ExpireFile.3pm > > Memoize::ExpireTest.3pm > > Memoize::NDBM_File.3pm > > Memoize::SDBM_File.3pm > > Memoize::Storable.3pm > > NDBM_File.3pm > > NEXT.3pm > > Net::Cmd.3pm > > Net::Config.3pm > > Net::Domain.3pm > > Net::FTP.3pm > > Net::FTP::A.3pm > > Net::FTP::E.3pm > > Net::FTP::I.3pm > > Net::FTP::L.3pm > > Net::FTP::dataconn.3pm > > Net::NNTP.3pm > > Net::Netrc.3pm > > Net::POP3.3pm > > Net::Ping.3pm > > Net::SMTP.3pm > > Net::Time.3pm > > Net::hostent.3pm > > Net::libnetFAQ.3pm > > Net::netent.3pm > > Net::protoent.3pm > > Net::servent.3pm > > O.3pm > > Opcode.3pm > > POSIX.3pm > > PerlIO.3pm > > PerlIO::encoding.3pm > > PerlIO::scalar.3pm > > PerlIO::via.3pm > > PerlIO::via::QuotedPrint.3pm > > Pod::Checker.3pm > > Pod::Find.3pm > > Pod::Html.3pm > > Pod::InputObjects.3pm > > Pod::LaTeX.3pm > > Pod::Man.3pm > > Pod::ParseLink.3pm > > Pod::ParseUtils.3pm > > Pod::Parser.3pm > > Pod::Plainer.3pm > > Pod::Select.3pm > > Pod::Text.3pm > > Pod::Text::Color.3pm > > Pod::Text::Overstrike.3pm > > Pod::Text::Termcap.3pm > > Pod::Usage.3pm > > SDBM_File.3pm > > Safe.3pm > > Scalar::Util.3pm > > Search::Dict.3pm > > SelectSaver.3pm > > SelfLoader.3pm > > Shell.3pm > > Socket.3pm > > Storable.3pm > > Switch.3pm > > Symbol.3pm > > Sys::Hostname.3pm > > Sys::Syslog.3pm > > Term::ANSIColor.3pm > > Term::Cap.3pm > > Term::Complete.3pm > > Term::ReadLine.3pm > > Test.3pm > > Test::Builder.3pm > > Test::Harness.3pm > > Test::Harness::Assert.3pm > > Test::Harness::Iterator.3pm > > Test::Harness::Straps.3pm > > Test::More.3pm > > Test::Simple.3pm > > Test::Tutorial.3pm > > Text::Abbrev.3pm > > Text::Balanced.3pm > > Text::ParseWords.3pm > > Text::Soundex.3pm > > Text::Tabs.3pm > > Text::Wrap.3pm > > Thread.3pm > > Thread::Queue.3pm > > Thread::Semaphore.3pm > > Tie::Array.3pm > > Tie::File.3pm > > Tie::Handle.3pm > > Tie::Hash.3pm > > Tie::Memoize.3pm > > Tie::RefHash.3pm > > Tie::Scalar.3pm > > Tie::SubstrHash.3pm > > Time::HiRes.3pm > > Time::Local.3pm > > Time::gmtime.3pm > > Time::localtime.3pm > > Time::tm.3pm > > UNIVERSAL.3pm > > Unicode::Collate.3pm > > Unicode::Normalize.3pm > > Unicode::UCD.3pm > > User::grent.3pm > > User::pwent.3pm > > Win32.3pm > > XS::APItest.3pm > > XS::Typemap.3pm > > XSLoader.3pm > > > > - > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ -- Martin Schlemmer ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] fix for htree corruption. Was: [2.6] Perl weirdness with ext3 and HTREE 2003-08-19 10:40 ` [PATCH] fix for htree corruption. Was: " chrisl 2003-08-19 10:55 ` Andrew Morton 2003-08-19 14:17 ` Martin Schlemmer @ 2003-08-21 19:46 ` Martin Schlemmer 2 siblings, 0 replies; 7+ messages in thread From: Martin Schlemmer @ 2003-08-21 19:46 UTC (permalink / raw) To: chrisl; +Cc: KML, akpm, adilger, ext3-users, x86-kernel, Ext2 Devel [-- Attachment #1: Type: text/plain, Size: 665 bytes --] On Tue, 2003-08-19 at 12:40, chrisl@vmware.com wrote: Hi > > The first patch should fix it. The bug is trigger by creating the index. > Coping out the index we assume the dirents start with the first entry > after "." "..". > > It can make the first previous deleted entry reappear. > In the past we set inode to zero for empty entry so this is not > a problem. That is not true any more. > > Andrew, I assume touch inode->i_ctime after > ext3_mark_inode_dirty is a bug? The second patch is for that. > > I can confirm that this works as expected, many thanks! Sorry for the long delay ... Regards, -- Martin Schlemmer [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2003-08-21 19:46 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2003-08-06 20:22 [2.6] Perl weirdness with ext3 and HTREE Christopher Li 2003-08-06 22:28 ` Martin Schlemmer 2003-08-19 10:40 ` [PATCH] fix for htree corruption. Was: " chrisl 2003-08-19 10:55 ` Andrew Morton 2003-08-19 18:23 ` chrisl 2003-08-19 14:17 ` Martin Schlemmer 2003-08-21 19:46 ` Martin Schlemmer
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox