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) {