summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Pierre André <jpandre@users.sourceforge.net>2012-08-22 10:00:23 +0200
committerJean-Pierre André <jpandre@users.sourceforge.net>2012-08-22 10:00:23 +0200
commitbb782f9a714cad98d8ee2f1e5287d06c6be6b841 (patch)
tree3c86bf8a84d2b72e9cea3dc5c81bfc5ad5d66883
parentd47dae13bcdc4b4f158973f78332f8de916f66cc (diff)
downloadillumos-fusefs-bb782f9a714cad98d8ee2f1e5287d06c6be6b841.tar.gz
Bounced the openings of fifo's
-rw-r--r--kernel/fuse_vnops.c15
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,