* NFS/ReiserFS problems 2.5.64-mbj1 @ 2003-03-27 9:22 Bill Huey 2003-03-27 17:07 ` Oleg Drokin 0 siblings, 1 reply; 8+ messages in thread From: Bill Huey @ 2003-03-27 9:22 UTC (permalink / raw) To: linux-kernel; +Cc: Bill Huey (Hui) NFS problems with reiserfs: Mar 26 19:09:47 gnuppy kernel: Code: Bad EIP value. Mar 26 19:16:42 gnuppy kernel: <1>Unable to handle kernel NULL pointer dereference at virtual address 00000000 Mar 26 19:16:42 gnuppy kernel: printing eip: Mar 26 19:16:42 gnuppy kernel: 00000000 Mar 26 19:16:42 gnuppy kernel: Oops: 0000 Mar 26 19:16:42 gnuppy kernel: CPU: 0 Mar 26 19:16:42 gnuppy kernel: EIP: 0060:[<00000000>] Tainted: PF Mar 26 19:16:42 gnuppy kernel: EFLAGS: 00010202 Mar 26 19:16:42 gnuppy kernel: EIP is at 0x0 Mar 26 19:16:42 gnuppy kernel: eax: d5885dac ebx: 00000005 ecx: c03ac868 edx: d5885d9c Mar 26 19:16:42 gnuppy kernel: esi: d57e2610 edi: d7857800 ebp: d5885dc8 esp: d5885d84 Mar 26 19:16:42 gnuppy kernel: ds: 007b es: 007b ss: 0068 Mar 26 19:16:42 gnuppy kernel: Process nfsd (pid: 357, threadinfo=d5884000 task=d5617380) Mar 26 19:16:42 gnuppy kernel: Stack: c01db943 d7857800 d5885dac d5885d9c d8b4aae0 d77e96a0 00000002 00000001 Mar 26 19:16:42 gnuppy kernel: 00000000 d5f4ac60 00000004 00000002 0000001c 666e6967 d77e96a0 d57e2600 Mar 26 19:16:42 gnuppy kernel: 46000000 d5885e24 d8b4afc9 d7857800 d57e2610 00000005 00000005 d8b4aae0 Mar 26 19:16:42 gnuppy kernel: Call Trace: Mar 26 19:16:42 gnuppy kernel: [reiserfs_decode_fh+179/224] reiserfs_decode_fh+0xb3/0xe0 Mar 26 19:16:42 gnuppy kernel: [<d8b4aae0>] nfsd_acceptable+0x0/0x110 [nfsd] Mar 26 19:16:42 gnuppy kernel: [<d8b4afc9>] fh_verify+0x3d9/0x5c0 [nfsd] Mar 26 19:16:42 gnuppy kernel: [<d8b4aae0>] nfsd_acceptable+0x0/0x110 [nfsd] Mar 26 19:16:42 gnuppy kernel: [<d8b4c472>] nfsd_open+0x42/0x160 [nfsd] Mar 26 19:16:42 gnuppy kernel: [<d8b4e4a0>] nfsd_readdir+0x40/0xf0 [nfsd] Mar 26 19:16:42 gnuppy kernel: [try_to_wake_up+313/336] try_to_wake_up+0x139/0x150 Mar 26 19:16:42 gnuppy kernel: [__wake_up_common+58/96] __wake_up_common+0x3a/0x60 Mar 26 19:16:42 gnuppy kernel: [<d8b4531c>] ip_table+0x7c/0x400 [sunrpc] Mar 26 19:16:42 gnuppy kernel: [<d8b4531c>] ip_table+0x7c/0x400 [sunrpc] Mar 26 19:16:42 gnuppy kernel: [<d8b356e1>] svcauth_unix_accept+0x271/0x2a0 [sunrpc] Mar 26 19:16:42 gnuppy kernel: [<d8b449e0>] ip_map_cache+0x0/0x48 [sunrpc] Mar 26 19:16:42 gnuppy kernel: [<d8b4a75f>] nfsd_proc_readdir+0x7f/0x130 [nfsd] Mar 26 19:16:42 gnuppy kernel: [<d8b52b70>] nfssvc_encode_entry+0x0/0xc0 [nfsd] Mar 26 19:16:42 gnuppy kernel: [<d8b527cc>] nfssvc_decode_readdirargs+0x4c/0x120 [nfsd] Mar 26 19:16:42 gnuppy kernel: [<d8b5d3e0>] nfsd_procedures2+0x240/0x288 [nfsd] Mar 26 19:16:42 gnuppy kernel: [<d8b484e7>] nfsd_dispatch+0xe7/0x200 [nfsd] Mar 26 19:16:42 gnuppy kernel: [<d8b3143a>] svc_process+0x4fa/0x690 [sunrpc] Mar 26 19:16:42 gnuppy kernel: [<d8b5d3e0>] nfsd_procedures2+0x240/0x288 [nfsd] Mar 26 19:16:42 gnuppy kernel: [<d8b5d428>] nfsd_version2+0x0/0x18 [nfsd] Mar 26 19:16:42 gnuppy kernel: [<d8b5cf00>] nfsd_program+0x0/0x20 [nfsd] Mar 26 19:16:42 gnuppy kernel: [<d8b48305>] nfsd+0x125/0x220 [nfsd] Mar 26 19:16:42 gnuppy kernel: [<d8b481e0>] nfsd+0x0/0x220 [nfsd] Mar 26 19:16:42 gnuppy kernel: [kernel_thread_helper+5/24] kernel_thread_helper+0x5/0x18 Mar 26 19:16:42 gnuppy kernel: ----------------- bill ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: NFS/ReiserFS problems 2.5.64-mbj1 2003-03-27 9:22 NFS/ReiserFS problems 2.5.64-mbj1 Bill Huey @ 2003-03-27 17:07 ` Oleg Drokin 2003-03-28 9:12 ` Thomas Schlichter 0 siblings, 1 reply; 8+ messages in thread From: Oleg Drokin @ 2003-03-27 17:07 UTC (permalink / raw) To: Bill Huey; +Cc: linux-kernel, neilb Hello! On Thu, Mar 27, 2003 at 01:22:07AM -0800, Bill Huey wrote: > NFS problems with reiserfs: Can you reproduce it with 2.5.66? > Mar 26 19:09:47 gnuppy kernel: Code: Bad EIP value. > Mar 26 19:16:42 gnuppy kernel: <1>Unable to handle kernel NULL pointer dereference at virtual address 00000000 > Mar 26 19:16:42 gnuppy kernel: printing eip: > Mar 26 19:16:42 gnuppy kernel: 00000000 > Mar 26 19:16:42 gnuppy kernel: [reiserfs_decode_fh+179/224] reiserfs_decode_fh+0xb3/0xe0 > Mar 26 19:16:42 gnuppy kernel: [<d8b4aae0>] nfsd_acceptable+0x0/0x110 [nfsd] sb->s_export_op->find_exported_dentry is NULL in reiserfs_decode_fh, well. In fact we never set this field at all. What is supposed to be there, anyway? I guess following patch should fix the problem. In fact I guess somebody should put find_exported_dentry() declaration to include/linux/fs.h or something like that. Also absolutely the same problem must exist if you try to export fat filesystem. Bye, Oleg ===== fs/reiserfs/super.c 1.59 vs edited ===== --- 1.59/fs/reiserfs/super.c Tue Feb 25 20:45:25 2003 +++ edited/fs/reiserfs/super.c Thu Mar 27 19:58:46 2003 }; +extern struct dentry * find_exported_dentry(struct super_block *sb, void *obj, void *parent, + int (*acceptable)(void *context, struct dentry *de), void *context); static struct export_operations reiserfs_export_ops = { .encode_fh = reiserfs_encode_fh, .decode_fh = reiserfs_decode_fh, .get_parent = reiserfs_get_parent, .get_dentry = reiserfs_get_dentry, + .find_exported_dentry = find_exported_dentry, } ; /* this struct is used in reiserfs_getopt () for containing the value for those ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: NFS/ReiserFS problems 2.5.64-mbj1 2003-03-27 17:07 ` Oleg Drokin @ 2003-03-28 9:12 ` Thomas Schlichter 2003-03-28 10:57 ` Thomas Schlichter 0 siblings, 1 reply; 8+ messages in thread From: Thomas Schlichter @ 2003-03-28 9:12 UTC (permalink / raw) To: Oleg Drokin; +Cc: linux-kernel, neilb, Bill Huey [-- Attachment #1: signed data --] [-- Type: text/plain, Size: 2239 bytes --] On Mar 27, 2003 18:07, Oleg Drokin wrote: > On Thu, Mar 27, 2003 at 01:22:07AM -0800, Bill Huey wrote: > > NFS problems with reiserfs: > > Can you reproduce it with 2.5.66? Well, I can. I got following Oops with 2.5.66-bk3: <1>Unable to handle kernel NULL pointer dereference at virtual address 00000000 printing eip: 00000000 *pde = 00000000 Oops: 0000 [#4] CPU: 0 EIP: 0060:[<00000000>] Tainted: GF EFLAGS: 00010206 EIP is at 0x0 eax: 00000000 ebx: cd6ba014 ecx: c038a008 edx: 00000006 esi: c1382400 edi: 11270000 ebp: cd6e3ea4 esp: cd6e3e6c ds: 007b es: 007b ss: 0068 Process nfsd (pid: 624, threadinfo=cd6e2000 task=cd780cc0) Stack: c01de985 c1382400 cd6e3e98 cd6e3e8c d4a535f0 cb05e6d4 cd6ba014 cd6ba004 00000004 00000002 00000002 0014bfca 00000004 00000004 cd6e3eec d4a53a3e c1382400 cd6ba014 00000006 00000006 d4a535f0 cb05e6d4 cd6ba004 cd6ba8e8 Call Trace: [<c01de985>] reiserfs_decode_fh+0xbd/0xc4 [<d4a535f0>] gcc2_compiled.+0x0/0x100 [nfsd] [<d4a53a3e>] fh_verify+0x34e/0x4f8 [nfsd] [<d4a535f0>] gcc2_compiled.+0x0/0x100 [nfsd] [<d4a27f80>] ip_table+0x0/0x400 [sunrpc] [<d4a54c4f>] nfsd_access+0x27/0xf0 [nfsd] [<d4a5b716>] nfsd3_proc_access+0xb6/0xc4 [nfsd] [<d4a6ff70>] nfsd_procedures3+0x90/0x318 [nfsd] [<d4a51ae8>] nfsd_dispatch+0xd0/0x188 [nfsd] [<d4a0b50d>] svc_process+0x3cd/0x660 [sunrpc] [<d4a6ff70>] nfsd_procedures3+0x90/0x318 [nfsd] [<d4a701f8>] nfsd_version3+0x0/0x28 [nfsd] [<d4a516dd>] nfsd+0x411/0x74c [nfsd] [<d4a512cc>] nfsd+0x0/0x74c [nfsd] [<d4a512cc>] nfsd+0x0/0x74c [nfsd] [<d4a6f578>] nfsd_list+0x0/0x8 [nfsd] [<c01081e5>] kernel_thread_helper+0x5/0xc Code: Bad EIP value. > sb->s_export_op->find_exported_dentry is NULL > in reiserfs_decode_fh, well. In fact we never set this field at all. > What is supposed to be there, anyway? > I guess following patch should fix the problem. For me it looks good, so I'll give it a try... > In fact I guess somebody should put find_exported_dentry() declaration to > include/linux/fs.h or something like that. > Also absolutely the same problem must exist if you try to export fat filesystem. I didn't try that... Regards Thomas [-- Attachment #2: signature --] [-- Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: NFS/ReiserFS problems 2.5.64-mbj1 2003-03-28 9:12 ` Thomas Schlichter @ 2003-03-28 10:57 ` Thomas Schlichter 2003-03-28 11:45 ` Oleg Drokin 2003-03-29 5:21 ` Neil Brown 0 siblings, 2 replies; 8+ messages in thread From: Thomas Schlichter @ 2003-03-28 10:57 UTC (permalink / raw) To: Oleg Drokin; +Cc: linux-kernel, neilb, Bill Huey [-- Attachment #1: signed data --] [-- Type: text/plain, Size: 908 bytes --] On Mar 27, 2003 18:07, Oleg Drokin wrote: > sb->s_export_op->find_exported_dentry is NULL > in reiserfs_decode_fh, well. In fact we never set this field at all. > What is supposed to be there, anyway? > I guess following patch should fix the problem. Yes, it did fix the problem, but now I was not allowed anymore to compile NFS as a module as I need reiserfs to be in the kernel... :-( > In fact I guess somebody should put find_exported_dentry() declaration to > include/linux/fs.h or something like that. > Also absolutely the same problem must exist if you try to export fat filesystem. That is true, too. I saw the Oops with a VFAT partition, too I just wonder why the code in fs/nfsd/export.c lines 684-687 does not work. This code should set the find_exported_dentry field correctly. But I do not know when this function (exp_export()) is called... Regards Thomas [-- Attachment #2: signature --] [-- Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: NFS/ReiserFS problems 2.5.64-mbj1 2003-03-28 10:57 ` Thomas Schlichter @ 2003-03-28 11:45 ` Oleg Drokin 2003-03-29 5:21 ` Neil Brown 1 sibling, 0 replies; 8+ messages in thread From: Oleg Drokin @ 2003-03-28 11:45 UTC (permalink / raw) To: Thomas Schlichter; +Cc: linux-kernel, neilb, Bill Huey Hello! On Fri, Mar 28, 2003 at 11:57:42AM +0100, Thomas Schlichter wrote: > On Mar 27, 2003 18:07, Oleg Drokin wrote: > > sb->s_export_op->find_exported_dentry is NULL > > in reiserfs_decode_fh, well. In fact we never set this field at all. > > What is supposed to be there, anyway? > > I guess following patch should fix the problem. > Yes, it did fix the problem, but now I was not allowed anymore to compile NFS > as a module as I need reiserfs to be in the kernel... :-( Well, in fact this not real fix as I see it, it is just a cover for different bug somewhere else. > > In fact I guess somebody should put find_exported_dentry() declaration to > > include/linux/fs.h or something like that. > > Also absolutely the same problem must exist if you try to export fat > filesystem. > That is true, too. I saw the Oops with a VFAT partition, too > I just wonder why the code in fs/nfsd/export.c lines 684-687 does not work. Well, I run the thing in the debugger with current bk snapshot and everything worked. > This code should set the find_exported_dentry field correctly. But I do not > know when this function (exp_export()) is called... it is called when you mount remote fs, as my debugging session shows. So I guess problem was already fixed somewhere else. Bye, Oleg ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: NFS/ReiserFS problems 2.5.64-mbj1 2003-03-28 10:57 ` Thomas Schlichter 2003-03-28 11:45 ` Oleg Drokin @ 2003-03-29 5:21 ` Neil Brown 2003-03-30 19:52 ` Thomas Schlichter 2003-03-31 9:12 ` Thomas Schlichter 1 sibling, 2 replies; 8+ messages in thread From: Neil Brown @ 2003-03-29 5:21 UTC (permalink / raw) To: Thomas Schlichter; +Cc: Oleg Drokin, linux-kernel, Bill Huey On Friday March 28, schlicht@uni-mannheim.de wrote: > On Mar 27, 2003 18:07, Oleg Drokin wrote: > > sb->s_export_op->find_exported_dentry is NULL > > in reiserfs_decode_fh, well. In fact we never set this field at all. > > What is supposed to be there, anyway? > > I guess following patch should fix the problem. > > Yes, it did fix the problem, but now I was not allowed anymore to compile NFS > as a module as I need reiserfs to be in the kernel... :-( > > > In fact I guess somebody should put find_exported_dentry() declaration to > > include/linux/fs.h or something like that. > > Also absolutely the same problem must exist if you try to export fat > filesystem. > > That is true, too. I saw the Oops with a VFAT partition, too > > I just wonder why the code in fs/nfsd/export.c lines 684-687 does not work. > This code should set the find_exported_dentry field correctly. But I do not > know when this function (exp_export()) is called... > One possibility is that you are using the new nfs-utils 1.0.3, but you reported the bug before I announced it (though it was in CVS and on kernel.org by then so maybe...)! The new code uses a different path to export filesystems which didn't include the setting of find_exported_dentry. The following patch should fix that. If you aren't using 1.0.3, then I am at a loss. A filesystem can only be exported via call to exp_export, and that does set sb->s_export_op->find_exported_dentry NeilBrown ----------- Diffstat output ------------ ./fs/nfsd/export.c | 42 ++++++++++++++++++++++++++++++++++++++---- 1 files changed, 38 insertions(+), 4 deletions(-) diff ./fs/nfsd/export.c~current~ ./fs/nfsd/export.c --- ./fs/nfsd/export.c~current~ 2003-03-28 10:51:35.000000000 +1100 +++ ./fs/nfsd/export.c 2003-03-29 16:14:04.000000000 +1100 @@ -270,6 +270,11 @@ void svc_export_request(struct cache_det (*bpp)[-1] = '\n'; } +extern struct dentry * +find_exported_dentry(struct super_block *sb, void *obj, void *parent, + int (*acceptable)(void *context, struct dentry *de), + void *context); + static struct svc_export *svc_export_lookup(struct svc_export *, int); int svc_export_parse(struct cache_detail *cd, char *mesg, int mlen) { @@ -342,6 +347,39 @@ int svc_export_parse(struct cache_detail err = get_int(&mesg, &an_int); if (err) goto out; exp.ex_fsid = an_int; + + + /* We currently export only dirs and regular files. + * This is what umountd does. + */ + err = -ENOTDIR; + if (!S_ISDIR(nd.dentry->d_inode->i_mode) && + !S_ISREG(nd.dentry->d_inode->i_mode)) + goto out; + + err = -EINVAL; + /* There are two requirements on a filesystem to be exportable. + * 1: We must be able to identify the filesystem from a number. + * either a device number (so FS_REQUIRES_DEV needed) + * or an FSID number (so NFSEXP_FSID needed). + * 2: We must be able to find an inode from a filehandle. + * This means that s_export_op must be set. + */ + if (!(nd.dentry->d_inode->i_sb->s_type->fs_flags & FS_REQUIRES_DEV)) { + if (!(exp.ex_flags & NFSEXP_FSID)) { + dprintk("exp_export: export of non-dev fs without fsid"); + goto out; + } + } + if (!nd.dentry->d_inode->i_sb->s_export_op) { + dprintk("exp_export: export of invalid fs type.\n"); + goto out; + } + + /* Ok, we can export it */; + if (!nd.dentry->d_inode->i_sb->s_export_op->find_exported_dentry) + nd.dentry->d_inode->i_sb->s_export_op->find_exported_dentry = + find_exported_dentry; } expp = svc_export_lookup(&exp, 1); @@ -594,10 +632,6 @@ static void exp_unhash(struct svc_export svc_expkey_cache.nextcheck = get_seconds(); } -extern struct dentry * -find_exported_dentry(struct super_block *sb, void *obj, void *parent, - int (*acceptable)(void *context, struct dentry *de), - void *context); /* * Export a file system. */ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: NFS/ReiserFS problems 2.5.64-mbj1 2003-03-29 5:21 ` Neil Brown @ 2003-03-30 19:52 ` Thomas Schlichter 2003-03-31 9:12 ` Thomas Schlichter 1 sibling, 0 replies; 8+ messages in thread From: Thomas Schlichter @ 2003-03-30 19:52 UTC (permalink / raw) To: Neil Brown; +Cc: Oleg Drokin, linux-kernel, Bill Huey [-- Attachment #1: signed data --] [-- Type: text/plain, Size: 766 bytes --] On March 29, Neil Brown wrote: > One possibility is that you are using the new nfs-utils 1.0.3, but you > reported the bug before I announced it (though it was in CVS and on > kernel.org by then so maybe...)! You are right, I am using the nfs-utils 1.0.3 as I downloaded them as soon as I saw them on kernel.org... ;-) > The new code uses a different path to export filesystems which didn't > include the setting of find_exported_dentry. > The following patch should fix that. Thank you! I'll try it tonight and write you my results... > If you aren't using 1.0.3, then I am at a loss. A filesystem can only > be exported via call to exp_export, and that does set > sb->s_export_op->find_exported_dentry > > NeilBrown Thomas Schlichter [-- Attachment #2: signature --] [-- Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: NFS/ReiserFS problems 2.5.64-mbj1 2003-03-29 5:21 ` Neil Brown 2003-03-30 19:52 ` Thomas Schlichter @ 2003-03-31 9:12 ` Thomas Schlichter 1 sibling, 0 replies; 8+ messages in thread From: Thomas Schlichter @ 2003-03-31 9:12 UTC (permalink / raw) To: Neil Brown; +Cc: Oleg Drokin, linux-kernel, Bill Huey [-- Attachment #1: signed data --] [-- Type: text/plain, Size: 627 bytes --] On Marc 29, Neil Brown wrote: > One possibility is that you are using the new nfs-utils 1.0.3, but you > reported the bug before I announced it (though it was in CVS and on > kernel.org by then so maybe...)! > The new code uses a different path to export filesystems which didn't > include the setting of find_exported_dentry. > The following patch should fix that. Yes, it did! With that patch NFS works perfectly via TCP (I've still very big problems with UDP over a 10MBit half-duplex connection. :-( But that's an other problem... ) So this patch has to land in linus' tree... Regards Thomas Schlichter [-- Attachment #2: signature --] [-- Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2003-03-31 9:01 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2003-03-27 9:22 NFS/ReiserFS problems 2.5.64-mbj1 Bill Huey 2003-03-27 17:07 ` Oleg Drokin 2003-03-28 9:12 ` Thomas Schlichter 2003-03-28 10:57 ` Thomas Schlichter 2003-03-28 11:45 ` Oleg Drokin 2003-03-29 5:21 ` Neil Brown 2003-03-30 19:52 ` Thomas Schlichter 2003-03-31 9:12 ` Thomas Schlichter
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox