Clean up the usage of vn_start_write(). At least one occurence clobbered
previous error conditions. If "(flags & (V_WAIT|V_PCATCH)) == V_WAIT" the return value is always zero. Ignore the return value in these cases. From Darrin B. Jewell.
This commit is contained in:
parent
ca8c391c95
commit
2ef662a69e
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: nfs_serv.c,v 1.85 2003/10/29 21:28:37 mycroft Exp $ */
|
/* $NetBSD: nfs_serv.c,v 1.86 2003/11/05 10:18:38 hannken Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1989, 1993
|
* Copyright (c) 1989, 1993
|
||||||
@ -55,7 +55,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
__KERNEL_RCSID(0, "$NetBSD: nfs_serv.c,v 1.85 2003/10/29 21:28:37 mycroft Exp $");
|
__KERNEL_RCSID(0, "$NetBSD: nfs_serv.c,v 1.86 2003/11/05 10:18:38 hannken Exp $");
|
||||||
|
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#include <sys/systm.h>
|
#include <sys/systm.h>
|
||||||
@ -1255,7 +1255,7 @@ loop1:
|
|||||||
if (!error) {
|
if (!error) {
|
||||||
if (vn_start_write(vp, &mntp, V_NOWAIT) != 0) {
|
if (vn_start_write(vp, &mntp, V_NOWAIT) != 0) {
|
||||||
VOP_UNLOCK(vp, 0);
|
VOP_UNLOCK(vp, 0);
|
||||||
error = vn_start_write(NULL, &mntp, V_WAIT);
|
vn_start_write(NULL, &mntp, V_WAIT);
|
||||||
vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
|
vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
|
||||||
}
|
}
|
||||||
if (!error) {
|
if (!error) {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: ext2fs_inode.c,v 1.37 2003/10/15 11:29:01 hannken Exp $ */
|
/* $NetBSD: ext2fs_inode.c,v 1.38 2003/11/05 10:18:38 hannken Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1982, 1986, 1989, 1993
|
* Copyright (c) 1982, 1986, 1989, 1993
|
||||||
@ -66,7 +66,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
__KERNEL_RCSID(0, "$NetBSD: ext2fs_inode.c,v 1.37 2003/10/15 11:29:01 hannken Exp $");
|
__KERNEL_RCSID(0, "$NetBSD: ext2fs_inode.c,v 1.38 2003/11/05 10:18:38 hannken Exp $");
|
||||||
|
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#include <sys/systm.h>
|
#include <sys/systm.h>
|
||||||
@ -118,9 +118,7 @@ ext2fs_inactive(v)
|
|||||||
|
|
||||||
error = 0;
|
error = 0;
|
||||||
if (ip->i_e2fs_nlink == 0 && (vp->v_mount->mnt_flag & MNT_RDONLY) == 0) {
|
if (ip->i_e2fs_nlink == 0 && (vp->v_mount->mnt_flag & MNT_RDONLY) == 0) {
|
||||||
error = vn_start_write(vp, &mp, V_WAIT | V_LOWER);
|
vn_start_write(vp, &mp, V_WAIT | V_LOWER);
|
||||||
if (error)
|
|
||||||
return (error);
|
|
||||||
if (ip->i_e2fs_size != 0) {
|
if (ip->i_e2fs_size != 0) {
|
||||||
error = VOP_TRUNCATE(vp, (off_t)0, 0, NOCRED, NULL);
|
error = VOP_TRUNCATE(vp, (off_t)0, 0, NOCRED, NULL);
|
||||||
}
|
}
|
||||||
@ -132,9 +130,7 @@ ext2fs_inactive(v)
|
|||||||
}
|
}
|
||||||
if (ip->i_flag &
|
if (ip->i_flag &
|
||||||
(IN_ACCESS | IN_CHANGE | IN_UPDATE | IN_MODIFIED | IN_ACCESSED)) {
|
(IN_ACCESS | IN_CHANGE | IN_UPDATE | IN_MODIFIED | IN_ACCESSED)) {
|
||||||
error = vn_start_write(vp, &mp, V_WAIT | V_LOWER);
|
vn_start_write(vp, &mp, V_WAIT | V_LOWER);
|
||||||
if (error)
|
|
||||||
return (error);
|
|
||||||
VOP_UPDATE(vp, NULL, NULL, 0);
|
VOP_UPDATE(vp, NULL, NULL, 0);
|
||||||
vn_finished_write(mp, V_LOWER);
|
vn_finished_write(mp, V_LOWER);
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: ffs_vfsops.c,v 1.126 2003/10/30 01:43:10 simonb Exp $ */
|
/* $NetBSD: ffs_vfsops.c,v 1.127 2003/11/05 10:18:38 hannken Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1989, 1991, 1993, 1994
|
* Copyright (c) 1989, 1991, 1993, 1994
|
||||||
@ -32,7 +32,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
__KERNEL_RCSID(0, "$NetBSD: ffs_vfsops.c,v 1.126 2003/10/30 01:43:10 simonb Exp $");
|
__KERNEL_RCSID(0, "$NetBSD: ffs_vfsops.c,v 1.127 2003/11/05 10:18:38 hannken Exp $");
|
||||||
|
|
||||||
#if defined(_KERNEL_OPT)
|
#if defined(_KERNEL_OPT)
|
||||||
#include "opt_ffs.h"
|
#include "opt_ffs.h"
|
||||||
@ -302,8 +302,7 @@ ffs_mount(mp, path, data, ndp, p)
|
|||||||
/*
|
/*
|
||||||
* Changing from r/w to r/o
|
* Changing from r/w to r/o
|
||||||
*/
|
*/
|
||||||
if ((error = vn_start_write(NULL, &mp, V_WAIT)) != 0)
|
vn_start_write(NULL, &mp, V_WAIT);
|
||||||
return (error);
|
|
||||||
flags = WRITECLOSE;
|
flags = WRITECLOSE;
|
||||||
if (mp->mnt_flag & MNT_FORCE)
|
if (mp->mnt_flag & MNT_FORCE)
|
||||||
flags |= FORCECLOSE;
|
flags |= FORCECLOSE;
|
||||||
@ -343,8 +342,7 @@ ffs_mount(mp, path, data, ndp, p)
|
|||||||
if ((fs->fs_flags & FS_DOSOFTDEP) &&
|
if ((fs->fs_flags & FS_DOSOFTDEP) &&
|
||||||
!(mp->mnt_flag & MNT_SOFTDEP) && fs->fs_ronly == 0) {
|
!(mp->mnt_flag & MNT_SOFTDEP) && fs->fs_ronly == 0) {
|
||||||
#ifdef notyet
|
#ifdef notyet
|
||||||
if ((error = vn_start_write(NULL, &mp, V_WAIT)) != 0)
|
vn_start_write(NULL, &mp, V_WAIT);
|
||||||
return (error);
|
|
||||||
flags = WRITECLOSE;
|
flags = WRITECLOSE;
|
||||||
if (mp->mnt_flag & MNT_FORCE)
|
if (mp->mnt_flag & MNT_FORCE)
|
||||||
flags |= FORCECLOSE;
|
flags |= FORCECLOSE;
|
||||||
@ -365,8 +363,7 @@ ffs_mount(mp, path, data, ndp, p)
|
|||||||
if (!(fs->fs_flags & FS_DOSOFTDEP) &&
|
if (!(fs->fs_flags & FS_DOSOFTDEP) &&
|
||||||
(mp->mnt_flag & MNT_SOFTDEP) && fs->fs_ronly == 0) {
|
(mp->mnt_flag & MNT_SOFTDEP) && fs->fs_ronly == 0) {
|
||||||
#ifdef notyet
|
#ifdef notyet
|
||||||
if ((error = vn_start_write(NULL, &mp, V_WAIT)) != 0)
|
vn_start_write(NULL, &mp, V_WAIT);
|
||||||
return (error);
|
|
||||||
flags = WRITECLOSE;
|
flags = WRITECLOSE;
|
||||||
if (mp->mnt_flag & MNT_FORCE)
|
if (mp->mnt_flag & MNT_FORCE)
|
||||||
flags |= FORCECLOSE;
|
flags |= FORCECLOSE;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: ufs_inode.c,v 1.41 2003/10/15 11:29:01 hannken Exp $ */
|
/* $NetBSD: ufs_inode.c,v 1.42 2003/11/05 10:18:38 hannken Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1991, 1993
|
* Copyright (c) 1991, 1993
|
||||||
@ -37,7 +37,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
__KERNEL_RCSID(0, "$NetBSD: ufs_inode.c,v 1.41 2003/10/15 11:29:01 hannken Exp $");
|
__KERNEL_RCSID(0, "$NetBSD: ufs_inode.c,v 1.42 2003/11/05 10:18:38 hannken Exp $");
|
||||||
|
|
||||||
#include "opt_quota.h"
|
#include "opt_quota.h"
|
||||||
|
|
||||||
@ -88,9 +88,7 @@ ufs_inactive(v)
|
|||||||
softdep_releasefile(ip);
|
softdep_releasefile(ip);
|
||||||
|
|
||||||
if (ip->i_nlink <= 0 && (vp->v_mount->mnt_flag & MNT_RDONLY) == 0) {
|
if (ip->i_nlink <= 0 && (vp->v_mount->mnt_flag & MNT_RDONLY) == 0) {
|
||||||
error = vn_start_write(vp, &mp, V_WAIT | V_LOWER);
|
vn_start_write(vp, &mp, V_WAIT | V_LOWER);
|
||||||
if (error)
|
|
||||||
return (error);
|
|
||||||
#ifdef QUOTA
|
#ifdef QUOTA
|
||||||
if (!getinoquota(ip))
|
if (!getinoquota(ip))
|
||||||
(void)chkiq(ip, -1, NOCRED, 0);
|
(void)chkiq(ip, -1, NOCRED, 0);
|
||||||
@ -117,9 +115,7 @@ ufs_inactive(v)
|
|||||||
|
|
||||||
if (ip->i_flag &
|
if (ip->i_flag &
|
||||||
(IN_ACCESS | IN_CHANGE | IN_UPDATE | IN_MODIFIED | IN_ACCESSED)) {
|
(IN_ACCESS | IN_CHANGE | IN_UPDATE | IN_MODIFIED | IN_ACCESSED)) {
|
||||||
error = vn_start_write(vp, &mp, V_WAIT | V_LOWER);
|
vn_start_write(vp, &mp, V_WAIT | V_LOWER);
|
||||||
if (error)
|
|
||||||
return (error);
|
|
||||||
VOP_UPDATE(vp, NULL, NULL, 0);
|
VOP_UPDATE(vp, NULL, NULL, 0);
|
||||||
vn_finished_write(mp, V_LOWER);
|
vn_finished_write(mp, V_LOWER);
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: ufs_quota.c,v 1.29 2003/10/15 11:29:01 hannken Exp $ */
|
/* $NetBSD: ufs_quota.c,v 1.30 2003/11/05 10:18:38 hannken Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1982, 1986, 1990, 1993, 1995
|
* Copyright (c) 1982, 1986, 1990, 1993, 1995
|
||||||
@ -35,7 +35,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
__KERNEL_RCSID(0, "$NetBSD: ufs_quota.c,v 1.29 2003/10/15 11:29:01 hannken Exp $");
|
__KERNEL_RCSID(0, "$NetBSD: ufs_quota.c,v 1.30 2003/11/05 10:18:38 hannken Exp $");
|
||||||
|
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#include <sys/kernel.h>
|
#include <sys/kernel.h>
|
||||||
@ -898,9 +898,7 @@ dqsync(vp, dq)
|
|||||||
return (0);
|
return (0);
|
||||||
if ((dqvp = dq->dq_ump->um_quotas[dq->dq_type]) == NULLVP)
|
if ((dqvp = dq->dq_ump->um_quotas[dq->dq_type]) == NULLVP)
|
||||||
panic("dqsync: file");
|
panic("dqsync: file");
|
||||||
error = vn_start_write(dqvp, &mp, V_WAIT | V_LOWER);
|
vn_start_write(dqvp, &mp, V_WAIT | V_LOWER);
|
||||||
if (error)
|
|
||||||
return (error);
|
|
||||||
if (vp != dqvp)
|
if (vp != dqvp)
|
||||||
vn_lock(dqvp, LK_EXCLUSIVE | LK_RETRY);
|
vn_lock(dqvp, LK_EXCLUSIVE | LK_RETRY);
|
||||||
while (dq->dq_flags & DQ_LOCK) {
|
while (dq->dq_flags & DQ_LOCK) {
|
||||||
|
Loading…
Reference in New Issue
Block a user