Re: find_fh_dentry returned a DISCONNECTED directory

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Feb 13, 2014 at 03:45:16PM -0800, Eric W. Biederman wrote:
> "J. Bruce Fields" <bfields@xxxxxxxxxxxx> writes:
> 
> > Yesterday you passed on a report of this printk from nfsdfh.c firing:
> >
> > 	printk("nfsd: find_fh_dentry returned a DISCONNECTED directory: %pd2\n",
> > 	                                dentry);
> >
> > I think the dentry probably comes from the FILEID_ROOT case of:
> >
> > 	if (fileid_type == FILEID_ROOT)
> > 		dentry = dget(exp->ex_path.dentry);
> > 	else {
> > 		dentry = exportfs_decode_fh(exp->ex_path.mnt, fid,
> > 				data_left, fileid_type,
> > 				nfsd_acceptable, exp);
> >         }
> >
> > In that case the dentry was found using ordinary filesystem lookups, so
> > doesn't go through the same DISCONNECTED-clearing logic as in the case
> > of lookups by filehandle.
> >
> > Probably they have an export root that's not a filesystem root, and the
> > lookups happened in the right order?
> >
> > I suspect that's fine, and that the printk is just stupid, but maybe we
> > should clear DISCONNECTED when possible on normal lookups.  The
> > following is my attempt, though I'm not sure if d_alloc is the right
> > place to do this.  In any case it might help confirm this is what's
> > happening.
> >
> > So if you pass along this patch to the person who was seeing that printk
> > I'd be interested in the results.
> 
> I have been reading through the dentry code for other reasons and your
> patch definitely won't change anything. __d_alloc sets d_flags = 0.
> Therefore d_alloc always returns with d_flags == 0.

You're right, of course.  I wasn't thinking straight.

So the only dentries with DISCONNECTED set are those created with
d_obtain_alias, which is normally only used when you're looking up by
filehandle.

Except btrfs has a weird use in get_default_root().  So maybe they were
running into the dentry that created?

So btrfs should probably be using something else, I'm not sure what.

--b.
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux