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)
/*