]> granicus.if.org Git - zfs/commitdiff
Fix VOP_CLOSE() in userspace.
authorEtienne Dechamps <etienne.dechamps@ovh.net>
Thu, 27 Sep 2012 14:05:15 +0000 (16:05 +0200)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Wed, 3 Oct 2012 20:32:48 +0000 (13:32 -0700)
Currently, for unknown reasons, VOP_CLOSE() is a no-op in userspace.
This causes file descriptor leaks. This is especially problematic with
long ztest runs, since zpool.cache is opened repeatedly and never
closed, resulting in resource exhaustion (EMFILE errors).

This patch fixes the issue by making VOP_CLOSE() do what it is supposed
to do.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue #989

include/sys/zfs_context.h

index d8347a335fd016bb722ffad7d117370a293c3e7e..ad282c43c4866f7cb0bb526b3da56837605da234 100644 (file)
@@ -495,7 +495,7 @@ typedef struct vsecattr {
 
 extern int fop_getattr(vnode_t *vp, vattr_t *vap);
 
-#define        VOP_CLOSE(vp, f, c, o, cr, ct)  0
+#define        VOP_CLOSE(vp, f, c, o, cr, ct)  vn_close(vp)
 #define        VOP_PUTPAGE(vp, of, sz, fl, cr, ct)     0
 #define        VOP_GETATTR(vp, vap, fl, cr, ct)  fop_getattr((vp), (vap));