diff options
author | kib <kib@FreeBSD.org> | 2016-01-23 07:33:02 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2016-01-23 07:33:02 +0000 |
commit | 00ce898270eae44f059f68b2848af2ad68dd93ec (patch) | |
tree | 3bba83a4abc782306956dc0f646b364c9f8fcb15 /sys/fs | |
parent | 51a396136ecde08b5b9e4fbf449c3b167483ee0c (diff) | |
download | FreeBSD-src-00ce898270eae44f059f68b2848af2ad68dd93ec.zip FreeBSD-src-00ce898270eae44f059f68b2848af2ad68dd93ec.tar.gz |
MFC r293059:
Hide transient EBADF errors caused by the parallel revoke(2) or forced
unmount of devfs mounts, by restarting the failed syscall.
Diffstat (limited to 'sys/fs')
-rw-r--r-- | sys/fs/devfs/devfs_vnops.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/fs/devfs/devfs_vnops.c b/sys/fs/devfs/devfs_vnops.c index b28968d..a45e07d 100644 --- a/sys/fs/devfs/devfs_vnops.c +++ b/sys/fs/devfs/devfs_vnops.c @@ -239,18 +239,18 @@ devfs_populate_vp(struct vnode *vp) if (DEVFS_DMP_DROP(dmp)) { sx_xunlock(&dmp->dm_lock); devfs_unmount_final(dmp); - return (EBADF); + return (ERESTART); } if ((vp->v_iflag & VI_DOOMED) != 0) { sx_xunlock(&dmp->dm_lock); - return (EBADF); + return (ERESTART); } de = vp->v_data; KASSERT(de != NULL, ("devfs_populate_vp: vp->v_data == NULL but vnode not doomed")); if ((de->de_flags & DE_DOOMED) != 0) { sx_xunlock(&dmp->dm_lock); - return (EBADF); + return (ERESTART); } return (0); |