mirror of
https://github.com/freebsd/freebsd-src
synced 2024-09-06 17:18:32 +00:00
fdescfs: improve linrdlnk mount option
Instead of using VV_READLINK vnode flag and checking it in one place, just assign VLNK type to the Fdesc vnodes for linrdlnk mounts. Then all places where symlinks needs to be followed, e.g. lookup(), are handled. PR: 272127 Reported by: Peter Eriksson <pen@lysator.liu.se> Reviewed by: markj Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D40700
This commit is contained in:
parent
eb550615ef
commit
3bffa22623
|
@ -190,8 +190,9 @@ fdesc_allocvp(fdntype ftype, unsigned fd_fd, int ix, struct mount *mp,
|
|||
fd->fd_type = ftype;
|
||||
fd->fd_fd = fd_fd;
|
||||
fd->fd_ix = ix;
|
||||
if (ftype == Fdesc && fmp->flags & FMNT_LINRDLNKF)
|
||||
vp->v_vflag |= VV_READLINK;
|
||||
/* Cannot set v_type to VCHR */
|
||||
if (ftype == Fdesc && (fmp->flags & FMNT_LINRDLNKF) != 0)
|
||||
vp->v_type = VLNK;
|
||||
error = insmntque1(vp, mp);
|
||||
if (error != 0) {
|
||||
vgone(vp);
|
||||
|
@ -457,7 +458,8 @@ fdesc_getattr(struct vop_getattr_args *ap)
|
|||
break;
|
||||
|
||||
case Fdesc:
|
||||
vap->va_type = (vp->v_vflag & VV_READLINK) == 0 ? VCHR : VLNK;
|
||||
vap->va_type = (VFSTOFDESC(vp->v_mount)->flags &
|
||||
FMNT_LINRDLNKF) == 0 ? VCHR : VLNK;
|
||||
vap->va_nlink = 1;
|
||||
vap->va_size = 0;
|
||||
vap->va_rdev = makedev(0, vap->va_fileid);
|
||||
|
|
Loading…
Reference in a new issue