Avoid ELOOP on auto-mounted snapshots
Ensure that the path member pointers are associated with the newly-mounted snapshot when zpl_snapdir_automount() returns. Otherwise the follow_automount() function may be called repeatedly, leading to an incorrect ELOOP error return. This problem was observed as a 'Too many levels of symbolic links' error from user-space commands accessing an unmounted snapshot in the .zfs/snapshot directory. Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #816
This commit is contained in:
parent
2ae1031962
commit
7afcf5b1da
|
@ -356,6 +356,13 @@ zpl_snapdir_automount(struct path *path)
|
||||||
if (error)
|
if (error)
|
||||||
return ERR_PTR(error);
|
return ERR_PTR(error);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Ensure path->dentry points to the dentry for the root of the
|
||||||
|
* newly-mounted snapshot, otherwise this function may be called
|
||||||
|
* repeatedly which can lead to an incorrect ELOOP error return.
|
||||||
|
*/
|
||||||
|
follow_up(path);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Rather than returning the new vfsmount for the snapshot we must
|
* Rather than returning the new vfsmount for the snapshot we must
|
||||||
* return NULL to indicate a mount collision. This is done because
|
* return NULL to indicate a mount collision. This is done because
|
||||||
|
|
Loading…
Reference in New Issue