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)
|
||||
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
|
||||
* return NULL to indicate a mount collision. This is done because
|
||||
|
Loading…
Reference in New Issue
Block a user