aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuoqi Chen <luoqi@FreeBSD.org>1998-09-24 15:02:46 +0000
committerLuoqi Chen <luoqi@FreeBSD.org>1998-09-24 15:02:46 +0000
commite266594c25473c260cf82be38072d6c366572cf5 (patch)
treef6e400d4a57b4ed165e8d1b1b953fbe6c786e2f1
parentde77c428329f35cf16a3cd32b773648ebd384f92 (diff)
Notes
-rw-r--r--contrib/sys/softupdates/ffs_softdep.c3
-rw-r--r--sys/contrib/softupdates/ffs_softdep.c3
-rw-r--r--sys/kern/vfs_extattr.c51
-rw-r--r--sys/kern/vfs_syscalls.c51
-rw-r--r--sys/sys/bio.h4
-rw-r--r--sys/sys/buf.h4
-rw-r--r--sys/ufs/ffs/ffs_softdep.c3
-rw-r--r--sys/ufs/ffs/ffs_vnops.c8
8 files changed, 44 insertions, 83 deletions
diff --git a/contrib/sys/softupdates/ffs_softdep.c b/contrib/sys/softupdates/ffs_softdep.c
index 72104c743abd..83a4fa8fe859 100644
--- a/contrib/sys/softupdates/ffs_softdep.c
+++ b/contrib/sys/softupdates/ffs_softdep.c
@@ -54,7 +54,7 @@
* SUCH DAMAGE.
*
* from: @(#)ffs_softdep.c 9.28 (McKusick) 8/8/98
- * $Id: ffs_softdep.c,v 1.12 1998/06/12 21:21:26 julian Exp $
+ * $Id: ffs_softdep.c,v 1.13 1998/08/12 20:46:47 julian Exp $
*/
/*
@@ -209,6 +209,7 @@ struct bio_ops bioops = {
softdep_disk_io_initiation, /* io_start */
softdep_disk_write_complete, /* io_complete */
softdep_deallocate_dependencies, /* io_deallocate */
+ softdep_fsync, /* io_fsync */
softdep_process_worklist, /* io_sync */
};
diff --git a/sys/contrib/softupdates/ffs_softdep.c b/sys/contrib/softupdates/ffs_softdep.c
index 72104c743abd..83a4fa8fe859 100644
--- a/sys/contrib/softupdates/ffs_softdep.c
+++ b/sys/contrib/softupdates/ffs_softdep.c
@@ -54,7 +54,7 @@
* SUCH DAMAGE.
*
* from: @(#)ffs_softdep.c 9.28 (McKusick) 8/8/98
- * $Id: ffs_softdep.c,v 1.12 1998/06/12 21:21:26 julian Exp $
+ * $Id: ffs_softdep.c,v 1.13 1998/08/12 20:46:47 julian Exp $
*/
/*
@@ -209,6 +209,7 @@ struct bio_ops bioops = {
softdep_disk_io_initiation, /* io_start */
softdep_disk_write_complete, /* io_complete */
softdep_deallocate_dependencies, /* io_deallocate */
+ softdep_fsync, /* io_fsync */
softdep_process_worklist, /* io_sync */
};
diff --git a/sys/kern/vfs_extattr.c b/sys/kern/vfs_extattr.c
index 6ab0ea717b25..ec543ab35700 100644
--- a/sys/kern/vfs_extattr.c
+++ b/sys/kern/vfs_extattr.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_syscalls.c 8.13 (Berkeley) 4/15/94
- * $Id: vfs_syscalls.c,v 1.105 1998/07/15 02:32:13 bde Exp $
+ * $Id: vfs_syscalls.c,v 1.106 1998/09/10 02:27:52 tegge Exp $
*/
/* For 4.3 integer FS ID compatibility */
@@ -1818,10 +1818,7 @@ setfflags(p, vp, flags)
struct vattr vattr;
VOP_LEASE(vp, p, p->p_ucred, LEASE_WRITE);
- if (error = vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p)) {
- return error;
- }
-
+ vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
VATTR_NULL(&vattr);
vattr.va_flags = flags;
error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
@@ -1892,12 +1889,9 @@ setfmode(p, vp, mode)
{
int error;
struct vattr vattr;
- VOP_LEASE(vp, p, p->p_ucred, LEASE_WRITE);
- if (error = vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p)) {
- return error;
- }
-
+ VOP_LEASE(vp, p, p->p_ucred, LEASE_WRITE);
+ vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
VATTR_NULL(&vattr);
vattr.va_mode = mode & ALLPERMS;
error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
@@ -1998,12 +1992,9 @@ setfown(p, vp, uid, gid)
{
int error;
struct vattr vattr;
- VOP_LEASE(vp, p, p->p_ucred, LEASE_WRITE);
- if (error = vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p)) {
- return error;
- }
-
+ VOP_LEASE(vp, p, p->p_ucred, LEASE_WRITE);
+ vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
VATTR_NULL(&vattr);
vattr.va_uid = uid;
vattr.va_gid = gid;
@@ -2115,11 +2106,7 @@ setutimes(p, vp, tv, nullflag)
struct vattr vattr;
VOP_LEASE(vp, p, p->p_ucred, LEASE_WRITE);
-
- if (error = vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p)) {
- return error;
- }
-
+ vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
VATTR_NULL(&vattr);
vattr.va_atime.tv_sec = tv[0].tv_sec;
vattr.va_atime.tv_nsec = tv[0].tv_usec * 1000;
@@ -2421,22 +2408,14 @@ fsync(p, uap)
if (error = getvnode(p->p_fd, SCARG(uap, fd), &fp))
return (error);
vp = (struct vnode *)fp->f_data;
- if ((error = vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p)) == NULL) {
- if (vp->v_object) {
- vm_object_page_clean(vp->v_object, 0, 0, FALSE);
- }
- if (vp->v_mount && (vp->v_mount->mnt_flag & MNT_SOFTDEP)) {
- error = VOP_FSYNC(vp, fp->f_cred, MNT_LAZY, p);
- } else {
- error = VOP_FSYNC(vp, fp->f_cred,
- (vp->v_mount && (vp->v_mount->mnt_flag & MNT_ASYNC)) ?
- MNT_NOWAIT : MNT_WAIT, p);
- }
- VOP_UNLOCK(vp, 0, p);
-
- if ((vp->v_mount->mnt_flag & MNT_SOFTDEP) && bioops.io_sync)
- (*bioops.io_sync)(NULL);
- }
+ vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
+ if (vp->v_object)
+ vm_object_page_clean(vp->v_object, 0, 0, FALSE);
+ if ((error = VOP_FSYNC(vp, fp->f_cred, MNT_WAIT, p)) == 0 &&
+ vp->v_mount && (vp->v_mount->mnt_flag & MNT_SOFTDEP) &&
+ bioops.io_fsync)
+ error = (*bioops.io_fsync)(vp);
+ VOP_UNLOCK(vp, 0, p);
return (error);
}
diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c
index 6ab0ea717b25..ec543ab35700 100644
--- a/sys/kern/vfs_syscalls.c
+++ b/sys/kern/vfs_syscalls.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_syscalls.c 8.13 (Berkeley) 4/15/94
- * $Id: vfs_syscalls.c,v 1.105 1998/07/15 02:32:13 bde Exp $
+ * $Id: vfs_syscalls.c,v 1.106 1998/09/10 02:27:52 tegge Exp $
*/
/* For 4.3 integer FS ID compatibility */
@@ -1818,10 +1818,7 @@ setfflags(p, vp, flags)
struct vattr vattr;
VOP_LEASE(vp, p, p->p_ucred, LEASE_WRITE);
- if (error = vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p)) {
- return error;
- }
-
+ vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
VATTR_NULL(&vattr);
vattr.va_flags = flags;
error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
@@ -1892,12 +1889,9 @@ setfmode(p, vp, mode)
{
int error;
struct vattr vattr;
- VOP_LEASE(vp, p, p->p_ucred, LEASE_WRITE);
- if (error = vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p)) {
- return error;
- }
-
+ VOP_LEASE(vp, p, p->p_ucred, LEASE_WRITE);
+ vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
VATTR_NULL(&vattr);
vattr.va_mode = mode & ALLPERMS;
error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
@@ -1998,12 +1992,9 @@ setfown(p, vp, uid, gid)
{
int error;
struct vattr vattr;
- VOP_LEASE(vp, p, p->p_ucred, LEASE_WRITE);
- if (error = vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p)) {
- return error;
- }
-
+ VOP_LEASE(vp, p, p->p_ucred, LEASE_WRITE);
+ vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
VATTR_NULL(&vattr);
vattr.va_uid = uid;
vattr.va_gid = gid;
@@ -2115,11 +2106,7 @@ setutimes(p, vp, tv, nullflag)
struct vattr vattr;
VOP_LEASE(vp, p, p->p_ucred, LEASE_WRITE);
-
- if (error = vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p)) {
- return error;
- }
-
+ vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
VATTR_NULL(&vattr);
vattr.va_atime.tv_sec = tv[0].tv_sec;
vattr.va_atime.tv_nsec = tv[0].tv_usec * 1000;
@@ -2421,22 +2408,14 @@ fsync(p, uap)
if (error = getvnode(p->p_fd, SCARG(uap, fd), &fp))
return (error);
vp = (struct vnode *)fp->f_data;
- if ((error = vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p)) == NULL) {
- if (vp->v_object) {
- vm_object_page_clean(vp->v_object, 0, 0, FALSE);
- }
- if (vp->v_mount && (vp->v_mount->mnt_flag & MNT_SOFTDEP)) {
- error = VOP_FSYNC(vp, fp->f_cred, MNT_LAZY, p);
- } else {
- error = VOP_FSYNC(vp, fp->f_cred,
- (vp->v_mount && (vp->v_mount->mnt_flag & MNT_ASYNC)) ?
- MNT_NOWAIT : MNT_WAIT, p);
- }
- VOP_UNLOCK(vp, 0, p);
-
- if ((vp->v_mount->mnt_flag & MNT_SOFTDEP) && bioops.io_sync)
- (*bioops.io_sync)(NULL);
- }
+ vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
+ if (vp->v_object)
+ vm_object_page_clean(vp->v_object, 0, 0, FALSE);
+ if ((error = VOP_FSYNC(vp, fp->f_cred, MNT_WAIT, p)) == 0 &&
+ vp->v_mount && (vp->v_mount->mnt_flag & MNT_SOFTDEP) &&
+ bioops.io_fsync)
+ error = (*bioops.io_fsync)(vp);
+ VOP_UNLOCK(vp, 0, p);
return (error);
}
diff --git a/sys/sys/bio.h b/sys/sys/bio.h
index ad4aa3bedfae..606b0eb64a1c 100644
--- a/sys/sys/bio.h
+++ b/sys/sys/bio.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)buf.h 8.9 (Berkeley) 3/30/95
- * $Id: buf.h,v 1.55 1998/09/05 14:13:12 phk Exp $
+ * $Id: buf.h,v 1.56 1998/09/15 08:55:01 gibbs Exp $
*/
#ifndef _SYS_BUF_H_
@@ -48,6 +48,7 @@
struct buf;
struct mount;
+struct vnode;
/*
* To avoid including <ufs/ffs/softdep.h>
@@ -63,6 +64,7 @@ extern struct bio_ops {
void (*io_start) __P((struct buf *));
void (*io_complete) __P((struct buf *));
void (*io_deallocate) __P((struct buf *));
+ int (*io_fsync) __P((struct vnode *));
int (*io_sync) __P((struct mount *));
} bioops;
diff --git a/sys/sys/buf.h b/sys/sys/buf.h
index ad4aa3bedfae..606b0eb64a1c 100644
--- a/sys/sys/buf.h
+++ b/sys/sys/buf.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)buf.h 8.9 (Berkeley) 3/30/95
- * $Id: buf.h,v 1.55 1998/09/05 14:13:12 phk Exp $
+ * $Id: buf.h,v 1.56 1998/09/15 08:55:01 gibbs Exp $
*/
#ifndef _SYS_BUF_H_
@@ -48,6 +48,7 @@
struct buf;
struct mount;
+struct vnode;
/*
* To avoid including <ufs/ffs/softdep.h>
@@ -63,6 +64,7 @@ extern struct bio_ops {
void (*io_start) __P((struct buf *));
void (*io_complete) __P((struct buf *));
void (*io_deallocate) __P((struct buf *));
+ int (*io_fsync) __P((struct vnode *));
int (*io_sync) __P((struct mount *));
} bioops;
diff --git a/sys/ufs/ffs/ffs_softdep.c b/sys/ufs/ffs/ffs_softdep.c
index 72104c743abd..83a4fa8fe859 100644
--- a/sys/ufs/ffs/ffs_softdep.c
+++ b/sys/ufs/ffs/ffs_softdep.c
@@ -54,7 +54,7 @@
* SUCH DAMAGE.
*
* from: @(#)ffs_softdep.c 9.28 (McKusick) 8/8/98
- * $Id: ffs_softdep.c,v 1.12 1998/06/12 21:21:26 julian Exp $
+ * $Id: ffs_softdep.c,v 1.13 1998/08/12 20:46:47 julian Exp $
*/
/*
@@ -209,6 +209,7 @@ struct bio_ops bioops = {
softdep_disk_io_initiation, /* io_start */
softdep_disk_write_complete, /* io_complete */
softdep_deallocate_dependencies, /* io_deallocate */
+ softdep_fsync, /* io_fsync */
softdep_process_worklist, /* io_sync */
};
diff --git a/sys/ufs/ffs/ffs_vnops.c b/sys/ufs/ffs/ffs_vnops.c
index b2fe80f952e7..093c625fa878 100644
--- a/sys/ufs/ffs/ffs_vnops.c
+++ b/sys/ufs/ffs/ffs_vnops.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ffs_vnops.c 8.15 (Berkeley) 5/14/95
- * $Id: ffs_vnops.c,v 1.50 1998/06/10 19:27:56 julian Exp $
+ * $Id: ffs_vnops.c,v 1.51 1998/09/07 11:50:19 bde Exp $
*/
#include <sys/param.h>
@@ -249,9 +249,5 @@ loop2:
}
splx(s);
getmicrotime(&tv);
- if ((error = UFS_UPDATE(vp, &tv, &tv, ap->a_waitfor == MNT_WAIT)) != 0)
- return (error);
- if (DOINGSOFTDEP(vp) && ap->a_waitfor == MNT_WAIT)
- error = softdep_fsync(vp);
- return (error);
+ return (UFS_UPDATE(vp, &tv, &tv, ap->a_waitfor == MNT_WAIT));
}