Module Name:    src
Committed By:   pooka
Date:           Sat Oct 17 23:20:15 UTC 2009

Modified Files:
        src/lib/libp2k: p2k.c

Log Message:
Implement abortop.


To generate a diff of this commit:
cvs rdiff -u -r1.24 -r1.25 src/lib/libp2k/p2k.c

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

Modified files:

Index: src/lib/libp2k/p2k.c
diff -u src/lib/libp2k/p2k.c:1.24 src/lib/libp2k/p2k.c:1.25
--- src/lib/libp2k/p2k.c:1.24	Thu Oct 15 16:41:08 2009
+++ src/lib/libp2k/p2k.c	Sat Oct 17 23:20:15 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: p2k.c,v 1.24 2009/10/15 16:41:08 pooka Exp $	*/
+/*	$NetBSD: p2k.c,v 1.25 2009/10/17 23:20:15 pooka Exp $	*/
 
 /*
  * Copyright (c) 2007, 2008, 2009  Antti Kantee.  All Rights Reserved.
@@ -300,6 +300,7 @@
 
 	PUFFSOP_SET(pops, p2k, node, inactive);
 	PUFFSOP_SET(pops, p2k, node, reclaim);
+	PUFFSOP_SET(pops, p2k, node, abortop);
 
 	dodaemon = true;
 	if (getenv("P2K_DEBUG") != NULL) {
@@ -889,6 +890,29 @@
 	return rv;
 }
 
+int
+p2k_node_abortop(struct puffs_usermount *pu, puffs_cookie_t opc,
+	const struct puffs_cn *pcn)
+{
+	struct p2k_node *p2n_dir = opc;
+	struct componentname *cnp;
+
+	if ((cnp = p2n_dir->p2n_cn) != NULL) {
+		freecn(cnp, 0);
+		p2n_dir->p2n_cn = NULL;
+	}
+	if ((cnp = p2n_dir->p2n_cn_ren_src) != NULL) {
+		freecn(cnp, RUMPCN_FORCEFREE);
+		p2n_dir->p2n_cn_ren_src = NULL;
+	}
+	if ((cnp = p2n_dir->p2n_cn_ren_targ) != NULL) {
+		freecn(cnp, RUMPCN_FORCEFREE);
+		p2n_dir->p2n_cn_ren_targ = NULL;
+	}
+
+	return 0;
+}
+
 static int
 do_nukenode(struct p2k_node *p2n_dir, struct p2k_node *p2n,
 	const struct puffs_cn *pcn,

Reply via email to