• Prasad Joshi's avatar
    logfs: maintain the ordering of meta-inode destruction · 41b93bc1
    Prasad Joshi authored
    LogFS does not use a specialized area to maintain the inodes. The
    inodes information is kept in a specialized file called inode file.
    Similarly, the segment information is kept in a segment file. Since
    the segment file also has an inode which is kept in the inode file,
    the inode for segment file must be evicted before the inode for inode
    file. The change fixes the following BUG during unmount
    
    Pid: 2057, comm: umount Not tainted 3.5.0-rc6+ #25 Bochs Bochs
    RIP: 0010:[<ffffffffa005c5f2>]  [<ffffffffa005c5f2>] move_page_to_btree+0x32/0x1f0 [logfs]
    Process umount (pid: 2057, threadinfo ...)
    Call Trace:
    [<ffffffff8112adca>] ? find_get_pages+0x2a/0x180
    [<ffffffffa00549f5>] logfs_invalidatepage+0x85/0x90 [logfs]
    [<ffffffff81136c51>] truncate_inode_page+0xb1/0xd0
    [<ffffffff81136dcf>] truncate_inode_pages_range+0x15f/0x490
    [<ffffffff81558549>] ? printk+0x78/0x7a
    [<ffffffff81137185>] truncate_inode_pages+0x15/0x20
    [<ffffffffa005b7fc>] logfs_evict_inode+0x6c/0x190 [logfs]
    [<ffffffff8155c75b>] ? _raw_spin_unlock+0x2b/0x40
    [<ffffffff8119e3d7>] evict+0xa7/0x1b0
    [<ffffffff8119ea6e>] dispose_list+0x3e/0x60
    [<ffffffff8119f1c4>] evict_inodes+0xf4/0x110
    [<ffffffff81185b53>] generic_shutdown_super+0x53/0xf0
    [<ffffffffa005d8f2>] logfs_kill_sb+0x52/0xf0 [logfs]
    [<ffffffff81185ec5>] deactivate_locked_super+0x45/0x80
    [<ffffffff81186a4a>] deactivate_super+0x4a/0x70
    [<ffffffff811a228e>] mntput_no_expire+0xde/0x140
    [<ffffffff811a30ff>] sys_umount+0x6f/0x3a0
    [<ffffffff8155d8e9>] system_call_fastpath+0x16/0x1b
    ---[ end trace 45f7752082cefafd ]---
    Signed-off-by: default avatarPrasad Joshi <prasadjoshi.linux@gmail.com>
    41b93bc1
inode.c 11.2 KB