[linux-cifs-client] kernel BUG at /tmp/cifs-2.6-devel/fs/cifs/cifs_dfs_ref.c:274!

Jeff Layton jlayton at redhat.com
Fri Sep 19 23:53:39 GMT 2008


On Fri, 19 Sep 2008 16:30:04 -0400 (EDT)
"Peter J. Desnoyers" <pjd at ccs.neu.edu> wrote:

> Jeff Layton wrote:
> 
> > What's the actual mount command you're using here? Particularly the
> > "device" argument of the mount.
> 
> > PS: looks like the capture shows the machine claiming to be a Win2k3
> > box...
> 
> mount -t cifs -o user=ccis-windows/pjd //ccis-windows/ccis/MyHome ~/MyHome
> 
> It's possible that the windows server (ccis-windows) is using some sort of DFS trickery to hand off the mount - the same file system is mounted via NFS on another system of mine, and the NFS server is definitely a netapp. (ether 00:a0:98, while ccis-windows has an Intel ether address)
> 

cc'ing Igor and Steve...

That's definitely the case. The trace shows a tree connect
to //ccis-windows/ccis, and then it does a querypathinfo on MyHome,
which appears to be a DFS share. What happens is that the client then
tries to chase that referral and trips over this in
cifs_dfs_follow_mountpoint():

+       BUG_ON(IS_ROOT(dentry));

Since the DFS referral is the root of the mount, this makes it crash
the box.

You should be able to work around this for now by not mounting MyHome
directly. Mount the ccis share and symlink to MyHome under it or
something or just mount the target of the referral directly.

I think rather than a BUG() here, it would be good to refuse to mount
the share or to chase the referral during the mount phase and not
bother mounting the DFS root at all.

Igor, any thoughts?

-- 
Jeff Layton <jlayton at redhat.com>


More information about the linux-cifs-client mailing list