Module Name:    src
Committed By:   pooka
Date:           Sat Oct 17 23:16:05 UTC 2009

Modified Files:
        src/sys/fs/puffs: puffs_msgif.h puffs_vnops.c

Log Message:
Transmit VOP_ABORTOP() to the server.


To generate a diff of this commit:
cvs rdiff -u -r1.66 -r1.67 src/sys/fs/puffs/puffs_msgif.h
cvs rdiff -u -r1.135 -r1.136 src/sys/fs/puffs/puffs_vnops.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/fs/puffs/puffs_msgif.h
diff -u src/sys/fs/puffs/puffs_msgif.h:1.66 src/sys/fs/puffs/puffs_msgif.h:1.67
--- src/sys/fs/puffs/puffs_msgif.h:1.66	Mon Jan 12 18:48:35 2009
+++ src/sys/fs/puffs/puffs_msgif.h	Sat Oct 17 23:16:05 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: puffs_msgif.h,v 1.66 2009/01/12 18:48:35 pooka Exp $	*/
+/*	$NetBSD: puffs_msgif.h,v 1.67 2009/10/17 23:16:05 pooka Exp $	*/
 
 /*
  * Copyright (c) 2005, 2006, 2007  Antti Kantee.  All Rights Reserved.
@@ -102,7 +102,7 @@
 #define PUFFS_ERR_MAX PUFFS_ERR_VPTOFH
 
 #define PUFFSDEVELVERS	0x80000000
-#define PUFFSVERSION	27
+#define PUFFSVERSION	28
 #define PUFFSNAMESIZE	32
 
 #define PUFFS_TYPEPREFIX "puffs|"
@@ -563,6 +563,13 @@
 	struct puffs_kcred	pvnr_cred;		/* OUT	*/
 };
 
+struct puffs_vnmsg_abortop {
+	struct puffs_req	pvn_pr;
+
+	struct puffs_kcn	pvnr_cn;		/* OUT	*/
+	struct puffs_kcred	pvnr_cn_cred;		/* OUT	*/
+};
+
 
 /*
  * For cache reports.  Everything is always out-out-out, no replies

Index: src/sys/fs/puffs/puffs_vnops.c
diff -u src/sys/fs/puffs/puffs_vnops.c:1.135 src/sys/fs/puffs/puffs_vnops.c:1.136
--- src/sys/fs/puffs/puffs_vnops.c:1.135	Wed Sep 30 18:22:29 2009
+++ src/sys/fs/puffs/puffs_vnops.c	Sat Oct 17 23:16:05 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: puffs_vnops.c,v 1.135 2009/09/30 18:22:29 pooka Exp $	*/
+/*	$NetBSD: puffs_vnops.c,v 1.136 2009/10/17 23:16:05 pooka Exp $	*/
 
 /*
  * Copyright (c) 2005, 2006, 2007  Antti Kantee.  All Rights Reserved.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: puffs_vnops.c,v 1.135 2009/09/30 18:22:29 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: puffs_vnops.c,v 1.136 2009/10/17 23:16:05 pooka Exp $");
 
 #include <sys/param.h>
 #include <sys/buf.h>
@@ -82,6 +82,7 @@
 int	puffs_vnop_bmap(void *);
 int	puffs_vnop_mmap(void *);
 int	puffs_vnop_getpages(void *);
+int	puffs_vnop_abortop(void *);
 
 int	puffs_vnop_spec_read(void *);
 int	puffs_vnop_spec_write(void *);
@@ -130,7 +131,7 @@
         { &vop_advlock_desc, puffs_vnop_checkop },	/* advlock */
         { &vop_strategy_desc, puffs_vnop_strategy },	/* REAL strategy */
         { &vop_revoke_desc, genfs_revoke },		/* REAL revoke */
-        { &vop_abortop_desc, genfs_abortop },		/* REAL abortop */
+        { &vop_abortop_desc, puffs_vnop_abortop },	/* REAL abortop */
         { &vop_inactive_desc, puffs_vnop_inactive },	/* REAL inactive */
         { &vop_reclaim_desc, puffs_vnop_reclaim },	/* REAL reclaim */
         { &vop_lock_desc, puffs_vnop_lock },		/* REAL lock */
@@ -2106,6 +2107,33 @@
 	return error;
 }
 
+int
+puffs_vnop_abortop(void *v)
+{
+	struct vop_abortop_args /* {
+		struct vnode *a_dvp;
+		struct componentname *a_cnp;
+	}; */ *ap = v;
+	PUFFS_MSG_VARS(vn, abortop);
+	struct vnode *dvp = ap->a_dvp;
+	struct puffs_mount *pmp = MPTOPUFFSMP(dvp->v_mount);
+	struct componentname *cnp = ap->a_cnp;
+	int error;
+
+	if (EXISTSOP(pmp, ABORTOP)) {
+		PUFFS_MSG_ALLOC(vn, abortop);
+		puffs_makecn(&abortop_msg->pvnr_cn, &abortop_msg->pvnr_cn_cred,
+		    cnp, PUFFS_USE_FULLPNBUF(pmp));
+		puffs_msg_setinfo(park_abortop, PUFFSOP_VN,
+		    PUFFS_VN_ABORTOP, VPTOPNC(dvp));
+
+		PUFFS_MSG_ENQUEUEWAIT(pmp, park_abortop, error);
+		PUFFS_MSG_RELEASE(abortop);
+	}
+
+	return genfs_abortop(v);
+}
+
 #define BIOASYNC(bp) (bp->b_flags & B_ASYNC)
 
 /*

Reply via email to