[LU-4231] NFS reexport leads to LBUG in mainline 3.12 client Created: 08/Nov/13 Updated: 04/Feb/14 Resolved: 04/Feb/14 |
|
| Status: | Resolved |
| Project: | Lustre |
| Component/s: | None |
| Affects Version/s: | Lustre 2.4.1, Lustre 2.5.0 |
| Fix Version/s: | Lustre 2.6.0, Lustre 2.5.1 |
| Type: | Bug | Priority: | Major |
| Reporter: | Roland Fehrenbacher | Assignee: | Dmitry Eremin (Inactive) |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Environment: |
|
||
| Attachments: |
|
||||||||||||||||
| Issue Links: |
|
||||||||||||||||
| Severity: | 4 | ||||||||||||||||
| Rank (Obsolete): | 11523 | ||||||||||||||||
| Description |
|
[ 1007.910111] LustreError: 9425:0:(llite_internal.h:1091:ll_inode2fid()) ASSERTION( inode != ( |
| Comments |
| Comment by Dmitry Eremin (Inactive) [ 20/Nov/13 ] |
|
I hope the patch http://review.whamcloud.com/8347 should resolve this. |
| Comment by Lai Siyao [ 21/Nov/13 ] |
|
The backtrace shows it assert on exp_rootfh(), I suspect this is not a common issue for all fh encode, could you make sure of this? |
| Comment by Dmitry Eremin (Inactive) [ 21/Nov/13 ] |
|
This is general case. From the code of function exportfs_encode_fh() we can see the path when the parent == NULL. int exportfs_encode_fh(struct dentry *dentry, struct fid *fid, int *max_len, int connectable) { int error; struct dentry *p = NULL; struct inode *inode = dentry->d_inode, *parent = NULL; if (connectable && !S_ISDIR(inode->i_mode)) { p = dget_parent(dentry); /* * note that while p might've ceased to be our parent already, * it's still pinned by and still positive. */ parent = p->d_inode; } error = exportfs_encode_inode_fh(inode, fid, max_len, parent); dput(p); return error; } The flag connectable depends from export flag NFSEXP_NOSUBTREECHECK only. {
struct fid *fid = (struct fid *)
(fhp->fh_handle.fh_auth + fhp->fh_handle.fh_size/4 - 1);
int maxsize = (fhp->fh_maxsize - fhp->fh_handle.fh_size)/4;
int subtreecheck = !(exp->ex_flags & NFSEXP_NOSUBTREECHECK);
fhp->fh_handle.fh_fileid_type = exportfs_encode_fh(dentry, fid, &maxsize, subtreecheck);
fhp->fh_handle.fh_size += maxsize * 4;
}
|
| Comment by Dmitry Eremin (Inactive) [ 21/Nov/13 ] |
|
In other place we have explicit call: /* we ask for a non connected handle */
retval = exportfs_encode_fh(path->dentry,
(struct fid *)handle->f_handle,
&handle_dwords, 0);
|
| Comment by Lai Siyao [ 22/Nov/13 ] |
|
Did you disable subtree_check in this test? |
| Comment by Dmitry Eremin (Inactive) [ 25/Nov/13 ] |
|
According my playing with kernel 3.12.0+ with staging lustre client my patch works. NFSD always asked for encode inode without parent independent from "no_subtree_check" option. |
| Comment by Dmitry Eremin (Inactive) [ 25/Nov/13 ] |
|
The patch http://review.whamcloud.com/8347 with little adoption enable NFS re-export for Lustre staging client (Lustre: Build Version: v2_3_64_0-g6e62c21-CHANGED-3.9.0). |
| Comment by nasf (Inactive) [ 26/Nov/13 ] |
|
It seems a duplication of |
| Comment by James A Simmons [ 06/Dec/13 ] |
|
Patch landed to master. Do we need to back port this to b2_5 or b2_4? |
| Comment by Dmitry Eremin (Inactive) [ 06/Dec/13 ] |
|
I think we need it in b2_5. Not sure about b2_4. I will back port it to b2_5 only. |
| Comment by Roland Fehrenbacher [ 19/Dec/13 ] |
|
This is a patch that fixes the issue for the 3.12 mainline kernel client. |
| Comment by Dmitry Eremin (Inactive) [ 04/Feb/14 ] |
|
Landed b2_5 |