diff options
author | Jean-Pierre André <jpandre@users.sourceforge.net> | 2012-08-22 10:00:23 +0200 |
---|---|---|
committer | Jean-Pierre André <jpandre@users.sourceforge.net> | 2012-08-22 10:00:23 +0200 |
commit | bb782f9a714cad98d8ee2f1e5287d06c6be6b841 (patch) | |
tree | 3c86bf8a84d2b72e9cea3dc5c81bfc5ad5d66883 | |
parent | d47dae13bcdc4b4f158973f78332f8de916f66cc (diff) | |
download | illumos-fusefs-bb782f9a714cad98d8ee2f1e5287d06c6be6b841.tar.gz |
Bounced the openings of fifo's
-rw-r--r-- | kernel/fuse_vnops.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/kernel/fuse_vnops.c b/kernel/fuse_vnops.c index d07abaf..87c040e 100644 --- a/kernel/fuse_vnops.c +++ b/kernel/fuse_vnops.c @@ -748,6 +748,21 @@ static int fuse_open(struct vnode **vpp, int flag, struct cred *cred_p, struct vnode *vp = *vpp; int err = 0; + /* Bounce the openings of special devices */ + if (vp && (vp->v_type == VFIFO)) { + vnode_t *svp; + + svp = specvp(vp, vp->v_rdev, vp->v_type, cred_p); + VN_RELE(vp); + if (svp == NULL) + err = ENOSYS; + else + *vpp = svp; + if (!err) + err = VOP_OPEN(vpp, flag, cred_p, ct); + return (err); + } + if ((err = get_filehandle(vp, flag, cred_p, NULL, CACHE_LIST_NO_CHECK))) { DTRACE_PROBE2(fuse_open_err_filehandle, |