Hi Andrew and Milo,
If you are still interested in trying PVFS on 2.6.32, could you try the
current CVS version of PVFS along with the attached patch?
This isn't the final fix, but it would be helpful if you could confirm
that it at least works around the problem. This patch keeps the module
from using the kernel's BDI infrastructure, which changed quite a bit in
2.6.32. You shouldn't notice any difference in functionality.
thanks!
-Phil
Andrew Fischer wrote:
Not to jump in unannounced, but I just saw this same behavior on my system.
I built the CVS branch pvfs-2-8-branch against the 2.6.32 kernel
today. Loading the module results in the same warning:
WARNING: at fs/super.c:954 vfs_kern_mount
And trying to access the mount point, either with a file operation or
a simple 'ls' results in:
BUG: unable to handle kernel NULL pointer dereference
This also hangs the machine, requiring a reboot. In my case, I was the
root user at the time.
build a module for the 2.6.32 kernel,
Message: 1
Date: Tue, 5 Jan 2010 17:50:56 -0500
From: Milo <[email protected]>
Subject: [Pvfs2-users] PVFS2 (cvs) on Kernel 2.6.32
To: Sam Lang <[email protected]>
Cc: Jason Sommerfield <[email protected]>, pvfs2-users
<[email protected]>
Message-ID: <[email protected]>
Content-Type: text/plain; charset=us-ascii
Hi, Sam. We've recently tried to use your pvfs-2-8-branch CVS branch to
build a module for the 2.6.32 kernel, following your instructions to
Christian. We're getting the following kernel panics, however. The following
is from Jason Sommerfield's email to me:
When I run the init script that loads the kernel module, the following comes
up on the serial console (but the system does NOT crash):
------------------------------------------------------------------------
cloud3u4 login: [ 788.802335] pvfs2: module version 2.8.1 loaded
[ 788.881766] ------------[ cut here ]------------
[ 788.937066] WARNING: at fs/super.c:954 vfs_kern_mount+0x192/0x1a0()
[ 789.012140] Hardware name: empty
[ 789.050833] pvfs2 set sb->s_maxbytes to negative value
(-9223372036854775808)
[ 789.136334] Modules linked in: pvfs2 w83627hf_wdt nfs lockd nfs_acl
auth_rpcgss sunrpc fuse coretemp w83627ehf w83793 hwmon_vid i5k_amb i2c_i801
i5400_edac tpm_infineon pcspkr serio_raw tpm tpm_bios edac_core mptsas
mptscsih mptbase ehci_hcd scsi_transport_sas uhci_hcd e1000e netxen_nic
floppy [last unloaded: scsi_wait_scan]
[ 789.485468] Pid: 18550, comm: mount Tainted: G W 2.6.32-js6 #11
[ 789.564643] Call Trace:
[ 789.593974] [<ffffffff81125c92>] ? vfs_kern_mount+0x192/0x1a0
[ 789.663872] [<ffffffff8105c4a8>] warn_slowpath_common+0x78/0xd0
[ 789.735845] [<ffffffff8105c584>] warn_slowpath_fmt+0x64/0x70
[ 789.804701] [<ffffffffa020183e>] ? pvfs2_get_sb+0x28e/0x320 [pvfs2]
[ 789.880845] [<ffffffff8111d48b>] ? __alloc_percpu+0xb/0x10
[ 789.947612] [<ffffffff81213211>] ? security_sb_kern_mount+0x11/0x20
[ 790.023747] [<ffffffff81125c92>] vfs_kern_mount+0x192/0x1a0
[ 790.091570] [<ffffffff81125d0e>] do_kern_mount+0x4e/0x110
[ 790.157295] [<ffffffff81140380>] do_mount+0x290/0x910
[ 790.218870] [<ffffffff810f8d63>] ? strndup_user+0x83/0xc0
[ 790.284601] [<ffffffff81140ab3>] sys_mount+0xb3/0xe0
[ 790.345138] [<ffffffff81448959>] ? lockdep_sys_exit_thunk+0x35/0x67
[ 790.421274] [<ffffffff81011f82>] system_call_fastpath+0x16/0x1b
[ 790.493249] ---[ end trace 4eaa2a86a8e2da24 ]---
------------------------------------------------------------------------
When I try to do an 'ls /pvfs2/' (as clouduser, not root FWIW), the machine
appears to crash (serial console output) :
------------------------------------------------------------------------
[ 1072.353527] BUG: unable to handle kernel NULL pointer dereference at
0000000000000030
[ 1072.363488] IP: [<ffffffff81145068>] __mark_inode_dirty+0xd8/0x180
[ 1072.363488] PGD 42eb6d067 PUD 42b877067 PMD 0
[ 1072.363488] Oops: 0000 [#1] SMP
[ 1072.363488] last sysfs file: /sys/devices/platform/coretemp.7/temp1_label
[ 1072.363488] CPU 7
[ 1072.363488] Modules linked in: pvfs2 w83627hf_wdt nfs lockd nfs_acl
auth_rpcgss sunrpc fuse coretemp w83627ehf w83793 hwmon_vid i5k_amb i2c_i801
i5400_edac tpm_infineon pcspkr serio_raw tpm tpm_bios edac_core mptsas
mptscsih mptbase ehci_hcd scsi_transport_sas uhci_hcd e1000e netxen_nic
floppy [last unloaded: scsi_wait_scan]
[ 1072.363488] Pid: 19287, comm: ls Tainted: G W 2.6.32-js6 #11
empty
[ 1072.363488] RIP: 0010:[<ffffffff81145068>] [<ffffffff81145068>]
__mark_inode_dirty+0xd8/0x180
[ 1072.363488] RSP: 0018:ffff88042cd3be08 EFLAGS: 00010246
[ 1072.363488] RAX: ffff8804232c03c8 RBX: 0000000000000000 RCX:
0000000000000000
[ 1072.363488] RDX: 0000000000000000 RSI: ffff8800434100e0 RDI:
0000000000000246
[ 1072.363488] RBP: ffff88042cd3be28 R08: ffffffff8166c398 R09:
0000000000000001
[ 1072.363488] R10: 0000000000000000 R11: 00000000000001e1 R12:
ffff8804232c0198
[ 1072.363488] R13: ffffffffa020e2a0 R14: 000000000000000a R15:
ffff88042bd8c8c0
[ 1072.363488] FS: 00007f7aaef15770(0000) GS:ffff880043400000(0000)
knlGS:0000000000000000
[ 1072.363488] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
[ 1072.363488] CR2: 0000000000000030 CR3: 000000042a847000 CR4:
00000000000406e0
[ 1072.363488] DR0: 0000000000000000 DR1: 0000000000000000 DR2:
0000000000000000
[ 1072.363488] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7:
0000000000000400
[ 1072.363488] Process ls (pid: 19287, threadinfo ffff88042cd3a000, task
ffff88042b234620)
[ 1072.363488] Stack:
[ 1072.363488] ffff88042cd3be28 ffff8804232c0198 0000000000000009
ffffc900025320dc
[ 1072.363488] <0> ffff88042cd3bee8 ffffffffa01ffaaa ffffffff81133b10
ffff88042cd3bf38
[ 1072.363488] <0> 000000092cd3a000 0000000100000000 ffff88037d571000
ffff88042de60000
[ 1072.363488] Call Trace:
[ 1072.363488] [<ffffffffa01ffaaa>] pvfs2_readdir+0x58a/0x890 [pvfs2]
[ 1072.363488] [<ffffffff81133b10>] ? filldir+0x0/0xe0
[ 1072.363488] [<ffffffff81133b10>] ? filldir+0x0/0xe0
[ 1072.363488] [<ffffffff81133d95>] vfs_readdir+0xb5/0xd0
[ 1072.363488] [<ffffffff81133f0b>] sys_getdents+0x8b/0x100
[ 1072.363488] [<ffffffff81449aca>] ? error_exit+0x6a/0xb0
[ 1072.363488] [<ffffffff81011f82>] system_call_fastpath+0x16/0x1b
[ 1072.363488] Code: 83 7c 24 08 00 74 7c 83 e2 60 75 77 83 e1 07 0f 1f 40
00 75 6e 49 8b 84 24 28 02 00 00 4c 8b a8 e8 00 00 00 49 8b 9d f0 01 00 00
<f6> 43 30 02 75 06 f6 43 28 10 74 73 48 8b 05 45 38 58 00 49 8b
[ 1072.363488] RIP [<ffffffff81145068>] __mark_inode_dirty+0xd8/0x180
[ 1072.363488] RSP <ffff88042cd3be08>
[ 1072.363488] CR2: 0000000000000030
[ 1075.435146] ---[ end trace 4eaa2a86a8e2da25 ]---
------------------------------------------------------------------------
Looks like a null pointer in pvfs2_readdir? Any ideas?
~Milo
------------------------------
_______________________________________________
Pvfs2-users mailing list
[email protected]
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-users
End of Pvfs2-users Digest, Vol 48, Issue 2
******************************************
Index: src/kernel/linux-2.6/file.c
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/kernel/linux-2.6/file.c,v
retrieving revision 1.153
diff -a -u -p -r1.153 file.c
--- src/kernel/linux-2.6/file.c 1 Oct 2009 16:51:37 -0000 1.153
+++ src/kernel/linux-2.6/file.c 27 Jan 2010 14:51:48 -0000
@@ -71,9 +71,6 @@ int pvfs2_file_open(
inode->i_mapping->host = inode;
inode->i_mapping->a_ops = &pvfs2_address_operations;
-#ifndef PVFS2_LINUX_KERNEL_2_4
- inode->i_mapping->backing_dev_info = &pvfs2_backing_dev_info;
-#endif
if (S_ISDIR(inode->i_mode))
{
@@ -3044,8 +3041,6 @@ static int pvfs2_file_mmap(struct file *
vma->vm_flags &= ~VM_MAYWRITE;
return generic_file_mmap(file, vma);
#else
- /* backing_dev_info isn't present on 2.4.x */
- inode->i_mapping->backing_dev_info = &pvfs2_backing_dev_info;
return generic_file_readonly_mmap(file, vma);
#endif
}
Index: src/kernel/linux-2.6/inode.c
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/kernel/linux-2.6/inode.c,v
retrieving revision 1.88
diff -a -u -p -r1.88 inode.c
--- src/kernel/linux-2.6/inode.c 30 Jun 2009 16:25:38 -0000 1.88
+++ src/kernel/linux-2.6/inode.c 27 Jan 2010 14:51:48 -0000
@@ -131,16 +131,6 @@ static int pvfs2_releasepage(struct page
return 0;
}
-struct backing_dev_info pvfs2_backing_dev_info =
-{
- .ra_pages = 0,
-#ifdef HAVE_BDI_MEMORY_BACKED
- /* old interface, up through 2.6.11 */
- .memory_backed = 1 /* does not contribute to dirty memory */
-#else
- .capabilities = BDI_CAP_NO_ACCT_DIRTY | BDI_CAP_NO_WRITEBACK,
-#endif
-};
#endif /* !PVFS2_LINUX_KERNEL_2_4 */
/** PVFS2 implementation of address space operations */
@@ -152,7 +142,7 @@ struct address_space_operations pvfs2_ad
.readpage = pvfs2_readpage,
.readpages = pvfs2_readpages,
.invalidatepage = pvfs2_invalidatepage,
- .releasepage = pvfs2_releasepage
+ .releasepage = pvfs2_releasepage,
#endif
};
@@ -577,9 +567,6 @@ struct inode *pvfs2_get_custom_inode_com
inode->i_bdev = NULL;
inode->i_cdev = NULL;
inode->i_mapping->a_ops = &pvfs2_address_operations;
-#ifndef PVFS2_LINUX_KERNEL_2_4
- inode->i_mapping->backing_dev_info = &pvfs2_backing_dev_info;
-#endif
gossip_debug(GOSSIP_INODE_DEBUG, "pvfs2_get_custom_inode: inode %p allocated\n "
"(pvfs2_inode is %p | sb is %p)\n", inode,
Index: src/kernel/linux-2.6/super.c
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/kernel/linux-2.6/super.c,v
retrieving revision 1.115
diff -a -u -p -r1.115 super.c
--- src/kernel/linux-2.6/super.c 26 Jan 2010 01:23:40 -0000 1.115
+++ src/kernel/linux-2.6/super.c 27 Jan 2010 14:51:49 -0000
@@ -1448,22 +1448,6 @@ free_op:
static void pvfs2_flush_sb(
struct super_block *sb)
{
-#ifdef HAVE_SB_DIRTY_LIST
- if (!list_empty(&sb->s_dirty))
-#else
- if (!list_empty(&sb->s_bdi->wb.b_dirty))
-#endif
- {
- struct inode *inode = NULL;
-#ifdef HAVE_SB_DIRTY_LIST
- list_for_each_entry (inode, &sb->s_dirty, i_list)
-#else
- list_for_each_entry (inode, &sb->s_bdi->wb.b_dirty, i_list)
-#endif
- {
- pvfs2_flush_inode(inode);
- }
- }
return;
}
_______________________________________________
Pvfs2-users mailing list
[email protected]
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-users