Module Name:    src
Committed By:   hannken
Date:           Tue Oct  6 08:57:34 UTC 2015

Modified Files:
        src/sys/fs/udf: udf_strat_direct.c udf_strat_rmw.c
            udf_strat_sequential.c

Log Message:
Remove dubious vhold()/holdrele() from write_logvol_dscr strategies.

The udf_node already gets locked with UDF_LOCK_NODE() and udf_reclaim()
will wait for the lock to clear.


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/fs/udf/udf_strat_direct.c
cvs rdiff -u -r1.26 -r1.27 src/sys/fs/udf/udf_strat_rmw.c
cvs rdiff -u -r1.13 -r1.14 src/sys/fs/udf/udf_strat_sequential.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/udf/udf_strat_direct.c
diff -u src/sys/fs/udf/udf_strat_direct.c:1.12 src/sys/fs/udf/udf_strat_direct.c:1.13
--- src/sys/fs/udf/udf_strat_direct.c:1.12	Wed Oct 30 08:41:38 2013
+++ src/sys/fs/udf/udf_strat_direct.c	Tue Oct  6 08:57:34 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: udf_strat_direct.c,v 1.12 2013/10/30 08:41:38 mrg Exp $ */
+/* $NetBSD: udf_strat_direct.c,v 1.13 2015/10/06 08:57:34 hannken Exp $ */
 
 /*
  * Copyright (c) 2006, 2008 Reinoud Zandijk
@@ -28,7 +28,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__KERNEL_RCSID(0, "$NetBSD: udf_strat_direct.c,v 1.12 2013/10/30 08:41:38 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: udf_strat_direct.c,v 1.13 2015/10/06 08:57:34 hannken Exp $");
 #endif /* not lint */
 
 
@@ -118,8 +118,6 @@ udf_wr_nodedscr_callback(struct buf *buf
 		UDF_UNLOCK_NODE(udf_node, 0);
 		wakeup(&udf_node->outstanding_nodedscr);
 	}
-	/* unreference the vnode so it can be recycled */
-	holdrele(udf_node->vnode);
 
 	putiobuf(buf);
 }
@@ -208,9 +206,6 @@ udf_write_nodedscr_direct(struct udf_str
 	if (error)
 		goto out;
 
-	/* add reference to the vnode to prevent recycling */
-	vhold(udf_node->vnode);
-
 	if (waitfor) {
 		DPRINTF(WRITE, ("udf_write_nodedscr: sync write\n"));
 
@@ -224,8 +219,6 @@ udf_write_nodedscr_direct(struct udf_str
 		/* will be UNLOCKED in call back */
 		return error;
 	}
-
-	holdrele(udf_node->vnode);
 out:
 	udf_node->outstanding_nodedscr--;
 	if (udf_node->outstanding_nodedscr == 0) {

Index: src/sys/fs/udf/udf_strat_rmw.c
diff -u src/sys/fs/udf/udf_strat_rmw.c:1.26 src/sys/fs/udf/udf_strat_rmw.c:1.27
--- src/sys/fs/udf/udf_strat_rmw.c:1.26	Sat Sep 12 19:50:08 2015
+++ src/sys/fs/udf/udf_strat_rmw.c	Tue Oct  6 08:57:34 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: udf_strat_rmw.c,v 1.26 2015/09/12 19:50:08 christos Exp $ */
+/* $NetBSD: udf_strat_rmw.c,v 1.27 2015/10/06 08:57:34 hannken Exp $ */
 
 /*
  * Copyright (c) 2006, 2008 Reinoud Zandijk
@@ -28,7 +28,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__KERNEL_RCSID(0, "$NetBSD: udf_strat_rmw.c,v 1.26 2015/09/12 19:50:08 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: udf_strat_rmw.c,v 1.27 2015/10/06 08:57:34 hannken Exp $");
 #endif /* not lint */
 
 
@@ -719,9 +719,6 @@ udf_write_nodedscr_rmw(struct udf_strat_
 	if (error)
 		return error;
 
-	/* paranoia: add reference to the vnode to prevent recycling */
-	vhold(udf_node->vnode);
-
 	/* get our eccline */
 	eccline = udf_geteccline(ump, sectornr, 0);
 	eccsect = sectornr - eccline->start_sector;
@@ -761,7 +758,6 @@ udf_write_nodedscr_rmw(struct udf_strat_
 		UDF_UNLOCK_NODE(udf_node, 0);
 		wakeup(&udf_node->outstanding_nodedscr);
 	}
-	holdrele(udf_node->vnode);
 	udf_puteccline(eccline);
 
 	/* XXX waitfor not used */

Index: src/sys/fs/udf/udf_strat_sequential.c
diff -u src/sys/fs/udf/udf_strat_sequential.c:1.13 src/sys/fs/udf/udf_strat_sequential.c:1.14
--- src/sys/fs/udf/udf_strat_sequential.c:1.13	Sun Mar 23 09:34:42 2014
+++ src/sys/fs/udf/udf_strat_sequential.c	Tue Oct  6 08:57:34 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: udf_strat_sequential.c,v 1.13 2014/03/23 09:34:42 christos Exp $ */
+/* $NetBSD: udf_strat_sequential.c,v 1.14 2015/10/06 08:57:34 hannken Exp $ */
 
 /*
  * Copyright (c) 2006, 2008 Reinoud Zandijk
@@ -28,7 +28,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__KERNEL_RCSID(0, "$NetBSD: udf_strat_sequential.c,v 1.13 2014/03/23 09:34:42 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: udf_strat_sequential.c,v 1.14 2015/10/06 08:57:34 hannken Exp $");
 #endif /* not lint */
 
 
@@ -129,9 +129,6 @@ udf_wr_nodedscr_callback(struct buf *buf
 		wakeup(&udf_node->outstanding_nodedscr);
 	}
 
-	/* unreference the vnode so it can be recycled */
-	holdrele(udf_node->vnode);
-
 	putiobuf(buf);
 }
 
@@ -219,9 +216,6 @@ udf_write_logvol_dscr_seq(struct udf_str
 			goto out;
 	}
 
-	/* add reference to the vnode to prevent recycling */
-	vhold(udf_node->vnode);
-
 	if (waitfor) {
 		DPRINTF(WRITE, ("udf_write_logvol_dscr: sync write\n"));
 
@@ -235,8 +229,6 @@ udf_write_logvol_dscr_seq(struct udf_str
 		/* will be UNLOCKED in call back */
 		return error;
 	}
-
-	holdrele(udf_node->vnode);
 out:
 	udf_node->outstanding_nodedscr--;
 	if (udf_node->outstanding_nodedscr == 0) {

Reply via email to