From: Brian Foster <bfoster@redhat.com>
To: Michael Semon <mlsemon35@gmail.com>
Cc: xfs@oss.sgi.com
Subject: Re: [PATCH 00/10] xfs: introduce the free inode btree
Date: Fri, 18 Oct 2013 13:03:06 -0400 [thread overview]
Message-ID: <526169CA.2020404@redhat.com> (raw)
In-Reply-To: <526168BA.2000002@redhat.com>
[ cc list ]
On 10/18/2013 12:58 PM, Brian Foster wrote:
> On 10/18/2013 12:35 PM, Michael Semon wrote:
>> On 10/9/2013 2:06 PM, Brian Foster wrote:
>>> Hi all,
>>>
>>> Here is the first release of free inode btree support for the kernel. It
>>> is based on the RFC previously made available here:
>>>
>>> http://oss.sgi.com/archives/xfs/2013-09/msg00076.html
>>>
>>> The free inode btree adds a new inode btree to XFS with the intent to
>>> track only inode chunks with at least one free inode. Patches 1-3 add
>>> the necessary support for the new XFS_BTNUM_FINOBT type and introduce a
>>> read-only v5 superblock flag. Patch 4 updates the transaction
>>> reservations for inode allocation operations to account for the finobt.
>>> Patches 5-9 add support to manage the finobt on inode chunk allocation,
>>> inode allocation, inode free (and chunk deletion) and growfs. The 10th
>>> and final patch adds the feature bit to the associated mask. Thoughts,
>>> reviews and flames appreciated.
>>>
>>> Brian
>>
>> OK, I'm giving this a go on x86, and xfstests generic/* seems to be OK.
>> lockdep is happy so far. The merge was straightforward but not
>> automatic by any means. However, there was a crash on xfs/030, and
>> I'm sending a simple crash log because I'm on vacation, and my test
>> setup is not up to snuff (no serial, one drive dying, bad Internet
>> connection, etc.).
>>
>
> Hi Michael,
>
> Interesting notion of vacation you have there. ;)
>
> Yes, I'm aware of this issue. This is due to the current lack of
> xfs_repair support for finobt. xfs_repair scans the existing inode btree
> into memory and actually regenerates and writes out a new inode btree
> afterwards. This doesn't yet happen for the finobt, so xfs_repair
> effectively zeroes out (corrupts) the finobt root/level fields in the
> agi and leads to this explosion. In short, you'll want to run xfstests
> with "-x repair" until that support is added.
>
> Now that I think of it, this should probably manifest as an fs shutdown
> or something more graceful than a panic. I'll look into that. Thanks for
> testing!
>
> Brian
>
>> The merge against xfsprogs went fairly smoothly.
>>
>> Both merges were over the top of some of Dave's recent work, and maybe
>> that's why they weren't automatic.
>>
>> Thanks!
>>
>> Michael
>>
>> [`crash` session follows]
>>
>> Script started on Thu 17 Oct 2013 07:21:41 PM EDT
>> root:/usr/src/dumps# crash vmlinux current-crash
>>
>> crash 7.0.2
>> Copyright (C) 2002-2013 Red Hat, Inc.
>> Copyright (C) 2004, 2005, 2006, 2010 IBM Corporation
>> Copyright (C) 1999-2006 Hewlett-Packard Co
>> Copyright (C) 2005, 2006, 2011, 2012 Fujitsu Limited
>> Copyright (C) 2006, 2007 VA Linux Systems Japan K.K.
>> Copyright (C) 2005, 2011 NEC Corporation
>> Copyright (C) 1999, 2002, 2007 Silicon Graphics, Inc.
>> Copyright (C) 1999, 2000, 2001, 2002 Mission Critical Linux, Inc.
>> This program is free software, covered by the GNU General Public License,
>> and you are welcome to change it and/or distribute copies of it under
>> certain conditions. Enter "help copying" to see the conditions.
>> This program has absolutely no warranty. Enter "help warranty" for
>> details.
>>
>> GNU gdb (GDB) 7.6
>> Copyright (C) 2013 Free Software Foundation, Inc.
>> License GPLv3+: GNU GPL version 3 or later
>> <http://gnu.org/licenses/gpl.html>
>> This is free software: you are free to change and redistribute it.
>> There is NO WARRANTY, to the extent permitted by law. Type "show copying"
>> and "show warranty" for details.
>> This GDB was configured as "i686-pc-linux-gnu"...
>>
>> please wait... (gathering kmem slab cache data)
>> WARNING: cannot determine how modules are linked
>> WARNING: no kernel module access
>>
>> please wait... (gathering task table data)
>> please wait... (determining panic task)
>> KERNEL: vmlinux
>> DUMPFILE: current-crash
>> CPUS: 1
>> DATE: Thu Oct 17 18:53:48 2013
>> UPTIME: 02:40:00
>> LOAD AVERAGE: 1.50, 18.11, 24.54
>> TASKS: 77
>> NODENAME: plbearer
>> RELEASE: 3.12.0-rc4+
>> VERSION: #7 Thu Oct 17 15:30:41 EDT 2013
>> MACHINE: i686 (1794 Mhz)
>> MEMORY: 510.6 MB
>> PANIC: "Oops: 0000 [#1] DEBUG_PAGEALLOC" (check log for details)
>> PID: 9475
>> COMMAND: "dd"
>> TASK: de0b9430 [THREAD_INFO: d350c000]
>> CPU: 0
>> STATE: TASK_RUNNING (PANIC)
>>
>> crash> ps
>> PID PPID CPU TASK ST %MEM VSZ RSS COMM
>> 0 0 0 c174f620 RU 0.0 0 0 [swapper]
>> 1 0 0 c0058000 IN 0.0 2116 76 init
>> 2 0 0 c0059430 IN 0.0 0 0 [kthreadd]
>> 3 2 0 c005a860 IN 0.0 0 0 [ksoftirqd/0]
>> 5 2 0 c005d0c0 IN 0.0 0 0 [kworker/0:0H]
>> 7 2 0 c0118000 IN 0.0 0 0 [watchdog/0]
>> 8 2 0 c0119430 IN 0.0 0 0 [khelper]
>> 9 2 0 c011a860 IN 0.0 0 0 [kdevtmpfs]
>> 10 2 0 c011bc90 IN 0.0 0 0 [writeback]
>> 11 2 0 c011d0c0 IN 0.0 0 0 [bioset]
>> 12 2 0 c011e4f0 IN 0.0 0 0 [kblockd]
>> 13 2 0 c01b8000 IN 0.0 0 0 [ata_sff]
>> 14 2 0 c01b9430 IN 0.0 0 0 [khubd]
>> 17 2 0 c01bd0c0 IN 0.0 0 0 [rt-test-0]
>> 18 2 0 c01be4f0 IN 0.0 0 0 [rt-test-1]
>> 19 2 0 c01bbc90 IN 0.0 0 0 [rt-test-2]
>> 20 2 0 c0298000 IN 0.0 0 0 [rt-test-3]
>> 21 2 0 c0299430 IN 0.0 0 0 [rt-test-4]
>> 22 2 0 c029a860 IN 0.0 0 0 [rt-test-5]
>> 23 2 0 c029bc90 IN 0.0 0 0 [rt-test-6]
>> 24 2 0 c029d0c0 IN 0.0 0 0 [rt-test-7]
>> 25 2 0 c029e4f0 IN 0.0 0 0 [khungtaskd]
>> 26 2 0 c02b8000 IN 0.0 0 0 [kswapd0]
>> 27 2 0 c02b9430 IN 0.0 0 0 [fsnotify_mark]
>> 28 2 0 c02ba860 IN 0.0 0 0 [cifsiod]
>> 29 2 0 c02bbc90 IN 0.0 0 0 [jfsIO]
>> 30 2 0 c02bd0c0 IN 0.0 0 0 [jfsCommit]
>> 31 2 0 c02be4f0 IN 0.0 0 0 [jfsSync]
>> 32 2 0 de998000 IN 0.0 0 0 [xfsalloc]
>> 33 2 0 de999430 IN 0.0 0 0 [xfs_mru_cache]
>> 34 2 0 de99a860 IN 0.0 0 0 [xfslogd]
>> 35 2 0 de99bc90 IN 0.0 0 0 [bioset]
>> 36 2 0 de99d0c0 IN 0.0 0 0 [crypto]
>> 52 2 0 de9d1430 IN 0.0 0 0 [scsi_eh_0]
>> 53 2 0 de9d0000 IN 0.0 0 0 [scsi_eh_1]
>> 56 2 0 de9d50c0 IN 0.0 0 0 [kpsmoused]
>> 60 2 0 dead9430 IN 0.0 0 0 [kworker/0:1H]
>> 61 2 0 deada860 IN 0.0 0 0 [kmemleak]
>> 62 2 0 deadbc90 IN 0.0 0 0 [deferwq]
>> 121 1 0 debd2860 IN 0.0 2168 260 syslogd
>> 126 1 0 debd64f0 IN 0.0 2112 232 klogd
>> 233 1 0 debd3c90 IN 0.1 5024 480 ntpd
>> 238 1 0 debd50c0 IN 0.0 2128 52 acpid
>> 240 1 0 deadd0c0 IN 0.0 2456 4 gpm
>> 242 1 0 debd0000 IN 0.0 2348 172 crond
>> 244 1 0 de550000 IN 0.0 2340 4 atd
>> 250 1 0 de552860 IN 0.0 3828 4 bash
>> 251 1 0 de553c90 IN 0.0 3828 4 bash
>> 252 1 0 de5550c0 IN 0.0 3832 4 bash
>> 253 1 0 de5564f0 IN 0.0 3828 4 bash
>> 254 1 0 deade4f0 IN 0.0 2352 4 agetty
>> 3574 2 0 c235bc90 IN 0.0 0 0 [kworker/u2:1]
>> 8980 2 0 d7e62860 IN 0.0 0 0 [xfs-data/sda4]
>> 8981 2 0 d7e60000 IN 0.0 0 0 [xfs-conv/sda4]
>> 8982 2 0 d7e664f0 IN 0.0 0 0 [xfs-cil/sda4]
>> 8983 2 0 d7e61430 IN 0.0 0 0 [xfsaild/sda4]
>> 9003 26905 0 d7cae4f0 IN 0.3 3512 1744 030
>> 9223 9003 0 d7e63c90 IN 0.2 3532 1256 030
>> 9224 9003 0 d7e650c0 IN 0.1 2224 596 sed
>> 9465 2 0 d08250c0 IN 0.0 0 0 [xfs-data/sda5]
>> 9466 2 0 d0822860 IN 0.0 0 0 [xfs-conv/sda5]
>> 9467 2 0 d08264f0 IN 0.0 0 0 [xfs-cil/sda5]
>> 9468 2 0 d0823c90 IN 0.0 0 0 [xfsaild/sda5]
>> 9469 9223 0 d7cad0c0 IN 0.2 3540 1176 030
>> 9470 9223 0 d7cabc90 IN 0.2 3532 1060 030
>> 9471 9470 0 d7caa860 IN 0.1 2184 456 fgrep
>>> 9475 9469 0 de0b9430 RU 0.1 2008 384 dd
>> 11362 2 0 de2b0000 IN 0.0 0 0 [kworker/0:2]
>> 11364 2 0 de0bd0c0 IN 0.0 0 0 [kworker/0:3]
>> 16034 2 0 d0821430 IN 0.0 0 0 [kworker/0:8]
>> 16748 2 0 d7ca9430 IN 0.0 0 0 [kworker/0:14]
>> 17966 2 0 c235d0c0 IN 0.0 0 0 [kworker/u2:2]
>> 20267 251 0 de2b64f0 IN 0.1 2684 444 watch
>> 26881 1 0 de0be4f0 IN 0.0 3824 4 bash
>> 26905 26881 0 de0bbc90 IN 0.2 4072 1196 check
>> 29183 250 0 de0b8000 IN 0.0 2384 40 cat
>> 29240 2 0 de2b3c90 IN 0.0 0 0 [kworker/u2:0]
>> crash> log -t # trimmed
>> XFS (sda5): Using inode cluster size of 16384 bytes
>> XFS (sda5): Mounting Filesystem
>> XFS (sda5): Ending clean mount
>> BUG: unable to handle kernel NULL pointer dereference at 00000006
>> IP: [<c11e098f>] xfs_btree_lookup+0x1b4/0x42a
>> *pde = 00000000
>> Oops: 0000 [#1] DEBUG_PAGEALLOC
>> CPU: 0 PID: 9475 Comm: dd Not tainted 3.12.0-rc4+ #7
>> Hardware name: Dell Computer Corporation Dimension 2350/07W080, BIOS A01
>> 12/17/2 \b002
>> task: de0b9430 ti: d350c000 task.ti: d350c000
>> EIP: 0060:[<c11e098f>] EFLAGS: 00010286 CPU: 0
>> EIP is at xfs_btree_lookup+0x1b4/0x42a
>> EAX: 00000000 EBX: deb11390 ECX: 00000000 EDX: c0187a80
>> ESI: 00000060 EDI: ffffffff EBP: d350dc10 ESP: d350dbd0
>> DS: 007b ES: 007b FS: 0000 GS: 00e0 SS: 0068
>> CR0: 8005003b CR2: 00000006 CR3: 0ec44000 CR4: 000007d0
>> Stack:
>> 00000060 c41c5a00 c0028200 00000001 d350dc54 ffffffff 00000001 00000000
>> 00000000 00000000 d350dc10 c11fb45e de67ee00 deb11390 00000060 00000000
>> d350dc88 c11f921d 00000000 00000004 00000001 00000246 c120c778 de26d800
>> Call Trace:
>> [<c11fb45e>] ? xfs_inobt_init_cursor+0x2c/0x91
>> [<c11f921d>] xfs_dialloc_ag+0x223/0x7fb
>> [<c120c778>] ? xfs_perag_get+0xb8/0x21c
>> [<c11fa087>] ? xfs_ialloc_read_agi+0x3a/0x95
>> [<c11fa0bf>] ? xfs_ialloc_read_agi+0x72/0x95
>> [<c11facd7>] ? xfs_dialloc+0x229/0x272
>> [<c11faafd>] xfs_dialloc+0x4f/0x272
>> [<c11fc8a9>] xfs_ialloc+0x4d/0x6f1
>> [<c11fb83b>] ? xfs_ilock+0x100/0x1f1
>> [<c11fcfc0>] xfs_dir_ialloc+0x73/0x245
>> [<c11fb83b>] ? xfs_ilock+0x100/0x1f1
>> [<c11fd3bf>] ? xfs_create+0x1b1/0x73e
>> [<c11fd591>] xfs_create+0x383/0x73e
>> [<c11b3091>] xfs_vn_mknod+0xb0/0x175
>> [<c11b3156>] ? xfs_vn_mknod+0x175/0x175
>> [<c11b3170>] xfs_vn_create+0x1a/0x1c
>> [<c10e92f6>] vfs_create+0x69/0xc8
>> [<c10e9a7d>] do_last.isra.48+0x728/0xd54
>> [<c10e7c0f>] ? link_path_walk+0x54/0x6da
>> [<c10ea151>] path_openat+0xa8/0x53c
>> [<c1059fc5>] ? local_clock+0x3d/0x58
>> [<c10ea616>] do_filp_open+0x31/0x72
>> [<c10dd812>] do_sys_open+0x116/0x1de
>> [<c156d9f2>] ? sysenter_exit+0xf/0x1d
>> [<c10dd8fc>] SyS_open+0x22/0x24
>> [<c156d9bf>] sysenter_do_call+0x12/0x36
>> Code: fa 1f 89 d0 2b 45 d8 1b 55 dc 89 d0 c1 e8 1f 74 0c 83 7d cc 01 0f
>> 94 c0 3c \b 01 83 d7 ff 89 7b 4c 85 ff 0f 84 84 01 00 00 8b 45 e0 <0f> b7
>> 40 06 86 e0 0f b7 \b c0 39 f8 0f 8c 70 01 00 00 8b 45 d8 8b
>> EIP: [<c11e098f>] xfs_btree_lookup+0x1b4/0x42a SS:ESP 0068:d350dbd0
>> CR2: 0000000000000006
>> crash> bt
>> PID: 9475 TASK: de0b9430 CPU: 0 COMMAND: "dd"
>> #0 [d350da64] crash_kexec at c1080ca0
>> #1 [d350daa8] __bad_area_nosemaphore at c15614f3
>> #2 [d350dae8] bad_area at c15616df
>> #3 [d350db00] __do_page_fault at c10248bf
>> #4 [d350db88] do_page_fault at c1024b74
>> #5 [d350db90] error_code (via page_fault) at c156d6b8
>> EAX: 00000000 EBX: deb11390 ECX: 00000000 EDX: c0187a80 EBP:
>> d350dc10
>> DS: 007b ESI: 00000060 ES: 007b EDI: ffffffff GS: 00e0
>> CS: 0060 EIP: c11e098f ERR: ffffffff EFLAGS: 00010286
>> #6 [d350dbc4] xfs_btree_lookup at c11e098f
>> #7 [d350dbfc] xfs_inobt_init_cursor at c11fb459
>> #8 [d350dc14] xfs_dialloc_ag at c11f9218
>> #9 [d350dc8c] xfs_dialloc at c11faaf8
>> #10 [d350dccc] xfs_ialloc at c11fc8a4
>> #11 [d350dd0c] xfs_dir_ialloc at c11fcfbb
>> #12 [d350dd5c] xfs_create at c11fd58c
>> #13 [d350ddd8] xfs_vn_mknod at c11b308c
>> #14 [d350de10] xfs_vn_create at c11b316b
>> #15 [d350de1c] vfs_create at c10e92f4
>> #16 [d350de48] do_last at c10e9a78
>> #17 [d350dea4] path_openat at c10ea14c
>> #18 [d350def0] do_filp_open at c10ea611
>> #19 [d350df64] do_sys_open at c10dd80d
>> #20 [d350dfa4] sys_open at c10dd8f7
>> #21 [d350dfb0] ia32_sysenter_target at c156d9b8
>> EAX: 00000005 EBX: bfd0befd ECX: 00008241 EDX: 000001b6
>> DS: 007b ESI: 00000000 ES: 007b EDI: b778a000
>> SS: 007b ESP: bfd0a670 EBP: bfd0a7d8 GS: 0033
>> CS: 0073 EIP: b77b9424 ERR: 00000005 EFLAGS: 00000286
>> crash> quit
>> root:/usr/src/dumps#
>> Script done on Thu 17 Oct 2013 07:23:23 PM EDT
>>
>
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
prev parent reply other threads:[~2013-10-18 17:03 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-09 18:06 [PATCH 00/10] xfs: introduce the free inode btree Brian Foster
2013-10-09 18:06 ` [PATCH 01/10] xfs: refactor xfs_ialloc_btree.c to support multiple inobt numbers Brian Foster
2013-10-09 18:06 ` [PATCH 02/10] xfs: reserve v5 superblock read-only compat. feature bit for finobt Brian Foster
2013-10-09 18:06 ` [PATCH 03/10] xfs: support the XFS_BTNUM_FINOBT free inode btree type Brian Foster
2013-10-09 18:06 ` [PATCH 04/10] xfs: update inode allocation/free transaction reservations for finobt Brian Foster
2013-10-09 18:06 ` [PATCH 05/10] xfs: insert newly allocated inode chunks into the finobt Brian Foster
2013-10-09 18:06 ` [PATCH 06/10] xfs: use and update the finobt on inode allocation Brian Foster
2013-10-09 18:06 ` [PATCH 07/10] xfs: refactor xfs_difree() inobt bits into xfs_difree_inobt() helper Brian Foster
2013-10-09 18:06 ` [PATCH 08/10] xfs: update the finobt on inode free Brian Foster
2013-10-09 18:06 ` [PATCH 09/10] xfs: add finobt support to growfs Brian Foster
2013-10-09 18:06 ` [PATCH 10/10] xfs: enable the finobt feature on v5 superblocks Brian Foster
[not found] ` <5261633E.8050504@gmail.com>
[not found] ` <526168BA.2000002@redhat.com>
2013-10-18 17:03 ` Brian Foster [this message]
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=526169CA.2020404@redhat.com \
--to=bfoster@redhat.com \
--cc=mlsemon35@gmail.com \
--cc=xfs@oss.sgi.com \
/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.