From: Anton Eliasson <devel-17Olwe7vw2dLC78zk6coLg@public.gmane.org>
To: linux-nilfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Fwd: Re: Broken nilfs2 filesystem
Date: Fri, 26 Jul 2013 18:52:21 +0200 [thread overview]
Message-ID: <51F2A945.6050909@antoneliasson.se> (raw)
In-Reply-To: <51F2A8A4.4020400-17Olwe7vw2dLC78zk6coLg@public.gmane.org>
I forgot to send this to the list.
-------- Ursprungligt meddelande --------
Ämne: Re: Broken nilfs2 filesystem
Datum: Fri, 26 Jul 2013 18:49:40 +0200
Från: Anton Eliasson <devel-17Olwe7vw2dLC78zk6coLg@public.gmane.org>
Till: Vyacheslav Dubeyko <slava-2lV3ebY47BVBDgjK7y7TUQ@public.gmane.org>
Vyacheslav Dubeyko skrev 2013-07-26 14:37:
> Hi Anton,
>
> Do you ready to try to obtain debug output? I am really waiting your
> readiness because your opportunity to reproduce the issue is very
> important.
>
> I think that it needs to enable such configuration options:
> 1. CONFIG_NILFS2_DEBUG_SHOW_ERRORS
> 2. CONFIG_NILFS2_DEBUG_BASE_OPERATIONS
> 3. CONFIG_NILFS2_DEBUG_MDT_FILES
> 4. CONFIG_NILFS2_DEBUG_SEGMENTS_SUBSYSTEM
> 5. CONFIG_NILFS2_DEBUG_BLOCK_MAPPING
> 6. CONFIG_NILFS2_DEBUG_DUMP_STACK
>
> Thanks,
> Vyacheslav Dubeyko.
Hi,
Thanks for the reminder! I tried it out a few weeks ago. My plan then
was to restore the old root system (running Linux 3.9) and /home to the
mechanical hard drive, boot them up and use that system to build the
newer kernel with your kernel. This would make minimal changes to the
system I had experienced the bugs with, I thought.
Building the kernel took me some time but I eventually succeded. I
forgot those configuration options though so I suppose that build did
nothing out of the ordinary, even though it had the patches. I got it to
boot but then ran in to the issue of incompatible video drivers. I've
been down that road before and I did not feel like going back.
My next plan was to wait until 3.10 got released into the core
repository which happened yesterday or so. I would then use my fully
updated system (currently running the 3.10 kernel on an ext4 root
filesystem) to build a kernel with the debug patches. It would be a
slightly different system with many updated packages, but at least the
root filesystem will be a healthy ext4. So that's what I did today.
Buildlogs excerpts are at the bottom of this message.
I got the kernel to boot and X to start. But as soon as anything tried
to read from /home (even just logging into a virtual terminal as a
regular user), that terminal froze. Logging in as root to a different VT
showed that syslog-ng and nilfs_cleanerd took 100% CPU each. After a
while the entire system froze. Pressing Alt+SysRq+R caused the kernel to
spew out an endless stream of call traces to the terminal, leaving no
other way to reboot than a hard reset. After a reboot I found that the
running nilfs_cleanerd does not respond to either a SIGTERM or a SIGKILL.
Changing the mount options of /home from rw,noatime,discard to
ro,norecovery,noatime,discard seems to work. No crashes during login to
a VT. Read-only is no fun though.
Next attempt is rw,nogc,noatime,discard. It seems to work also, though
there are a lot of call traces in dmesg. After just a few reboots and a
few minutes of uptime, /var/log/kernel.log, messages.log and
everything.log have grown to 3.5 GB each. My / is only 30 GB so I can't
sustain this for very long.
I have aborted the experiments for today. kernel.log has 35 million
lines and compresses to 220 MB. I've uploaded it here
(http://antoneliasson.se/publicdump/kernel.log.20130726.gz). What should
I do next?
Build logs
=======
* Download kernel package build scripts and patches (from the Arch Build
System). Unpack and apply downstream patches:
$ makepkg -o
==> Skapar paket: linux 3.10.2-1 (fre jul 26 17:08:16 CEST 2013)
==> Retrieving sources...
-> Hittade linux-3.10.tar.xz
-> Laddar ner patch-3.10.2.xz...
% Total % Received % Xferd Average Speed Time Time
Time Current
Dload Upload Total Spent
Left Speed
100 178 100 178 0 0 188 0 --:--:-- --:--:--
--:--:-- 188
100 27876 100 27876 0 0 13761 0 0:00:02 0:00:02
--:--:-- 37978
-> Hittade config
-> Hittade config.x86_64
-> Hittade linux.preset
-> Hittade change-default-console-loglevel.patch
==> Validerar källfiler med md5sums...
linux-3.10.tar.xz ... Godkänd
patch-3.10.2.xz ... Godkänd
config ... Godkänd
config.x86_64 ... Godkänd
linux.preset ... Godkänd
change-default-console-loglevel.patch ... Godkänd
==> Extracting sources...
-> Extraherar linux-3.10.tar.xz med bsdtar
-> Extraherar patch-3.10.2.xz med xz
==> Startar prepare()...
patching file Documentation/parisc/registers
patching file MAINTAINERS
patching file Makefile
patching file arch/arm/boot/dts/imx23.dtsi
patching file arch/arm/boot/dts/imx28.dtsi
patching file arch/arm/boot/dts/imx6dl.dtsi
patching file arch/arm/boot/dts/imx6q.dtsi
patching file arch/arm/include/asm/mmu_context.h
patching file arch/arm/kernel/perf_event.c
[...]
patching file mm/page_alloc.c
patching file mm/slab.c
patching file net/ceph/auth_none.c
patching file kernel/printk.c
Hunk #1 succeeded at 56 with fuzz 2 (offset -2 lines).
==> Källor är redo.
$ ls -l
-rw-r--r-- 1 anton anton 2,7K 26 jul 00.06
alsa-firmware-loading-3.8.8.patch
-rw-r--r-- 1 anton anton 605 26 jul 00.06
change-default-console-loglevel.patch
-rw-r--r-- 1 anton anton 142K 26 jul 17.13 config
-rw-r--r-- 1 anton anton 142K 26 jul 00.06 config~
-rw-r--r-- 1 anton anton 138K 26 jul 17.13 config.x86_64
-rw-r--r-- 1 anton anton 138K 26 jul 00.06 config.x86_64~
-rw-r--r-- 1 anton anton 926 26 jul 00.06 linux.install
-rw-r--r-- 1 anton anton 376 26 jul 00.06 linux.preset
drwxr-xr-x 2 anton anton 4,0K 26 jul 17.06
nilfs2-debug-output-patch-set-25-06-2013
-rw-r--r-- 1 anton anton 13K 26 jul 00.06 PKGBUILD
drwxr-xr-x 3 anton anton 4,0K 26 jul 17.08 src
* Apply nilfs2 debug patches:
$ cd src/linux-3.10/
$ for file in
../../nilfs2-debug-output-patch-set-25-06-2013/*.patch; do patch -p1 <
"$file"; done
patching file fs/nilfs2/Kconfig
patching file fs/nilfs2/debug.h
patching file fs/nilfs2/Kconfig
patching file fs/nilfs2/debug.h
patching file fs/nilfs2/dir.c
patching file fs/nilfs2/file.c
patching file fs/nilfs2/inode.c
patching file fs/nilfs2/ioctl.c
patching file fs/nilfs2/namei.c
patching file fs/nilfs2/nilfs.h
[...]
patching file fs/nilfs2/segbuf.c
patching file fs/nilfs2/segment.c
patching file fs/nilfs2/sufile.c
patching file fs/nilfs2/super.c
patching file fs/nilfs2/the_nilfs.c
patching file fs/nilfs2/Kconfig
patching file fs/nilfs2/debug.h
* Append the following lines to config (just in case) and config.x86_64
(which I assume I will use):
CONFIG_NILFS2_DEBUG_SHOW_ERRORS=y
CONFIG_NILFS2_DEBUG_BASE_OPERATIONS=y
CONFIG_NILFS2_DEBUG_MDT_FILES=y
CONFIG_NILFS2_DEBUG_SEGMENTS_SUBSYSTEM=y
CONFIG_NILFS2_DEBUG_BLOCK_MAPPING=y
CONFIG_NILFS2_DEBUG_DUMP_STACK=y
* Build the kernel. There were some interactive configuration options
concerning nilfs2 that I responded yes to:
$ makepkg -e
==> Skapar paket: linux 3.10.2-1 (fre jul 26 17:16:41 CEST 2013)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> VARNING: Using existing src/ tree
==> Startar build()...
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
SHIPPED scripts/kconfig/zconf.tab.c
SHIPPED scripts/kconfig/zconf.lex.c
SHIPPED scripts/kconfig/zconf.hash.c
HOSTCC scripts/kconfig/zconf.tab.o
HOSTLD scripts/kconfig/conf
scripts/kconfig/conf --silentoldconfig Kconfig
*
* Restart config...
*
*
* File systems
*
[...]
NILFS2 file system support (NILFS2_FS) [M/n/y/?] m
NILFS2 debugging (NILFS2_DEBUG) [N/y/?] (NEW) y
Use pr_debug() instead of printk() (NILFS2_USE_PR_DEBUG)
[N/y/?] (NEW) y
Show internal errors (NILFS2_DEBUG_SHOW_ERRORS) [N/y/?] (NEW) y
Enable dump stack output (NILFS2_DEBUG_DUMP_STACK) [N/y/?] (NEW) y
[...]
#
# configuration written to .config
#
SYSHDR arch/x86/syscalls/../include/generated/uapi/asm/unistd_32.h
SYSHDR arch/x86/syscalls/../include/generated/uapi/asm/unistd_64.h
SYSHDR arch/x86/syscalls/../include/generated/uapi/asm/unistd_x32.h
SYSTBL arch/x86/syscalls/../include/generated/asm/syscalls_32.h
SYSHDR arch/x86/syscalls/../include/generated/asm/unistd_32_ia32.h
SYSHDR arch/x86/syscalls/../include/generated/asm/unistd_64_x32.h
SYSTBL arch/x86/syscalls/../include/generated/asm/syscalls_64.h
WRAP arch/x86/include/generated/asm/clkdev.h
CHK include/generated/uapi/linux/version.h
UPD include/generated/uapi/linux/version.h
CHK include/generated/utsrelease.h
UPD include/generated/utsrelease.h
HOSTCC arch/x86/tools/relocs_32.o
[...]
INSTALL
/home/anton/build/linux/pkg/linux/lib/firmware/edgeport/down3.bin
INSTALL
/home/anton/build/linux/pkg/linux/lib/firmware/keyspan_pda/keyspan_pda.fw
INSTALL
/home/anton/build/linux/pkg/linux/lib/firmware/keyspan_pda/xircom_pgs.fw
INSTALL
/home/anton/build/linux/pkg/linux/lib/firmware/cpia2/stv0672_vp4.bin
INSTALL /home/anton/build/linux/pkg/linux/lib/firmware/yam/1200.bin
INSTALL /home/anton/build/linux/pkg/linux/lib/firmware/yam/9600.bin
DEPMOD 3.10.2-1-ARCH
==> Städar upp efter installationen...
-> Rensar oönskade filer...
-> Komprimerar man och info sidor...
==> Creating package "linux"...
-> Skapar .PKGINFO fil...
-> Lägger till install fil...
-> Generating .MTREE file...
-> Komprimerar paket...
==> Startar package_linux-headers()...
==> Städar upp efter installationen...
-> Rensar oönskade filer...
-> Komprimerar man och info sidor...
==> Creating package "linux-headers"...
-> Skapar .PKGINFO fil...
-> Generating .MTREE file...
-> Komprimerar paket...
==> Startar package_linux-docs()...
==> Städar upp efter installationen...
-> Rensar oönskade filer...
-> Komprimerar man och info sidor...
==> Creating package "linux-docs"...
-> Skapar .PKGINFO fil...
-> Generating .MTREE file...
-> Komprimerar paket...
==> Leaving fakeroot environment.
==> Kompilering klar: linux 3.10.2-1 (fre jul 26 17:46:42 CEST 2013)
* Install over the stock 3.10 kernel, point /home to the old nilfs2
filesystem in /etc/fstab and reboot.
--
Best Regards,
Anton Eliasson
--
To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next parent reply other threads:[~2013-07-26 16:52 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <51F2A8A4.4020400@antoneliasson.se>
[not found] ` <51F2A8A4.4020400-17Olwe7vw2dLC78zk6coLg@public.gmane.org>
2013-07-26 16:52 ` Anton Eliasson [this message]
[not found] ` <51F2A945.6050909-17Olwe7vw2dLC78zk6coLg@public.gmane.org>
2013-07-27 16:23 ` Broken nilfs2 filesystem Vyacheslav Dubeyko
[not found] ` <9016EBD5-1E01-476F-B1B9-66AE593F4728-yeENwD64cLxBDgjK7y7TUQ@public.gmane.org>
2013-07-27 22:32 ` Anton Eliasson
2013-08-15 10:40 ` Nilfs2 crash debugging (was: Broken nilfs2 filesystem) Anton Eliasson
[not found] ` <520CB032.2000602-17Olwe7vw2dLC78zk6coLg@public.gmane.org>
2013-08-16 7:11 ` Vyacheslav Dubeyko
2013-08-19 19:55 ` Vyacheslav Dubeyko
[not found] ` <FEA41B6A-7D82-4563-AAF5-D5AFA3734D79-yeENwD64cLxBDgjK7y7TUQ@public.gmane.org>
2013-08-25 15:02 ` Nilfs2 crash debugging Anton Eliasson
[not found] ` <521A1C88.9080100-17Olwe7vw2dLC78zk6coLg@public.gmane.org>
2013-08-26 9:56 ` Vyacheslav Dubeyko
2013-08-26 18:37 ` Anton Eliasson
[not found] ` <521BA084.80901-17Olwe7vw2dLC78zk6coLg@public.gmane.org>
2013-08-30 5:58 ` Vyacheslav Dubeyko
2013-09-04 19:39 ` Anton Eliasson
[not found] ` <52278C63.6090303-17Olwe7vw2dLC78zk6coLg@public.gmane.org>
2013-09-04 20:00 ` Vyacheslav Dubeyko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=51F2A945.6050909@antoneliasson.se \
--to=devel-17olwe7vw2dlc78zk6colg@public.gmane.org \
--cc=linux-nilfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.