Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/ufs/lfs Remove dubious vhold()/holdrele() from lfs_reser...
details: https://anonhg.NetBSD.org/src/rev/dd07401a1a3c
branches: trunk
changeset: 810964:dd07401a1a3c
user: hannken <hannken%NetBSD.org@localhost>
date: Sat Oct 03 09:31:29 2015 +0000
description:
Remove dubious vhold()/holdrele() from lfs_reserve().
The vnodes are always referenced on entry.
If we changed ulfs_remove() and ulfs_rmdir() to return the locked dvp
the vnodes were always locked on entry.
Remove an outdated comment from lfs_reserveavail(), unlocking/relocking
the vnode was removed in rev 1.49.
diffstat:
sys/ufs/lfs/lfs_bio.c | 35 +++++------------------------------
1 files changed, 5 insertions(+), 30 deletions(-)
diffs (74 lines):
diff -r a662e38e8580 -r dd07401a1a3c sys/ufs/lfs/lfs_bio.c
--- a/sys/ufs/lfs/lfs_bio.c Sat Oct 03 08:30:13 2015 +0000
+++ b/sys/ufs/lfs/lfs_bio.c Sat Oct 03 09:31:29 2015 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: lfs_bio.c,v 1.134 2015/08/12 18:28:01 dholland Exp $ */
+/* $NetBSD: lfs_bio.c,v 1.135 2015/10/03 09:31:29 hannken Exp $ */
/*-
* Copyright (c) 1999, 2000, 2001, 2002, 2003, 2008 The NetBSD Foundation, Inc.
@@ -60,7 +60,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lfs_bio.c,v 1.134 2015/08/12 18:28:01 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lfs_bio.c,v 1.135 2015/10/03 09:31:29 hannken Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -197,19 +197,10 @@
/*
* Try to reserve some blocks, prior to performing a sensitive operation that
- * requires the vnode lock to be honored. If there is not enough space, give
- * up the vnode lock temporarily and wait for the space to become available.
+ * requires the vnode lock to be honored. If there is not enough space, wait
+ * for the space to become available.
*
* Called with vp locked. (Note nowever that if fsb < 0, vp is ignored.)
- *
- * XXX YAMT - it isn't safe to unlock vp here
- * because the node might be modified while we sleep.
- * (eg. cached states like i_offset might be stale,
- * the vnode might be truncated, etc..)
- * maybe we should have a way to restart the vnodeop (EVOPRESTART?)
- * or rearrange vnodeop interface to leave vnode locking to file system
- * specific code so that each file systems can have their own vnode locking and
- * vnode re-using strategies.
*/
static int
lfs_reserveavail(struct lfs *fs, struct vnode *vp,
@@ -301,19 +292,9 @@
mutex_exit(&lfs_lock);
#endif
- /*
- * XXX
- * vref vnodes here so that cleaner doesn't try to reuse them.
- * (see XXX comment in lfs_reserveavail)
- */
- vhold(vp);
- if (vp2 != NULL) {
- vhold(vp2);
- }
-
error = lfs_reserveavail(fs, vp, vp2, fsb);
if (error)
- goto done;
+ return error;
/*
* XXX just a guess. should be more precise.
@@ -322,12 +303,6 @@
if (error)
lfs_reserveavail(fs, vp, vp2, -fsb);
-done:
- holdrele(vp);
- if (vp2 != NULL) {
- holdrele(vp2);
- }
-
return error;
}
Home |
Main Index |
Thread Index |
Old Index