CVS commit: src/sys/fs/sysvbfs

2015-11-13 Thread Antti Kantee
Module Name:src
Committed By:   pooka
Date:   Fri Nov 13 13:36:54 UTC 2015

Modified Files:
src/sys/fs/sysvbfs: sysvbfs_vnops.c

Log Message:
Fix bug in readdir loop condition.

Reading all dirents using a small buffer and multiple calls now works.

Bug found by "Shamar" on #rumpkernel


To generate a diff of this commit:
cvs rdiff -u -r1.58 -r1.59 src/sys/fs/sysvbfs/sysvbfs_vnops.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/sysvbfs/sysvbfs_vnops.c
diff -u src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.58 src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.59
--- src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.58	Sat Apr  4 13:28:36 2015
+++ src/sys/fs/sysvbfs/sysvbfs_vnops.c	Fri Nov 13 13:36:54 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysvbfs_vnops.c,v 1.58 2015/04/04 13:28:36 riastradh Exp $	*/
+/*	$NetBSD: sysvbfs_vnops.c,v 1.59 2015/11/13 13:36:54 pooka Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: sysvbfs_vnops.c,v 1.58 2015/04/04 13:28:36 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sysvbfs_vnops.c,v 1.59 2015/11/13 13:36:54 pooka Exp $");
 
 #include 
 #include 
@@ -642,15 +642,18 @@ sysvbfs_readdir(void *v)
 	if ((i + n) > bfs->n_dirent)
 		n = bfs->n_dirent - i;
 
-	for (file = >dirent[i]; i < n; file++) {
-		if (file->inode == 0)
-			continue;
+	DPRINTF("%s 1: %d %d %d\n", __func__, i, n, bfs->n_dirent);
+	for (file = >dirent[i]; n > 0; file++, i++) {
 		if (i == bfs->max_dirent) {
 			DPRINTF("%s: file system inconsistent.\n",
 			__func__);
 			break;
 		}
-		i++;
+		if (file->inode == 0)
+			continue;
+
+		/* ok, we have a live one here */
+		n--;
 		memset(dp, 0, sizeof(struct dirent));
 		dp->d_fileno = file->inode;
 		dp->d_type = file->inode == BFS_ROOT_INODE ? DT_DIR : DT_REG;
@@ -663,7 +666,7 @@ sysvbfs_readdir(void *v)
 			return error;
 		}
 	}
-	DPRINTF("%s: %d %d %d\n", __func__, i, n, bfs->n_dirent);
+	DPRINTF("%s 2: %d %d %d\n", __func__, i, n, bfs->n_dirent);
 	*ap->a_eofflag = (i == bfs->n_dirent);
 
 	free(dp, M_BFS);



CVS commit: src/sys/fs/sysvbfs

2015-04-04 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Sat Apr  4 13:28:36 UTC 2015

Modified Files:
src/sys/fs/sysvbfs: sysvbfs_vnops.c

Log Message:
Make sure err is initialized.


To generate a diff of this commit:
cvs rdiff -u -r1.57 -r1.58 src/sys/fs/sysvbfs/sysvbfs_vnops.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/sysvbfs/sysvbfs_vnops.c
diff -u src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.57 src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.58
--- src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.57	Sat Apr  4 12:34:45 2015
+++ src/sys/fs/sysvbfs/sysvbfs_vnops.c	Sat Apr  4 13:28:36 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysvbfs_vnops.c,v 1.57 2015/04/04 12:34:45 riastradh Exp $	*/
+/*	$NetBSD: sysvbfs_vnops.c,v 1.58 2015/04/04 13:28:36 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.57 2015/04/04 12:34:45 riastradh Exp $);
+__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.58 2015/04/04 13:28:36 riastradh Exp $);
 
 #include sys/param.h
 #include sys/kernel.h
@@ -439,6 +439,7 @@ sysvbfs_read(void *arg)
 		return EINVAL;
 	}
 
+	err = 0;
 	while (uio-uio_resid  0) {
 		if ((sz = MIN(filesz - uio-uio_offset, uio-uio_resid)) == 0)
 			break;



CVS commit: src/sys/fs/sysvbfs

2015-01-02 Thread Juergen Hannken-Illjes
Module Name:src
Committed By:   hannken
Date:   Fri Jan  2 16:51:02 UTC 2015

Modified Files:
src/sys/fs/sysvbfs: sysvbfs_vfsops.c

Log Message:
Add forgotten memset() to clear sysvbfs nodes before setting them up.


To generate a diff of this commit:
cvs rdiff -u -r1.45 -r1.46 src/sys/fs/sysvbfs/sysvbfs_vfsops.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/sysvbfs/sysvbfs_vfsops.c
diff -u src/sys/fs/sysvbfs/sysvbfs_vfsops.c:1.45 src/sys/fs/sysvbfs/sysvbfs_vfsops.c:1.46
--- src/sys/fs/sysvbfs/sysvbfs_vfsops.c:1.45	Fri Dec 26 15:23:21 2014
+++ src/sys/fs/sysvbfs/sysvbfs_vfsops.c	Fri Jan  2 16:51:02 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysvbfs_vfsops.c,v 1.45 2014/12/26 15:23:21 hannken Exp $	*/
+/*	$NetBSD: sysvbfs_vfsops.c,v 1.46 2015/01/02 16:51:02 hannken Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: sysvbfs_vfsops.c,v 1.45 2014/12/26 15:23:21 hannken Exp $);
+__KERNEL_RCSID(0, $NetBSD: sysvbfs_vfsops.c,v 1.46 2015/01/02 16:51:02 hannken Exp $);
 
 #include sys/types.h
 #include sys/param.h
@@ -336,6 +336,7 @@ sysvbfs_loadvnode(struct mount *mp, stru
 	}
 
 	bnode = pool_get(sysvbfs_node_pool, PR_WAITOK);
+	memset(bnode, 0, sizeof(*bnode));
 
 	vp-v_tag = VT_SYSVBFS;
 	vp-v_op = sysvbfs_vnodeop_p;



CVS commit: src/sys/fs/sysvbfs

2014-12-26 Thread Juergen Hannken-Illjes
Module Name:src
Committed By:   hannken
Date:   Fri Dec 26 15:22:15 UTC 2014

Modified Files:
src/sys/fs/sysvbfs: bfs.c sysvbfs_vnops.c

Log Message:
Sysvbfs_rename: Call bfs_file_delete(bfs, to_name, true) before calling
bfs_file_rename() and remove the bfs_file_delete() from bfs_file_rename().

After calling bfs_file_rename() it was too late to set tnode-removed
as the inode already disappeared.


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/sys/fs/sysvbfs/bfs.c
cvs rdiff -u -r1.54 -r1.55 src/sys/fs/sysvbfs/sysvbfs_vnops.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/sysvbfs/bfs.c
diff -u src/sys/fs/sysvbfs/bfs.c:1.17 src/sys/fs/sysvbfs/bfs.c:1.18
--- src/sys/fs/sysvbfs/bfs.c:1.17	Thu Jan  9 13:23:57 2014
+++ src/sys/fs/sysvbfs/bfs.c	Fri Dec 26 15:22:15 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: bfs.c,v 1.17 2014/01/09 13:23:57 hannken Exp $	*/
+/*	$NetBSD: bfs.c,v 1.18 2014/12/26 15:22:15 hannken Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include sys/cdefs.h
 
-__KERNEL_RCSID(0, $NetBSD: bfs.c,v 1.17 2014/01/09 13:23:57 hannken Exp $);
+__KERNEL_RCSID(0, $NetBSD: bfs.c,v 1.18 2014/12/26 15:22:15 hannken Exp $);
 #define	BFS_DEBUG
 
 #include sys/param.h
@@ -344,7 +344,6 @@ bfs_file_rename(struct bfs *bfs, const c
 		goto out;
 	}
 
-	bfs_file_delete(bfs, to_name, false);
 	strncpy(dirent-name, to_name, BFS_FILENAME_MAXLEN);
 	bfs_writeback_dirent(bfs, dirent, false);
 

Index: src/sys/fs/sysvbfs/sysvbfs_vnops.c
diff -u src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.54 src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.55
--- src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.54	Fri Aug  8 19:14:45 2014
+++ src/sys/fs/sysvbfs/sysvbfs_vnops.c	Fri Dec 26 15:22:15 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysvbfs_vnops.c,v 1.54 2014/08/08 19:14:45 gson Exp $	*/
+/*	$NetBSD: sysvbfs_vnops.c,v 1.55 2014/12/26 15:22:15 hannken Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.54 2014/08/08 19:14:45 gson Exp $);
+__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.55 2014/12/26 15:22:15 hannken Exp $);
 
 #include sys/param.h
 #include sys/kernel.h
@@ -581,21 +581,23 @@ sysvbfs_rename(void *arg)
 		goto out;
 	}
 
+	/*
+	 * Remove the target if it exists.
+	 */
+	if (tvp != NULL) {
+		error = bfs_file_delete(bfs, to_name, true);
+		if (error)
+			goto out;
+	}
 	error = bfs_file_rename(bfs, from_name, to_name);
  out:
-	if (tvp) {
-		if (error == 0) {
-			struct sysvbfs_node *tbnode = tvp-v_data;
-			tbnode-removed = 1;
-		}
-		vput(tvp);
-	}
-
 	/* tdvp == tvp probably can't happen with this fs, but safety first */
 	if (tdvp == tvp)
 		vrele(tdvp);
 	else
 		vput(tdvp);
+	if (tvp)
+		vput(tvp);
 
 	vrele(fdvp);
 	vrele(fvp);



CVS commit: src/sys/fs/sysvbfs

2014-12-26 Thread Juergen Hannken-Illjes
Module Name:src
Committed By:   hannken
Date:   Fri Dec 26 15:23:21 UTC 2014

Modified Files:
src/sys/fs/sysvbfs: sysvbfs.c sysvbfs.h sysvbfs_vfsops.c
sysvbfs_vnops.c

Log Message:
Change sysvbfs to vcache.


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/sys/fs/sysvbfs/sysvbfs.c
cvs rdiff -u -r1.9 -r1.10 src/sys/fs/sysvbfs/sysvbfs.h
cvs rdiff -u -r1.44 -r1.45 src/sys/fs/sysvbfs/sysvbfs_vfsops.c
cvs rdiff -u -r1.55 -r1.56 src/sys/fs/sysvbfs/sysvbfs_vnops.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/sysvbfs/sysvbfs.c
diff -u src/sys/fs/sysvbfs/sysvbfs.c:1.14 src/sys/fs/sysvbfs/sysvbfs.c:1.15
--- src/sys/fs/sysvbfs/sysvbfs.c:1.14	Fri Jul 25 08:20:52 2014
+++ src/sys/fs/sysvbfs/sysvbfs.c	Fri Dec 26 15:23:21 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysvbfs.c,v 1.14 2014/07/25 08:20:52 dholland Exp $	*/
+/*	$NetBSD: sysvbfs.c,v 1.15 2014/12/26 15:23:21 hannken Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: sysvbfs.c,v 1.14 2014/07/25 08:20:52 dholland Exp $);
+__KERNEL_RCSID(0, $NetBSD: sysvbfs.c,v 1.15 2014/12/26 15:23:21 hannken Exp $);
 
 #include sys/resource.h
 #include sys/param.h
@@ -121,6 +121,7 @@ struct vfsops sysvbfs_vfsops = {
 	.vfs_statvfs = sysvbfs_statvfs,
 	.vfs_sync = sysvbfs_sync,
 	.vfs_vget = sysvbfs_vget,
+	.vfs_loadvnode = sysvbfs_loadvnode,
 	.vfs_fhtovp = sysvbfs_fhtovp,
 	.vfs_vptofh = sysvbfs_vptofh,
 	.vfs_init = sysvbfs_init,

Index: src/sys/fs/sysvbfs/sysvbfs.h
diff -u src/sys/fs/sysvbfs/sysvbfs.h:1.9 src/sys/fs/sysvbfs/sysvbfs.h:1.10
--- src/sys/fs/sysvbfs/sysvbfs.h:1.9	Thu May 27 23:40:12 2010
+++ src/sys/fs/sysvbfs/sysvbfs.h	Fri Dec 26 15:23:21 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysvbfs.h,v 1.9 2010/05/27 23:40:12 pooka Exp $	*/
+/*	$NetBSD: sysvbfs.h,v 1.10 2014/12/26 15:23:21 hannken Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -53,15 +53,12 @@ struct sysvbfs_node {
 	int update_atime;
 	int update_mtime;
 	int removed;
-
-	LIST_ENTRY(sysvbfs_node) link;
 };
 
 struct sysvbfs_mount {
 	struct mount *mountp;
 	struct vnode *devvp;		/* block device mounted vnode */
 	struct bfs *bfs;
-	LIST_HEAD(, sysvbfs_node) bnode_head;
 };
 
 /* v-node ops. */

Index: src/sys/fs/sysvbfs/sysvbfs_vfsops.c
diff -u src/sys/fs/sysvbfs/sysvbfs_vfsops.c:1.44 src/sys/fs/sysvbfs/sysvbfs_vfsops.c:1.45
--- src/sys/fs/sysvbfs/sysvbfs_vfsops.c:1.44	Sun Dec  7 23:48:04 2014
+++ src/sys/fs/sysvbfs/sysvbfs_vfsops.c	Fri Dec 26 15:23:21 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysvbfs_vfsops.c,v 1.44 2014/12/07 23:48:04 justin Exp $	*/
+/*	$NetBSD: sysvbfs_vfsops.c,v 1.45 2014/12/26 15:23:21 hannken Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: sysvbfs_vfsops.c,v 1.44 2014/12/07 23:48:04 justin Exp $);
+__KERNEL_RCSID(0, $NetBSD: sysvbfs_vfsops.c,v 1.45 2014/12/26 15:23:21 hannken Exp $);
 
 #include sys/types.h
 #include sys/param.h
@@ -189,7 +189,6 @@ sysvbfs_mountfs(struct vnode *devvp, str
 		VOP_CLOSE(devvp, oflags, NOCRED);
 		goto out;
 	}
-	LIST_INIT(bmp-bnode_head);
 
 	mp-mnt_data = bmp;
 	mp-mnt_stat.f_fsidx.__fsid_val[0] = (long)devvp-v_rdev;
@@ -289,89 +288,58 @@ sysvbfs_statvfs(struct mount *mp, struct
 int
 sysvbfs_sync(struct mount *mp, int waitfor, kauth_cred_t cred)
 {
-	struct sysvbfs_mount *bmp = mp-mnt_data;
-	struct sysvbfs_node *bnode;
-	struct vnode *v;
+	struct vnode_iterator *marker;
+	struct vnode *vp;
 	int err, error;
 
 	DPRINTF(%s:\n, __func__);
 	error = 0;
-	mutex_enter(mntvnode_lock);
-	for (bnode = LIST_FIRST(bmp-bnode_head); bnode != NULL;
-	bnode = LIST_NEXT(bnode, link)) {
-		v = bnode-vnode;
-		mutex_enter(v-v_interlock);
-		mutex_exit(mntvnode_lock);
-		err = vget(v, LK_EXCLUSIVE | LK_NOWAIT);
-		if (err == 0) {
-			err = VOP_FSYNC(v, cred, FSYNC_WAIT, 0, 0);
-			vput(v);
+	vfs_vnode_iterator_init(mp, marker);
+	while ((vp = vfs_vnode_iterator_next(marker, NULL, NULL)) != NULL) {
+		err = vn_lock(vp, LK_EXCLUSIVE);
+		if (err) {
+			vrele(vp);
+			continue;
 		}
+		err = VOP_FSYNC(vp, cred, FSYNC_WAIT, 0, 0);
+		vput(vp);
 		if (err != 0)
 			error = err;
-		mutex_enter(mntvnode_lock);
 	}
-	mutex_exit(mntvnode_lock);
+	vfs_vnode_iterator_destroy(marker);
 
 	return error;
 }
 
 int
-sysvbfs_vget(struct mount *mp, ino_t ino, struct vnode **vpp)
+sysvbfs_loadvnode(struct mount *mp, struct vnode *vp,
+const void *key, size_t key_len, const void **new_key)
 {
-	struct sysvbfs_mount *bmp = mp-mnt_data;
-	struct bfs *bfs = bmp-bfs;
-	struct vnode *vp;
+	struct sysvbfs_mount *bmp;
+	struct bfs *bfs;
 	struct sysvbfs_node *bnode;
 	struct bfs_inode *inode;
-	int error;
+	uint16_t ino;
+
+	KASSERT(key_len == sizeof(ino));
+	memcpy(ino, key, key_len);
+
+	DPRINTF(%s: i-node=%u\n, __func__, ino);
+
+	bmp = 

CVS commit: src/sys/fs/sysvbfs

2014-12-07 Thread Justin Cormack
Module Name:src
Committed By:   justin
Date:   Sun Dec  7 23:48:04 UTC 2014

Modified Files:
src/sys/fs/sysvbfs: sysvbfs_vfsops.c

Log Message:
Simplify control flow

Removes a variable and compiler warnings in some cases.


To generate a diff of this commit:
cvs rdiff -u -r1.43 -r1.44 src/sys/fs/sysvbfs/sysvbfs_vfsops.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/sysvbfs/sysvbfs_vfsops.c
diff -u src/sys/fs/sysvbfs/sysvbfs_vfsops.c:1.43 src/sys/fs/sysvbfs/sysvbfs_vfsops.c:1.44
--- src/sys/fs/sysvbfs/sysvbfs_vfsops.c:1.43	Wed Apr 16 18:55:19 2014
+++ src/sys/fs/sysvbfs/sysvbfs_vfsops.c	Sun Dec  7 23:48:04 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysvbfs_vfsops.c,v 1.43 2014/04/16 18:55:19 maxv Exp $	*/
+/*	$NetBSD: sysvbfs_vfsops.c,v 1.44 2014/12/07 23:48:04 justin Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: sysvbfs_vfsops.c,v 1.43 2014/04/16 18:55:19 maxv Exp $);
+__KERNEL_RCSID(0, $NetBSD: sysvbfs_vfsops.c,v 1.44 2014/12/07 23:48:04 justin Exp $);
 
 #include sys/types.h
 #include sys/param.h
@@ -168,7 +168,6 @@ sysvbfs_mountfs(struct vnode *devvp, str
 	kauth_cred_t cred = l-l_cred;
 	struct sysvbfs_mount *bmp;
 	int error, oflags;
-	bool devopen = false;
 
 	vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY);
 	error = vinvalbuf(devvp, V_SAVE, cred, l, 0, 0);
@@ -181,13 +180,13 @@ sysvbfs_mountfs(struct vnode *devvp, str
 		oflags |= FWRITE;
 	if ((error = VOP_OPEN(devvp, oflags, NOCRED)) != 0)
 		goto out;
-	devopen = true;
 
 	bmp = malloc(sizeof(*bmp), M_SYSVBFS_VFS, M_WAITOK | M_ZERO);
 	bmp-devvp = devvp;
 	bmp-mountp = mp;
 	if ((error = sysvbfs_bfs_init(bmp-bfs, devvp)) != 0) {
 		free(bmp, M_SYSVBFS_VFS);
+		VOP_CLOSE(devvp, oflags, NOCRED);
 		goto out;
 	}
 	LIST_INIT(bmp-bnode_head);
@@ -202,8 +201,6 @@ sysvbfs_mountfs(struct vnode *devvp, str
 	mp-mnt_fs_bshift = BFS_BSHIFT;
 
  out:
-	if (devopen  error)
-		VOP_CLOSE(devvp, oflags, NOCRED);
 	VOP_UNLOCK(devvp);
 	return error;
 }



CVS commit: src/sys/fs/sysvbfs

2014-08-08 Thread Andreas Gustafsson
Module Name:src
Committed By:   gson
Date:   Fri Aug  8 19:14:45 UTC 2014

Modified Files:
src/sys/fs/sysvbfs: sysvbfs_vnops.c

Log Message:
Whitespace fix


To generate a diff of this commit:
cvs rdiff -u -r1.53 -r1.54 src/sys/fs/sysvbfs/sysvbfs_vnops.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/sysvbfs/sysvbfs_vnops.c
diff -u src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.53 src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.54
--- src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.53	Fri Feb  7 15:29:21 2014
+++ src/sys/fs/sysvbfs/sysvbfs_vnops.c	Fri Aug  8 19:14:45 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysvbfs_vnops.c,v 1.53 2014/02/07 15:29:21 hannken Exp $	*/
+/*	$NetBSD: sysvbfs_vnops.c,v 1.54 2014/08/08 19:14:45 gson Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.53 2014/02/07 15:29:21 hannken Exp $);
+__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.54 2014/08/08 19:14:45 gson Exp $);
 
 #include sys/param.h
 #include sys/kernel.h
@@ -450,7 +450,7 @@ sysvbfs_read(void *arg)
 		DPRINTF(%s: read %ldbyte\n, __func__, sz);
 	}
 
-	return  sysvbfs_update(v, NULL, NULL, UPDATE_WAIT);
+	return sysvbfs_update(v, NULL, NULL, UPDATE_WAIT);
 }
 
 int



CVS commit: src/sys/fs/sysvbfs

2013-12-25 Thread Michael van Elst
Module Name:src
Committed By:   mlelstv
Date:   Wed Dec 25 11:15:49 UTC 2013

Modified Files:
src/sys/fs/sysvbfs: sysvbfs_vfsops.c

Log Message:
At least fetch mount data pointer before using it.
Coverity CID 274767


To generate a diff of this commit:
cvs rdiff -u -r1.41 -r1.42 src/sys/fs/sysvbfs/sysvbfs_vfsops.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/sysvbfs/sysvbfs_vfsops.c
diff -u src/sys/fs/sysvbfs/sysvbfs_vfsops.c:1.41 src/sys/fs/sysvbfs/sysvbfs_vfsops.c:1.42
--- src/sys/fs/sysvbfs/sysvbfs_vfsops.c:1.41	Thu Jun 14 01:08:22 2012
+++ src/sys/fs/sysvbfs/sysvbfs_vfsops.c	Wed Dec 25 11:15:49 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysvbfs_vfsops.c,v 1.41 2012/06/14 01:08:22 agc Exp $	*/
+/*	$NetBSD: sysvbfs_vfsops.c,v 1.42 2013/12/25 11:15:49 mlelstv Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: sysvbfs_vfsops.c,v 1.41 2012/06/14 01:08:22 agc Exp $);
+__KERNEL_RCSID(0, $NetBSD: sysvbfs_vfsops.c,v 1.42 2013/12/25 11:15:49 mlelstv Exp $);
 
 #include sys/types.h
 #include sys/param.h
@@ -81,7 +81,7 @@ sysvbfs_mount(struct mount *mp, const ch
 		return EINVAL;
 
 	if (mp-mnt_flag  MNT_GETARGS) {
-		if ((bmp = (void *)mp-mnt_data) == NULL)
+		if ((bmp = (struct sysvbfs_mount *)mp-mnt_data) == NULL)
 			return EIO;
 		args-fspec = NULL;
 		*data_len = sizeof *args;
@@ -116,6 +116,7 @@ sysvbfs_mount(struct mount *mp, const ch
 			 * Be sure we're still naming the same device
 			 * used for our initial mount
 			 */
+			bmp = (struct sysvbfs_mount *)mp-mnt_data;
 			if (devvp != bmp-devvp)
 error = EINVAL;
 		}



CVS commit: src/sys/fs/sysvbfs

2013-12-24 Thread Juergen Hannken-Illjes
Module Name:src
Committed By:   hannken
Date:   Tue Dec 24 09:56:18 UTC 2013

Modified Files:
src/sys/fs/sysvbfs: sysvbfs_vnops.c

Log Message:
It is not the task of sysvbfs_open() to check for unlinked nodes.


To generate a diff of this commit:
cvs rdiff -u -r1.48 -r1.49 src/sys/fs/sysvbfs/sysvbfs_vnops.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/sysvbfs/sysvbfs_vnops.c
diff -u src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.48 src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.49
--- src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.48	Wed May 15 16:44:03 2013
+++ src/sys/fs/sysvbfs/sysvbfs_vnops.c	Tue Dec 24 09:56:18 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysvbfs_vnops.c,v 1.48 2013/05/15 16:44:03 pooka Exp $	*/
+/*	$NetBSD: sysvbfs_vnops.c,v 1.49 2013/12/24 09:56:18 hannken Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.48 2013/05/15 16:44:03 pooka Exp $);
+__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.49 2013/12/24 09:56:18 hannken Exp $);
 
 #include sys/param.h
 #include sys/kernel.h
@@ -185,14 +185,10 @@ sysvbfs_open(void *arg)
 	struct vnode *v = a-a_vp;
 	struct sysvbfs_node *bnode = v-v_data;
 	struct bfs_inode *inode = bnode-inode;
-	struct bfs *bfs = bnode-bmp-bfs;
-	struct bfs_dirent *dirent;
 
 	DPRINTF(%s:\n, __func__);
 	KDASSERT(v-v_type == VREG || v-v_type == VDIR);
 
-	if (!bfs_dirent_lookup_by_inode(bfs, inode-number, dirent))
-		return ENOENT;
 	bnode-update_atime = true;
 	if ((a-a_mode  FWRITE)  !(a-a_mode  O_APPEND)) {
 		bnode-size = 0;



CVS commit: src/sys/fs/sysvbfs

2013-05-15 Thread Antti Kantee
Module Name:src
Committed By:   pooka
Date:   Wed May 15 16:44:03 UTC 2013

Modified Files:
src/sys/fs/sysvbfs: sysvbfs_vnops.c

Log Message:
Don't change a read-only file system.


To generate a diff of this commit:
cvs rdiff -u -r1.47 -r1.48 src/sys/fs/sysvbfs/sysvbfs_vnops.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/sysvbfs/sysvbfs_vnops.c
diff -u src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.47 src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.48
--- src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.47	Mon Mar 18 19:35:40 2013
+++ src/sys/fs/sysvbfs/sysvbfs_vnops.c	Wed May 15 16:44:03 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysvbfs_vnops.c,v 1.47 2013/03/18 19:35:40 plunky Exp $	*/
+/*	$NetBSD: sysvbfs_vnops.c,v 1.48 2013/05/15 16:44:03 pooka Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.47 2013/03/18 19:35:40 plunky Exp $);
+__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.48 2013/05/15 16:44:03 pooka Exp $);
 
 #include sys/param.h
 #include sys/kernel.h
@@ -218,6 +218,10 @@ sysvbfs_close(void *arg)
 	struct bfs_fileattr attr;
 
 	DPRINTF(%s:\n, __func__);
+
+	if (v-v_mount-mnt_flag  MNT_RDONLY)
+		goto out;
+
 	uvm_vnp_setsize(v, bnode-size);
 
 	memset(attr, 0xff, sizeof attr);	/* Set VNOVAL all */
@@ -231,6 +235,7 @@ sysvbfs_close(void *arg)
 
 	VOP_FSYNC(a-a_vp, a-a_cred, FSYNC_WAIT, 0, 0);
 
+ out:
 	return 0;
 }
 
@@ -877,6 +882,9 @@ sysvbfs_update(struct vnode *vp, const s
 	struct sysvbfs_node *bnode = vp-v_data;
 	struct bfs_fileattr attr;
 
+	if (vp-v_mount-mnt_flag  MNT_RDONLY)
+		return 0;
+
 	DPRINTF(%s:\n, __func__);
 	memset(attr, 0xff, sizeof attr);	/* Set VNOVAL all */
 	if (bnode-update_atime) {



CVS commit: src/sys/fs/sysvbfs

2012-06-13 Thread Alistair G. Crooks
Module Name:src
Committed By:   agc
Date:   Thu Jun 14 01:08:22 UTC 2012

Modified Files:
src/sys/fs/sysvbfs: sysvbfs_vfsops.c

Log Message:
calculate inode capacities using the correct values


To generate a diff of this commit:
cvs rdiff -u -r1.40 -r1.41 src/sys/fs/sysvbfs/sysvbfs_vfsops.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/sysvbfs/sysvbfs_vfsops.c
diff -u src/sys/fs/sysvbfs/sysvbfs_vfsops.c:1.40 src/sys/fs/sysvbfs/sysvbfs_vfsops.c:1.41
--- src/sys/fs/sysvbfs/sysvbfs_vfsops.c:1.40	Wed Jun 13 22:56:50 2012
+++ src/sys/fs/sysvbfs/sysvbfs_vfsops.c	Thu Jun 14 01:08:22 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysvbfs_vfsops.c,v 1.40 2012/06/13 22:56:50 joerg Exp $	*/
+/*	$NetBSD: sysvbfs_vfsops.c,v 1.41 2012/06/14 01:08:22 agc Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: sysvbfs_vfsops.c,v 1.40 2012/06/13 22:56:50 joerg Exp $);
+__KERNEL_RCSID(0, $NetBSD: sysvbfs_vfsops.c,v 1.41 2012/06/14 01:08:22 agc Exp $);
 
 #include sys/types.h
 #include sys/param.h
@@ -277,8 +277,8 @@ sysvbfs_statvfs(struct mount *mp, struct
 	f-f_bfree = free_block;
 	f-f_bavail = f-f_bfree;
 	f-f_bresvd = 0;
-	f-f_files = bfs-n_inode;
-	f-f_ffree = bfs-max_inode - f-f_files;
+	f-f_files = bfs-max_inode;
+	f-f_ffree = bfs-max_inode - bfs-n_inode;
 	f-f_favail = f-f_ffree;
 	f-f_fresvd = 0;
 	copy_statvfs_info(f, mp);



CVS commit: src/sys/fs/sysvbfs

2012-06-11 Thread Alistair G. Crooks
Module Name:src
Committed By:   agc
Date:   Mon Jun 11 21:11:41 UTC 2012

Modified Files:
src/sys/fs/sysvbfs: bfs.c sysvbfs_vnops.c

Log Message:
cosmetic change: fix two casts to be of the appropriate type


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/sys/fs/sysvbfs/bfs.c
cvs rdiff -u -r1.45 -r1.46 src/sys/fs/sysvbfs/sysvbfs_vnops.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/sysvbfs/bfs.c
diff -u src/sys/fs/sysvbfs/bfs.c:1.15 src/sys/fs/sysvbfs/bfs.c:1.16
--- src/sys/fs/sysvbfs/bfs.c:1.15	Tue May  8 14:28:55 2012
+++ src/sys/fs/sysvbfs/bfs.c	Mon Jun 11 21:11:40 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: bfs.c,v 1.15 2012/05/08 14:28:55 tsutsui Exp $	*/
+/*	$NetBSD: bfs.c,v 1.16 2012/06/11 21:11:40 agc Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include sys/cdefs.h
 
-__KERNEL_RCSID(0, $NetBSD: bfs.c,v 1.15 2012/05/08 14:28:55 tsutsui Exp $);
+__KERNEL_RCSID(0, $NetBSD: bfs.c,v 1.16 2012/06/11 21:11:40 agc Exp $);
 #define	BFS_DEBUG
 
 #include sys/param.h
@@ -629,7 +629,7 @@ bfs_inode_set_attr(const struct bfs *bfs
 	if (from != NULL) {
 		if (from-uid != (uid_t)-1)
 			to-uid = from-uid;
-		if (from-gid != (uid_t)-1)
+		if (from-gid != (gid_t)-1)
 			to-gid = from-gid;
 		if (from-mode != (mode_t)-1)
 			to-mode = from-mode;

Index: src/sys/fs/sysvbfs/sysvbfs_vnops.c
diff -u src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.45 src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.46
--- src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.45	Tue May  8 14:28:55 2012
+++ src/sys/fs/sysvbfs/sysvbfs_vnops.c	Mon Jun 11 21:11:41 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysvbfs_vnops.c,v 1.45 2012/05/08 14:28:55 tsutsui Exp $	*/
+/*	$NetBSD: sysvbfs_vnops.c,v 1.46 2012/06/11 21:11:41 agc Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.45 2012/05/08 14:28:55 tsutsui Exp $);
+__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.46 2012/06/11 21:11:41 agc Exp $);
 
 #include sys/param.h
 #include sys/kernel.h
@@ -350,7 +350,7 @@ sysvbfs_setattr(void *arg)
 	if (vap-va_flags != VNOVAL)
 		return EOPNOTSUPP;
 
-	if (vap-va_uid != (uid_t)VNOVAL || vap-va_gid != (uid_t)VNOVAL) {
+	if (vap-va_uid != (uid_t)VNOVAL || vap-va_gid != (gid_t)VNOVAL) {
 		uid_t uid =
 		(vap-va_uid != (uid_t)VNOVAL) ? vap-va_uid : attr-uid;
 		gid_t gid =



CVS commit: src/sys/fs/sysvbfs

2012-05-08 Thread Izumi Tsutsui
Module Name:src
Committed By:   tsutsui
Date:   Tue May  8 14:28:55 UTC 2012

Modified Files:
src/sys/fs/sysvbfs: bfs.c bfs.h sysvbfs_vnops.c

Log Message:
Move bfs_file_setsize() from bfs.c to sysvbfs_vnops.c
(and rename it to sysvbfs_file_setsize()) because it's actually
part of vnode ops and bfs.c is also pulled by standalone bootloaders
which don't want vnode header mess.


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/sys/fs/sysvbfs/bfs.c
cvs rdiff -u -r1.6 -r1.7 src/sys/fs/sysvbfs/bfs.h
cvs rdiff -u -r1.44 -r1.45 src/sys/fs/sysvbfs/sysvbfs_vnops.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/sysvbfs/bfs.c
diff -u src/sys/fs/sysvbfs/bfs.c:1.14 src/sys/fs/sysvbfs/bfs.c:1.15
--- src/sys/fs/sysvbfs/bfs.c:1.14	Sun Mar 18 02:40:55 2012
+++ src/sys/fs/sysvbfs/bfs.c	Tue May  8 14:28:55 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: bfs.c,v 1.14 2012/03/18 02:40:55 christos Exp $	*/
+/*	$NetBSD: bfs.c,v 1.15 2012/05/08 14:28:55 tsutsui Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include sys/cdefs.h
 
-__KERNEL_RCSID(0, $NetBSD: bfs.c,v 1.14 2012/03/18 02:40:55 christos Exp $);
+__KERNEL_RCSID(0, $NetBSD: bfs.c,v 1.15 2012/05/08 14:28:55 tsutsui Exp $);
 #define	BFS_DEBUG
 
 #include sys/param.h
@@ -57,7 +57,6 @@ MALLOC_JUSTDEFINE(M_BFS, sysvbfs core,
 #define	__FREE(a, s, t)		free(a)
 #endif
 #include fs/sysvbfs/bfs.h
-#include fs/sysvbfs/sysvbfs.h
 
 #ifdef BFS_DEBUG
 #define	DPRINTF(on, fmt, args...)	if (on) printf(fmt, ##args)
@@ -507,21 +506,6 @@ bfs_file_lookup(const struct bfs *bfs, c
 	return true;
 }
 
-void
-bfs_file_setsize(struct vnode *v, size_t size)
-{
-	struct sysvbfs_node *bnode = v-v_data;
-	struct bfs_inode *inode = bnode-inode;
-
-	bnode-size = size;
-	uvm_vnp_setsize(v, bnode-size);
-	inode-end_sector = bnode-data_block +
-	(ROUND_SECTOR(bnode-size)  DEV_BSHIFT) - 1;
-	inode-eof_offset_byte = bnode-data_block * DEV_BSIZE +
-	bnode-size - 1;
-	bnode-update_mtime = true;
-}
-
 bool
 bfs_dirent_lookup_by_inode(const struct bfs *bfs, int inode,
 struct bfs_dirent **dirent)

Index: src/sys/fs/sysvbfs/bfs.h
diff -u src/sys/fs/sysvbfs/bfs.h:1.6 src/sys/fs/sysvbfs/bfs.h:1.7
--- src/sys/fs/sysvbfs/bfs.h:1.6	Sun Mar 18 02:40:55 2012
+++ src/sys/fs/sysvbfs/bfs.h	Tue May  8 14:28:55 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: bfs.h,v 1.6 2012/03/18 02:40:55 christos Exp $	*/
+/*	$NetBSD: bfs.h,v 1.7 2012/05/08 14:28:55 tsutsui Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -155,7 +155,6 @@ int bfs_file_rename(struct bfs *, const 
 bool bfs_file_lookup(const struct bfs *, const char *, int *, int *,
 size_t *);
 size_t bfs_file_size(const struct bfs_inode *);
-void bfs_file_setsize(struct vnode *, size_t);
 
 bool bfs_dump(const struct bfs *);
 

Index: src/sys/fs/sysvbfs/sysvbfs_vnops.c
diff -u src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.44 src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.45
--- src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.44	Sun Apr 29 22:53:59 2012
+++ src/sys/fs/sysvbfs/sysvbfs_vnops.c	Tue May  8 14:28:55 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysvbfs_vnops.c,v 1.44 2012/04/29 22:53:59 chs Exp $	*/
+/*	$NetBSD: sysvbfs_vnops.c,v 1.45 2012/05/08 14:28:55 tsutsui Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.44 2012/04/29 22:53:59 chs Exp $);
+__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.45 2012/05/08 14:28:55 tsutsui Exp $);
 
 #include sys/param.h
 #include sys/kernel.h
@@ -60,6 +60,8 @@ __KERNEL_RCSID(0, $NetBSD: sysvbfs_vnop
 MALLOC_JUSTDEFINE(M_SYSVBFS_VNODE, sysvbfs vnode, sysvbfs vnode structures);
 MALLOC_DECLARE(M_BFS);
 
+static void sysvbfs_file_setsize(struct vnode *, size_t);
+
 int
 sysvbfs_lookup(void *arg)
 {
@@ -373,7 +375,7 @@ sysvbfs_setattr(void *arg)
 		case VREG:
 			if (vp-v_mount-mnt_flag  MNT_RDONLY)
 return EROFS;
-			bfs_file_setsize(vp, vap-va_size);
+			sysvbfs_file_setsize(vp, vap-va_size);
 			break;
 		default:
 			return EOPNOTSUPP;
@@ -479,7 +481,7 @@ sysvbfs_write(void *arg)
 		return 0;
 
 	if (bnode-size  uio-uio_offset + uio-uio_resid) {
-		bfs_file_setsize(v, uio-uio_offset + uio-uio_resid);
+		sysvbfs_file_setsize(v, uio-uio_offset + uio-uio_resid);
 		extended = true;
 	}
 
@@ -492,7 +494,7 @@ sysvbfs_write(void *arg)
 		DPRINTF(%s: write %ldbyte\n, __func__, sz);
 	}
 	if (err)
-		bfs_file_setsize(v, bnode-size - uio-uio_resid);
+		sysvbfs_file_setsize(v, bnode-size - uio-uio_resid);
 
 	VN_KNOTE(v, NOTE_WRITE | (extended ? NOTE_EXTEND : 0));
 
@@ -893,3 +895,18 @@ sysvbfs_update(struct vnode *vp, const s
 
 	return 0;
 }
+
+static void
+sysvbfs_file_setsize(struct vnode *v, size_t size)
+{
+	struct sysvbfs_node *bnode = v-v_data;
+	struct bfs_inode *inode = bnode-inode;
+
+	bnode-size = size;
+	uvm_vnp_setsize(v, bnode-size);
+	inode-end_sector = 

CVS commit: src/sys/fs/sysvbfs

2012-03-30 Thread Nicolas Joly
Module Name:src
Committed By:   njoly
Date:   Fri Mar 30 18:27:55 UTC 2012

Modified Files:
src/sys/fs/sysvbfs: sysvbfs_vnops.c

Log Message:
sysvbfs do not support file flags; fail with EOPNOTSUPP.


To generate a diff of this commit:
cvs rdiff -u -r1.42 -r1.43 src/sys/fs/sysvbfs/sysvbfs_vnops.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/sysvbfs/sysvbfs_vnops.c
diff -u src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.42 src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.43
--- src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.42	Sun Mar 18 02:40:55 2012
+++ src/sys/fs/sysvbfs/sysvbfs_vnops.c	Fri Mar 30 18:27:55 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysvbfs_vnops.c,v 1.42 2012/03/18 02:40:55 christos Exp $	*/
+/*	$NetBSD: sysvbfs_vnops.c,v 1.43 2012/03/30 18:27:55 njoly Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.42 2012/03/18 02:40:55 christos Exp $);
+__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.43 2012/03/30 18:27:55 njoly Exp $);
 
 #include sys/param.h
 #include sys/kernel.h
@@ -345,6 +345,9 @@ sysvbfs_setattr(void *arg)
 	((int)vap-va_bytes != VNOVAL) || (vap-va_gen != VNOVAL))
 		return EINVAL;
 
+	if (vap-va_flags != VNOVAL)
+		return EOPNOTSUPP;
+
 	if (vap-va_uid != (uid_t)VNOVAL || vap-va_gid != (uid_t)VNOVAL) {
 		uid_t uid =
 		(vap-va_uid != (uid_t)VNOVAL) ? vap-va_uid : attr-uid;



CVS commit: src/sys/fs/sysvbfs

2012-03-17 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Sun Mar 18 02:40:56 UTC 2012

Modified Files:
src/sys/fs/sysvbfs: bfs.c bfs.h sysvbfs_vnops.c

Log Message:
handle file resizing.


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/sys/fs/sysvbfs/bfs.c
cvs rdiff -u -r1.5 -r1.6 src/sys/fs/sysvbfs/bfs.h
cvs rdiff -u -r1.41 -r1.42 src/sys/fs/sysvbfs/sysvbfs_vnops.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/sysvbfs/bfs.c
diff -u src/sys/fs/sysvbfs/bfs.c:1.13 src/sys/fs/sysvbfs/bfs.c:1.14
--- src/sys/fs/sysvbfs/bfs.c:1.13	Mon Jul 26 09:43:26 2010
+++ src/sys/fs/sysvbfs/bfs.c	Sat Mar 17 22:40:55 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: bfs.c,v 1.13 2010/07/26 13:43:26 njoly Exp $	*/
+/*	$NetBSD: bfs.c,v 1.14 2012/03/18 02:40:55 christos Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include sys/cdefs.h
 
-__KERNEL_RCSID(0, $NetBSD: bfs.c,v 1.13 2010/07/26 13:43:26 njoly Exp $);
+__KERNEL_RCSID(0, $NetBSD: bfs.c,v 1.14 2012/03/18 02:40:55 christos Exp $);
 #define	BFS_DEBUG
 
 #include sys/param.h
@@ -57,6 +57,7 @@ MALLOC_JUSTDEFINE(M_BFS, sysvbfs core,
 #define	__FREE(a, s, t)		free(a)
 #endif
 #include fs/sysvbfs/bfs.h
+#include fs/sysvbfs/sysvbfs.h
 
 #ifdef BFS_DEBUG
 #define	DPRINTF(on, fmt, args...)	if (on) printf(fmt, ##args)
@@ -506,6 +507,21 @@ bfs_file_lookup(const struct bfs *bfs, c
 	return true;
 }
 
+void
+bfs_file_setsize(struct vnode *v, size_t size)
+{
+	struct sysvbfs_node *bnode = v-v_data;
+	struct bfs_inode *inode = bnode-inode;
+
+	bnode-size = size;
+	uvm_vnp_setsize(v, bnode-size);
+	inode-end_sector = bnode-data_block +
+	(ROUND_SECTOR(bnode-size)  DEV_BSHIFT) - 1;
+	inode-eof_offset_byte = bnode-data_block * DEV_BSIZE +
+	bnode-size - 1;
+	bnode-update_mtime = true;
+}
+
 bool
 bfs_dirent_lookup_by_inode(const struct bfs *bfs, int inode,
 struct bfs_dirent **dirent)

Index: src/sys/fs/sysvbfs/bfs.h
diff -u src/sys/fs/sysvbfs/bfs.h:1.5 src/sys/fs/sysvbfs/bfs.h:1.6
--- src/sys/fs/sysvbfs/bfs.h:1.5	Mon Apr 28 16:24:02 2008
+++ src/sys/fs/sysvbfs/bfs.h	Sat Mar 17 22:40:55 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: bfs.h,v 1.5 2008/04/28 20:24:02 martin Exp $	*/
+/*	$NetBSD: bfs.h,v 1.6 2012/03/18 02:40:55 christos Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -142,6 +142,8 @@ struct sector_io_ops {
 	bool (*write_n)(void *, uint8_t *, daddr_t, int);
 };
 
+struct vnode;
+
 int bfs_init2(struct bfs **, int, struct sector_io_ops *, bool);
 void bfs_fini(struct bfs *);
 int bfs_file_read(const struct bfs *, const char *, void *, size_t, size_t *);
@@ -153,10 +155,11 @@ int bfs_file_rename(struct bfs *, const 
 bool bfs_file_lookup(const struct bfs *, const char *, int *, int *,
 size_t *);
 size_t bfs_file_size(const struct bfs_inode *);
+void bfs_file_setsize(struct vnode *, size_t);
+
 bool bfs_dump(const struct bfs *);
 
 /* filesystem ops */
-struct vnode;
 int sysvbfs_bfs_init(struct bfs **, struct vnode *);
 void sysvbfs_bfs_fini(struct bfs *);
 bool bfs_inode_lookup(const struct bfs *, ino_t, struct bfs_inode **);

Index: src/sys/fs/sysvbfs/sysvbfs_vnops.c
diff -u src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.41 src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.42
--- src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.41	Tue Mar 13 14:40:50 2012
+++ src/sys/fs/sysvbfs/sysvbfs_vnops.c	Sat Mar 17 22:40:55 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysvbfs_vnops.c,v 1.41 2012/03/13 18:40:50 elad Exp $	*/
+/*	$NetBSD: sysvbfs_vnops.c,v 1.42 2012/03/18 02:40:55 christos Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.41 2012/03/13 18:40:50 elad Exp $);
+__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.42 2012/03/18 02:40:55 christos Exp $);
 
 #include sys/param.h
 #include sys/kernel.h
@@ -359,11 +359,28 @@ sysvbfs_setattr(void *arg)
 		attr-gid = gid;
 	}
 
+	if (vap-va_size != VNOVAL)
+		switch (vp-v_type) {
+		case VDIR:
+			return EISDIR;
+		case VCHR:
+		case VBLK:
+		case VFIFO:
+			break;
+		case VREG:
+			if (vp-v_mount-mnt_flag  MNT_RDONLY)
+return EROFS;
+			bfs_file_setsize(vp, vap-va_size);
+			break;
+		default:
+			return EOPNOTSUPP;
+		}
+
 	if (vap-va_mode != (mode_t)VNOVAL) {
 		mode_t mode = vap-va_mode;
 		error = kauth_authorize_vnode(cred, KAUTH_VNODE_WRITE_SECURITY,
-		vp, NULL, genfs_can_chmod(vp-v_type, cred, attr-uid, attr-gid,
-		mode));
+		vp, NULL, genfs_can_chmod(vp-v_type, cred, attr-uid,
+		attr-gid, mode));
 		if (error)
 			return error;
 		attr-mode = mode;
@@ -373,7 +390,8 @@ sysvbfs_setattr(void *arg)
 	(vap-va_mtime.tv_sec != VNOVAL) ||
 	(vap-va_ctime.tv_sec != VNOVAL)) {
 		error = kauth_authorize_vnode(cred, KAUTH_VNODE_WRITE_TIMES, vp,
-		NULL, genfs_can_chtimes(vp, vap-va_vaflags, attr-uid, cred));
+		NULL, genfs_can_chtimes(vp, vap-va_vaflags, 

CVS commit: src/sys/fs/sysvbfs

2012-01-27 Thread Nicolas Joly
Module Name:src
Committed By:   njoly
Date:   Fri Jan 27 21:46:42 UTC 2012

Modified Files:
src/sys/fs/sysvbfs: sysvbfs_vnops.c

Log Message:
Check credentials when setting uid, gid or mode attributes.


To generate a diff of this commit:
cvs rdiff -u -r1.39 -r1.40 src/sys/fs/sysvbfs/sysvbfs_vnops.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/sysvbfs/sysvbfs_vnops.c
diff -u src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.39 src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.40
--- src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.39	Mon Dec 12 19:11:21 2011
+++ src/sys/fs/sysvbfs/sysvbfs_vnops.c	Fri Jan 27 21:46:42 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysvbfs_vnops.c,v 1.39 2011/12/12 19:11:21 njoly Exp $	*/
+/*	$NetBSD: sysvbfs_vnops.c,v 1.40 2012/01/27 21:46:42 njoly Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.39 2011/12/12 19:11:21 njoly Exp $);
+__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.40 2012/01/27 21:46:42 njoly Exp $);
 
 #include sys/param.h
 #include sys/kernel.h
@@ -331,6 +331,8 @@ sysvbfs_setattr(void *arg)
 	struct bfs_inode *inode = bnode-inode;
 	struct bfs_fileattr *attr = inode-attr;
 	struct bfs *bfs = bnode-bmp-bfs;
+	kauth_cred_t cred = ap-a_cred;
+	int error;
 
 	DPRINTF(%s:\n, __func__);
 	if (vp-v_mount-mnt_flag  MNT_RDONLY)
@@ -342,12 +344,30 @@ sysvbfs_setattr(void *arg)
 	((int)vap-va_bytes != VNOVAL) || (vap-va_gen != VNOVAL))
 		return EINVAL;
 
-	if (vap-va_uid != (uid_t)VNOVAL)
-		attr-uid = vap-va_uid;
-	if (vap-va_gid != (uid_t)VNOVAL)
-		attr-gid = vap-va_gid;
-	if (vap-va_mode != (mode_t)VNOVAL)
-		attr-mode = vap-va_mode;
+	if (vap-va_uid != (uid_t)VNOVAL || vap-va_gid != (uid_t)VNOVAL) {
+		uid_t uid =
+		(vap-va_uid != (uid_t)VNOVAL) ? vap-va_uid : attr-uid;
+		gid_t gid =
+		(vap-va_gid != (gid_t)VNOVAL) ? vap-va_gid : attr-gid;
+		error = kauth_authorize_vnode(cred,
+		KAUTH_VNODE_CHANGE_OWNERSHIP, vp, NULL,
+		genfs_can_chown(vp, cred, attr-uid, attr-gid, uid, gid));
+		if (error)
+			return error;
+		attr-uid = uid;
+		attr-gid = gid;
+	}
+
+	if (vap-va_mode != (mode_t)VNOVAL) {
+		mode_t mode = vap-va_mode;
+		error = kauth_authorize_vnode(cred, KAUTH_VNODE_WRITE_SECURITY,
+		vp, NULL, genfs_can_chmod(vp, cred, attr-uid, attr-gid,
+		mode));
+		if (error)
+			return error;
+		attr-mode = mode;
+	}
+
 	if (vap-va_atime.tv_sec != VNOVAL)
 		attr-atime = vap-va_atime.tv_sec;
 	if (vap-va_mtime.tv_sec != VNOVAL)



CVS commit: src/sys/fs/sysvbfs

2011-11-13 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Sun Nov 13 23:07:11 UTC 2011

Modified Files:
src/sys/fs/sysvbfs: sysvbfs_vfsops.c

Log Message:
remove unused call to DIOCGPART that was only used for debugging.
malloc M_WAITOK, does not fail.


To generate a diff of this commit:
cvs rdiff -u -r1.37 -r1.38 src/sys/fs/sysvbfs/sysvbfs_vfsops.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/sysvbfs/sysvbfs_vfsops.c
diff -u src/sys/fs/sysvbfs/sysvbfs_vfsops.c:1.37 src/sys/fs/sysvbfs/sysvbfs_vfsops.c:1.38
--- src/sys/fs/sysvbfs/sysvbfs_vfsops.c:1.37	Wed Jul 13 15:51:29 2011
+++ src/sys/fs/sysvbfs/sysvbfs_vfsops.c	Sun Nov 13 18:07:11 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysvbfs_vfsops.c,v 1.37 2011/07/13 19:51:29 njoly Exp $	*/
+/*	$NetBSD: sysvbfs_vfsops.c,v 1.38 2011/11/13 23:07:11 christos Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: sysvbfs_vfsops.c,v 1.37 2011/07/13 19:51:29 njoly Exp $);
+__KERNEL_RCSID(0, $NetBSD: sysvbfs_vfsops.c,v 1.38 2011/11/13 23:07:11 christos Exp $);
 
 #include sys/types.h
 #include sys/param.h
@@ -39,7 +39,6 @@ __KERNEL_RCSID(0, $NetBSD: sysvbfs_vfso
 #include sys/time.h
 #include sys/ucred.h
 #include sys/mount.h
-#include sys/disklabel.h
 #include sys/fcntl.h
 #include sys/malloc.h
 #include sys/kauth.h
@@ -163,7 +162,6 @@ sysvbfs_mountfs(struct vnode *devvp, str
 {
 	kauth_cred_t cred = l-l_cred;
 	struct sysvbfs_mount *bmp;
-	struct partinfo dpart;
 	int error, oflags;
 	bool devopen = false;
 
@@ -180,16 +178,7 @@ sysvbfs_mountfs(struct vnode *devvp, str
 		goto out;
 	devopen = true;
 
-	/* Get partition information */
-	if ((error = VOP_IOCTL(devvp, DIOCGPART, dpart, FREAD, cred)) != 0) {
-		goto out;
-	}
-
-	bmp = malloc(sizeof(struct sysvbfs_mount), M_SYSVBFS_VFS, M_WAITOK);
-	if (bmp == NULL) {
-		error = ENOMEM;
-		goto out;
-	}
+	bmp = malloc(sizeof(*bmp), M_SYSVBFS_VFS, M_WAITOK | M_ZERO);
 	bmp-devvp = devvp;
 	bmp-mountp = mp;
 	if ((error = sysvbfs_bfs_init(bmp-bfs, devvp)) != 0) {
@@ -207,10 +196,6 @@ sysvbfs_mountfs(struct vnode *devvp, str
 	mp-mnt_dev_bshift = BFS_BSHIFT;
 	mp-mnt_fs_bshift = BFS_BSHIFT;
 
-	DPRINTF(%s: fstype=%d dtype=%d bsize=%d\n, __func__,
-	dpart.part-p_fstype, dpart.disklab-d_type,
-	dpart.disklab-d_secsize);
-
  out:
 	if (devopen  error)
 		VOP_CLOSE(devvp, oflags, NOCRED);



CVS commit: src/sys/fs/sysvbfs

2011-07-13 Thread Nicolas Joly
Module Name:src
Committed By:   njoly
Date:   Wed Jul 13 19:51:29 UTC 2011

Modified Files:
src/sys/fs/sysvbfs: sysvbfs_vfsops.c

Log Message:
Add function name to a few debug messages.


To generate a diff of this commit:
cvs rdiff -u -r1.36 -r1.37 src/sys/fs/sysvbfs/sysvbfs_vfsops.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/sysvbfs/sysvbfs_vfsops.c
diff -u src/sys/fs/sysvbfs/sysvbfs_vfsops.c:1.36 src/sys/fs/sysvbfs/sysvbfs_vfsops.c:1.37
--- src/sys/fs/sysvbfs/sysvbfs_vfsops.c:1.36	Sun Jun 12 03:35:54 2011
+++ src/sys/fs/sysvbfs/sysvbfs_vfsops.c	Wed Jul 13 19:51:29 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysvbfs_vfsops.c,v 1.36 2011/06/12 03:35:54 rmind Exp $	*/
+/*	$NetBSD: sysvbfs_vfsops.c,v 1.37 2011/07/13 19:51:29 njoly Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: sysvbfs_vfsops.c,v 1.36 2011/06/12 03:35:54 rmind Exp $);
+__KERNEL_RCSID(0, $NetBSD: sysvbfs_vfsops.c,v 1.37 2011/07/13 19:51:29 njoly Exp $);
 
 #include sys/types.h
 #include sys/param.h
@@ -207,8 +207,9 @@
 	mp-mnt_dev_bshift = BFS_BSHIFT;
 	mp-mnt_fs_bshift = BFS_BSHIFT;
 
-	DPRINTF(fstype=%d dtype=%d bsize=%d\n, dpart.part-p_fstype,
-	dpart.disklab-d_type, dpart.disklab-d_secsize);
+	DPRINTF(%s: fstype=%d dtype=%d bsize=%d\n, __func__,
+	dpart.part-p_fstype, dpart.disklab-d_type,
+	dpart.disklab-d_secsize);
 
  out:
 	if (devopen  error)
@@ -341,7 +342,7 @@
 	DPRINTF(%s: i-node=%lld\n, __func__, (long long)ino);
 	/* Lookup requested i-node */
 	if (!bfs_inode_lookup(bfs, ino, inode)) {
-		DPRINTF(bfs_inode_lookup failed.\n);
+		DPRINTF(%s: bfs_inode_lookup failed.\n, __func__);
 		return ENOENT;
 	}
 



CVS commit: src/sys/fs/sysvbfs

2011-01-31 Thread Nicolas Joly
Module Name:src
Committed By:   njoly
Date:   Mon Jan 31 18:48:50 UTC 2011

Modified Files:
src/sys/fs/sysvbfs: sysvbfs_vnops.c

Log Message:
In sysvbfs_lookup(), deny last component write operation on a
read-only mount.
Fix PR/44302: sysvbfs allows unlink on fs mounted MNT_RDONLY.

Reviewed by pooka.


To generate a diff of this commit:
cvs rdiff -u -r1.35 -r1.36 src/sys/fs/sysvbfs/sysvbfs_vnops.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/sysvbfs/sysvbfs_vnops.c
diff -u src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.35 src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.36
--- src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.35	Tue Nov 30 10:43:04 2010
+++ src/sys/fs/sysvbfs/sysvbfs_vnops.c	Mon Jan 31 18:48:50 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysvbfs_vnops.c,v 1.35 2010/11/30 10:43:04 dholland Exp $	*/
+/*	$NetBSD: sysvbfs_vnops.c,v 1.36 2011/01/31 18:48:50 njoly Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.35 2010/11/30 10:43:04 dholland Exp $);
+__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.36 2011/01/31 18:48:50 njoly Exp $);
 
 #include sys/param.h
 #include sys/kernel.h
@@ -85,10 +85,16 @@
 	*a-a_vpp = NULL;
 
 	KASSERT((cnp-cn_flags  ISDOTDOT) == 0);
+
 	if ((error = VOP_ACCESS(a-a_dvp, VEXEC, cnp-cn_cred)) != 0) {
 		return error;	/* directory permission. */
 	}
 
+	/* Deny last component write operation on a read-only mount */
+	if ((cnp-cn_flags  ISLASTCN)  (v-v_mount-mnt_flag  MNT_RDONLY) 
+	(cnp-cn_nameiop == DELETE || cnp-cn_nameiop == RENAME))
+		return EROFS;
+
 	if (namelen == 1  name[0] == '.') {	/* . */
 		vref(v);
 		*a-a_vpp = v;



CVS commit: src/sys/fs/sysvbfs

2010-07-26 Thread Nicolas Joly
Module Name:src
Committed By:   njoly
Date:   Mon Jul 26 13:43:26 UTC 2010

Modified Files:
src/sys/fs/sysvbfs: bfs.c

Log Message:
Make sysvbfs rename work for filenames longer than {NAME_MAX}.


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/fs/sysvbfs/bfs.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/sysvbfs/bfs.c
diff -u src/sys/fs/sysvbfs/bfs.c:1.12 src/sys/fs/sysvbfs/bfs.c:1.13
--- src/sys/fs/sysvbfs/bfs.c:1.12	Sun Apr 26 12:41:59 2009
+++ src/sys/fs/sysvbfs/bfs.c	Mon Jul 26 13:43:26 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: bfs.c,v 1.12 2009/04/26 12:41:59 uch Exp $	*/
+/*	$NetBSD: bfs.c,v 1.13 2010/07/26 13:43:26 njoly Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include sys/cdefs.h
 
-__KERNEL_RCSID(0, $NetBSD: bfs.c,v 1.12 2009/04/26 12:41:59 uch Exp $);
+__KERNEL_RCSID(0, $NetBSD: bfs.c,v 1.13 2010/07/26 13:43:26 njoly Exp $);
 #define	BFS_DEBUG
 
 #include sys/param.h
@@ -337,10 +337,6 @@
 	struct bfs_dirent *dirent;
 	int err = 0;
 
-	if (strlen(to_name)  BFS_FILENAME_MAXLEN) {
-		err =  ENAMETOOLONG;
-		goto out;
-	}
 	if (!bfs_dirent_lookup_by_name(bfs, from_name, dirent)) {
 		err = ENOENT;
 		goto out;



CVS commit: src/sys/fs/sysvbfs

2010-07-16 Thread Nicolas Joly
Module Name:src
Committed By:   njoly
Date:   Fri Jul 16 23:41:01 UTC 2010

Modified Files:
src/sys/fs/sysvbfs: sysvbfs_vnops.c

Log Message:
Small typo in comment.


To generate a diff of this commit:
cvs rdiff -u -r1.31 -r1.32 src/sys/fs/sysvbfs/sysvbfs_vnops.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/sysvbfs/sysvbfs_vnops.c
diff -u src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.31 src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.32
--- src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.31	Thu Jun 24 13:03:10 2010
+++ src/sys/fs/sysvbfs/sysvbfs_vnops.c	Fri Jul 16 23:41:01 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysvbfs_vnops.c,v 1.31 2010/06/24 13:03:10 hannken Exp $	*/
+/*	$NetBSD: sysvbfs_vnops.c,v 1.32 2010/07/16 23:41:01 njoly Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.31 2010/06/24 13:03:10 hannken Exp $);
+__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.32 2010/07/16 23:41:01 njoly Exp $);
 
 #include sys/param.h
 #include sys/kernel.h
@@ -87,7 +87,7 @@
 
 	KASSERT((cnp-cn_flags  ISDOTDOT) == 0);
 	if ((error = VOP_ACCESS(a-a_dvp, VEXEC, cnp-cn_cred)) != 0) {
-		return error;	/* directory permittion. */
+		return error;	/* directory permission. */
 	}
 
 	if (namelen == 1  name[0] == '.') {	/* . */



CVS commit: src/sys/fs/sysvbfs

2010-07-16 Thread Nicolas Joly
Module Name:src
Committed By:   njoly
Date:   Sat Jul 17 00:13:42 UTC 2010

Modified Files:
src/sys/fs/sysvbfs: sysvbfs_vnops.c

Log Message:
Fix build with SYSVBFS_VNOPS_DEBUG.


To generate a diff of this commit:
cvs rdiff -u -r1.32 -r1.33 src/sys/fs/sysvbfs/sysvbfs_vnops.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/sysvbfs/sysvbfs_vnops.c
diff -u src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.32 src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.33
--- src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.32	Fri Jul 16 23:41:01 2010
+++ src/sys/fs/sysvbfs/sysvbfs_vnops.c	Sat Jul 17 00:13:42 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysvbfs_vnops.c,v 1.32 2010/07/16 23:41:01 njoly Exp $	*/
+/*	$NetBSD: sysvbfs_vnops.c,v 1.33 2010/07/17 00:13:42 njoly Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.32 2010/07/16 23:41:01 njoly Exp $);
+__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.33 2010/07/17 00:13:42 njoly Exp $);
 
 #include sys/param.h
 #include sys/kernel.h
@@ -574,7 +574,7 @@
 	struct bfs_dirent *file;
 	int i, n, error;
 
-	DPRINTF(%s: offset=%lld residue=%d\n, __func__,
+	DPRINTF(%s: offset=% PRId64  residue=%zu\n, __func__,
 	uio-uio_offset, uio-uio_resid);
 
 	KDASSERT(vp-v_type == VDIR);
@@ -682,7 +682,8 @@
 
 	*a-a_vpp = bmp-devvp;
 	*a-a_runp = 0;
-	DPRINTF(%s: %d + %lld\n, __func__, inode-start_sector, a-a_bn);
+	DPRINTF(%s: %d + % PRId64 \n, __func__, inode-start_sector,
+	a-a_bn);
 
 	*a-a_bnp = blk;
 



CVS commit: src/sys/fs/sysvbfs

2010-07-07 Thread Nicolas Joly
Module Name:src
Committed By:   njoly
Date:   Wed Jul  7 16:19:55 UTC 2010

Modified Files:
src/sys/fs/sysvbfs: sysvbfs_vfsops.c

Log Message:
Do set f_namemax at mount, to provide sensible value for statvfs(2)
calls.


To generate a diff of this commit:
cvs rdiff -u -r1.32 -r1.33 src/sys/fs/sysvbfs/sysvbfs_vfsops.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/sysvbfs/sysvbfs_vfsops.c
diff -u src/sys/fs/sysvbfs/sysvbfs_vfsops.c:1.32 src/sys/fs/sysvbfs/sysvbfs_vfsops.c:1.33
--- src/sys/fs/sysvbfs/sysvbfs_vfsops.c:1.32	Thu Jun 24 13:03:10 2010
+++ src/sys/fs/sysvbfs/sysvbfs_vfsops.c	Wed Jul  7 16:19:55 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysvbfs_vfsops.c,v 1.32 2010/06/24 13:03:10 hannken Exp $	*/
+/*	$NetBSD: sysvbfs_vfsops.c,v 1.33 2010/07/07 16:19:55 njoly Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: sysvbfs_vfsops.c,v 1.32 2010/06/24 13:03:10 hannken Exp $);
+__KERNEL_RCSID(0, $NetBSD: sysvbfs_vfsops.c,v 1.33 2010/07/07 16:19:55 njoly Exp $);
 
 #include sys/types.h
 #include sys/param.h
@@ -202,6 +202,7 @@
 	mp-mnt_stat.f_fsidx.__fsid_val[0] = (long)devvp-v_rdev;
 	mp-mnt_stat.f_fsidx.__fsid_val[1] = makefstype(MOUNT_SYSVBFS);
 	mp-mnt_stat.f_fsid = mp-mnt_stat.f_fsidx.__fsid_val[0];
+	mp-mnt_stat.f_namemax = BFS_FILENAME_MAXLEN;
 	mp-mnt_flag |= MNT_LOCAL;
 	mp-mnt_dev_bshift = BFS_BSHIFT;
 	mp-mnt_fs_bshift = BFS_BSHIFT;



CVS commit: src/sys/fs/sysvbfs

2010-05-27 Thread Antti Kantee
Module Name:src
Committed By:   pooka
Date:   Thu May 27 13:22:03 UTC 2010

Modified Files:
src/sys/fs/sysvbfs: sysvbfs_vnops.c

Log Message:
Release pathname buffers after use.


To generate a diff of this commit:
cvs rdiff -u -r1.28 -r1.29 src/sys/fs/sysvbfs/sysvbfs_vnops.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/sysvbfs/sysvbfs_vnops.c
diff -u src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.28 src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.29
--- src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.28	Wed May 26 21:27:00 2010
+++ src/sys/fs/sysvbfs/sysvbfs_vnops.c	Thu May 27 13:22:02 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysvbfs_vnops.c,v 1.28 2010/05/26 21:27:00 pooka Exp $	*/
+/*	$NetBSD: sysvbfs_vnops.c,v 1.29 2010/05/27 13:22:02 pooka Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.28 2010/05/26 21:27:00 pooka Exp $);
+__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.29 2010/05/27 13:22:02 pooka Exp $);
 
 #include sys/param.h
 #include sys/kernel.h
@@ -168,6 +168,9 @@
 	/* unlock parent directory */
 	vput(a-a_dvp);	/* locked at sysvbfs_lookup(); */
 
+	if (err || (a-a_cnp-cn_flags  SAVESTART) == 0)
+		PNBUF_PUT(a-a_cnp-cn_pnbuf);
+
 	return err;
 }
 
@@ -478,6 +481,9 @@
 		vput(vp);
 	vput(dvp);
 
+	if (err || (ap-a_cnp-cn_flags  SAVESTART) == 0)
+		PNBUF_PUT(ap-a_cnp-cn_pnbuf);
+
 	return err;
 }
 



CVS commit: src/sys/fs/sysvbfs

2010-05-27 Thread Antti Kantee
Module Name:src
Committed By:   pooka
Date:   Thu May 27 23:40:12 UTC 2010

Modified Files:
src/sys/fs/sysvbfs: sysvbfs.h sysvbfs_vnops.c

Log Message:
Mark files removed in the in-memory structure.  This allows us
to do two things:

 1) properly set recycle? in inactive
 2) easily check if we are renaming a removed vnode.  without the
check, it was possible to enter a dirent in the file system for
a removed (and hence scheduled to be vcleaned) vnode.  this would
lead to the succesful vget() of a clean vnode.  the use of the
cleaned vnode was, however, less succesful, except for purposes
of crashing.


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/sys/fs/sysvbfs/sysvbfs.h
cvs rdiff -u -r1.29 -r1.30 src/sys/fs/sysvbfs/sysvbfs_vnops.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/sysvbfs/sysvbfs.h
diff -u src/sys/fs/sysvbfs/sysvbfs.h:1.8 src/sys/fs/sysvbfs/sysvbfs.h:1.9
--- src/sys/fs/sysvbfs/sysvbfs.h:1.8	Thu Sep  4 12:07:30 2008
+++ src/sys/fs/sysvbfs/sysvbfs.h	Thu May 27 23:40:12 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysvbfs.h,v 1.8 2008/09/04 12:07:30 pooka Exp $	*/
+/*	$NetBSD: sysvbfs.h,v 1.9 2010/05/27 23:40:12 pooka Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -52,6 +52,7 @@
 	int update_ctime;
 	int update_atime;
 	int update_mtime;
+	int removed;
 
 	LIST_ENTRY(sysvbfs_node) link;
 };

Index: src/sys/fs/sysvbfs/sysvbfs_vnops.c
diff -u src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.29 src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.30
--- src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.29	Thu May 27 13:22:02 2010
+++ src/sys/fs/sysvbfs/sysvbfs_vnops.c	Thu May 27 23:40:12 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysvbfs_vnops.c,v 1.29 2010/05/27 13:22:02 pooka Exp $	*/
+/*	$NetBSD: sysvbfs_vnops.c,v 1.30 2010/05/27 23:40:12 pooka Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.29 2010/05/27 13:22:02 pooka Exp $);
+__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.30 2010/05/27 23:40:12 pooka Exp $);
 
 #include sys/param.h
 #include sys/kernel.h
@@ -481,6 +481,10 @@
 		vput(vp);
 	vput(dvp);
 
+	if (err == 0) {
+		bnode-removed = 1;
+	}
+
 	if (err || (ap-a_cnp-cn_flags  SAVESTART) == 0)
 		PNBUF_PUT(ap-a_cnp-cn_pnbuf);
 
@@ -518,11 +522,26 @@
 
 	KDASSERT(fvp-v_type == VREG);
 	KDASSERT(tvp == NULL ? true : tvp-v_type == VREG);
+	KASSERT(tdvp == fdvp);
+
+	/*
+	 * Make sure the source hasn't been removed between lookup
+	 * and target directory lock.
+	 */
+	if (bnode-removed) {
+		error = ENOENT;
+		goto out;
+	}
 
 	error = bfs_file_rename(bfs, from_name, to_name);
  out:
-	if (tvp)
+	if (tvp) {
+		if (error == 0) {
+			struct sysvbfs_node *tbnode = tvp-v_data;
+			tbnode-removed = 1;
+		}
 		vput(tvp);
+	}
 
 	/* tdvp == tvp probably can't happen with this fs, but safety first */
 	if (tdvp == tvp)
@@ -604,9 +623,13 @@
 		bool *a_recycle;
 	} */ *a = arg;
 	struct vnode *v = a-a_vp;
+	struct sysvbfs_node *bnode = v-v_data;
 
 	DPRINTF(%s:\n, __func__);
-	*a-a_recycle = true;
+	if (bnode-removed)
+		*a-a_recycle = true;
+	else
+		*a-a_recycle = false;
 	VOP_UNLOCK(v, 0);
 
 	return 0;



CVS commit: src/sys/fs/sysvbfs

2010-05-26 Thread Antti Kantee
Module Name:src
Committed By:   pooka
Date:   Wed May 26 17:52:36 UTC 2010

Modified Files:
src/sys/fs/sysvbfs: sysvbfs_vnops.c

Log Message:
Initialize *vpp to NULL: relookup() requires it without initializing
the value before the call (yea, changing relookup would probably
be smart, but other file systems already initialize vpp, so I'm
letting someone else experiment with tylenol od).


To generate a diff of this commit:
cvs rdiff -u -r1.26 -r1.27 src/sys/fs/sysvbfs/sysvbfs_vnops.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/sysvbfs/sysvbfs_vnops.c
diff -u src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.26 src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.27
--- src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.26	Fri Jan  8 11:35:09 2010
+++ src/sys/fs/sysvbfs/sysvbfs_vnops.c	Wed May 26 17:52:35 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysvbfs_vnops.c,v 1.26 2010/01/08 11:35:09 pooka Exp $	*/
+/*	$NetBSD: sysvbfs_vnops.c,v 1.27 2010/05/26 17:52:35 pooka Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.26 2010/01/08 11:35:09 pooka Exp $);
+__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.27 2010/05/26 17:52:35 pooka Exp $);
 
 #include sys/param.h
 #include sys/kernel.h
@@ -83,12 +83,13 @@
 	DPRINTF(%s: %s op=%d %d\n, __func__, name, nameiop,
 	cnp-cn_flags);
 
+	*a-a_vpp = NULL;
+
 	KASSERT((cnp-cn_flags  ISDOTDOT) == 0);
 	if ((error = VOP_ACCESS(a-a_dvp, VEXEC, cnp-cn_cred)) != 0) {
 		return error;	/* directory permittion. */
 	}
 
-
 	if (namelen == 1  name[0] == '.') {	/* . */
 		vref(v);
 		*a-a_vpp = v;



CVS commit: src/sys/fs/sysvbfs

2010-05-26 Thread Antti Kantee
Module Name:src
Committed By:   pooka
Date:   Wed May 26 21:27:00 UTC 2010

Modified Files:
src/sys/fs/sysvbfs: sysvbfs_vnops.c

Log Message:
fix refcounting


To generate a diff of this commit:
cvs rdiff -u -r1.27 -r1.28 src/sys/fs/sysvbfs/sysvbfs_vnops.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/sysvbfs/sysvbfs_vnops.c
diff -u src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.27 src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.28
--- src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.27	Wed May 26 17:52:35 2010
+++ src/sys/fs/sysvbfs/sysvbfs_vnops.c	Wed May 26 21:27:00 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysvbfs_vnops.c,v 1.27 2010/05/26 17:52:35 pooka Exp $	*/
+/*	$NetBSD: sysvbfs_vnops.c,v 1.28 2010/05/26 21:27:00 pooka Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.27 2010/05/26 17:52:35 pooka Exp $);
+__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.28 2010/05/26 21:27:00 pooka Exp $);
 
 #include sys/param.h
 #include sys/kernel.h
@@ -493,7 +493,9 @@
 		struct componentname *a_tcnp;
 	} */ *ap = arg;
 	struct vnode *fvp = ap-a_fvp;
+	struct vnode *fdvp = ap-a_fdvp;
 	struct vnode *tvp = ap-a_tvp;
+	struct vnode *tdvp = ap-a_tdvp;
 	struct sysvbfs_node *bnode = fvp-v_data;
 	struct bfs *bfs = bnode-bmp-bfs;
 	const char *from_name = ap-a_fcnp-cn_nameptr;
@@ -501,7 +503,7 @@
 	int error;
 
 	DPRINTF(%s: %s-%s\n, __func__, from_name, to_name);
-	if ((fvp-v_mount != ap-a_tdvp-v_mount) ||
+	if ((fvp-v_mount != tdvp-v_mount) ||
 	(tvp  (fvp-v_mount != tvp-v_mount))) {
 		error = EXDEV;
 		printf(cross-device link\n);
@@ -513,12 +515,17 @@
 
 	error = bfs_file_rename(bfs, from_name, to_name);
  out:
-	vput(ap-a_tdvp);
 	if (tvp)
-		vput(ap-a_tvp);  /* locked on entry */
-	if (ap-a_tdvp != ap-a_fdvp)
-		vrele(ap-a_fdvp);
-	vrele(ap-a_fvp); /* unlocked and refcnt is incremented on entry. */
+		vput(tvp);
+
+	/* tdvp == tvp probably can't happen with this fs, but safety first */
+	if (tdvp == tvp)
+		vrele(tdvp);
+	else
+		vput(tdvp);
+
+	vrele(fdvp);
+	vrele(fvp);
 
 	return 0;
 }



CVS commit: src/sys/fs/sysvbfs

2009-12-01 Thread Antti Kantee
Module Name:src
Committed By:   pooka
Date:   Tue Dec  1 09:28:02 UTC 2009

Modified Files:
src/sys/fs/sysvbfs: sysvbfs_vfsops.c

Log Message:
Call VOP_CLOSE() in mount error branch with the device locked to
prevent crash when specfs attempts to unlock the vnode.


To generate a diff of this commit:
cvs rdiff -u -r1.30 -r1.31 src/sys/fs/sysvbfs/sysvbfs_vfsops.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/sysvbfs/sysvbfs_vfsops.c
diff -u src/sys/fs/sysvbfs/sysvbfs_vfsops.c:1.30 src/sys/fs/sysvbfs/sysvbfs_vfsops.c:1.31
--- src/sys/fs/sysvbfs/sysvbfs_vfsops.c:1.30	Mon Jun 29 05:08:17 2009
+++ src/sys/fs/sysvbfs/sysvbfs_vfsops.c	Tue Dec  1 09:28:02 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysvbfs_vfsops.c,v 1.30 2009/06/29 05:08:17 dholland Exp $	*/
+/*	$NetBSD: sysvbfs_vfsops.c,v 1.31 2009/12/01 09:28:02 pooka Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: sysvbfs_vfsops.c,v 1.30 2009/06/29 05:08:17 dholland Exp $);
+__KERNEL_RCSID(0, $NetBSD: sysvbfs_vfsops.c,v 1.31 2009/12/01 09:28:02 pooka Exp $);
 
 #include sys/types.h
 #include sys/param.h
@@ -165,37 +165,36 @@
 	struct sysvbfs_mount *bmp;
 	struct partinfo dpart;
 	int error, oflags;
+	bool devopen = false;
 
 	vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY);
 	error = vinvalbuf(devvp, V_SAVE, cred, l, 0, 0);
-	VOP_UNLOCK(devvp, 0);
 	if (error)
-		return error;
+		goto out;
 
 	/* Open block device */
 	oflags = FREAD;
 	if ((mp-mnt_flag  MNT_RDONLY) == 0)
 		oflags |= FWRITE;
 	if ((error = VOP_OPEN(devvp, oflags, NOCRED)) != 0)
-		return error;
+		goto out;
+	devopen = true;
 
 	/* Get partition information */
 	if ((error = VOP_IOCTL(devvp, DIOCGPART, dpart, FREAD, cred)) != 0) {
-		VOP_CLOSE(devvp, oflags, NOCRED);
-		return error;
+		goto out;
 	}
 
 	bmp = malloc(sizeof(struct sysvbfs_mount), M_SYSVBFS_VFS, M_WAITOK);
 	if (bmp == NULL) {
-		VOP_CLOSE(devvp, oflags, NOCRED);
-		return ENOMEM;
+		error = ENOMEM;
+		goto out;
 	}
 	bmp-devvp = devvp;
 	bmp-mountp = mp;
 	if ((error = sysvbfs_bfs_init(bmp-bfs, devvp)) != 0) {
-		VOP_CLOSE(devvp, oflags, NOCRED);
 		free(bmp, M_SYSVBFS_VFS);
-		return error;
+		goto out;
 	}
 	LIST_INIT(bmp-bnode_head);
 
@@ -210,7 +209,11 @@
 	DPRINTF(fstype=%d dtype=%d bsize=%d\n, dpart.part-p_fstype,
 	dpart.disklab-d_type, dpart.disklab-d_secsize);
 
-	return 0;
+ out:
+	if (devopen  error)
+		VOP_CLOSE(devvp, oflags, NOCRED);
+	VOP_UNLOCK(devvp, 0);
+	return error;
 }
 
 int



CVS commit: src/sys/fs/sysvbfs

2009-07-03 Thread Paul Goyette
Module Name:src
Committed By:   pgoyette
Date:   Fri Jul  3 22:38:08 UTC 2009

Modified Files:
src/sys/fs/sysvbfs: sysvbfs_vnops.c

Log Message:
Define error before using it.

(Hello again, elad!)


To generate a diff of this commit:
cvs rdiff -u -r1.23 -r1.24 src/sys/fs/sysvbfs/sysvbfs_vnops.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/sysvbfs/sysvbfs_vnops.c
diff -u src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.23 src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.24
--- src/sys/fs/sysvbfs/sysvbfs_vnops.c:1.23	Fri Jul  3 21:17:41 2009
+++ src/sys/fs/sysvbfs/sysvbfs_vnops.c	Fri Jul  3 22:38:08 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysvbfs_vnops.c,v 1.23 2009/07/03 21:17:41 elad Exp $	*/
+/*	$NetBSD: sysvbfs_vnops.c,v 1.24 2009/07/03 22:38:08 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.23 2009/07/03 21:17:41 elad Exp $);
+__KERNEL_RCSID(0, $NetBSD: sysvbfs_vnops.c,v 1.24 2009/07/03 22:38:08 pgoyette Exp $);
 
 #include sys/param.h
 #include sys/kernel.h
@@ -261,6 +261,7 @@
 	} */ *ap = arg;
 	struct vnode *vp = ap-a_vp;
 	struct sysvbfs_node *bnode = vp-v_data;
+	int error;
 
 	DPRINTF(%s:\n, __func__);
 



CVS commit: src/sys/fs/sysvbfs

2009-04-26 Thread UCHIYAMA Yasushi
Module Name:src
Committed By:   uch
Date:   Sun Apr 26 12:41:59 UTC 2009

Modified Files:
src/sys/fs/sysvbfs: bfs.c

Log Message:
added error check.


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/sys/fs/sysvbfs/bfs.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/sysvbfs/bfs.c
diff -u src/sys/fs/sysvbfs/bfs.c:1.11 src/sys/fs/sysvbfs/bfs.c:1.12
--- src/sys/fs/sysvbfs/bfs.c:1.11	Mon Apr 28 20:24:02 2008
+++ src/sys/fs/sysvbfs/bfs.c	Sun Apr 26 12:41:59 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: bfs.c,v 1.11 2008/04/28 20:24:02 martin Exp $	*/
+/*	$NetBSD: bfs.c,v 1.12 2009/04/26 12:41:59 uch Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include sys/cdefs.h
 
-__KERNEL_RCSID(0, $NetBSD: bfs.c,v 1.11 2008/04/28 20:24:02 martin Exp $);
+__KERNEL_RCSID(0, $NetBSD: bfs.c,v 1.12 2009/04/26 12:41:59 uch Exp $);
 #define	BFS_DEBUG
 
 #include sys/param.h
@@ -256,10 +256,12 @@
 
 	p = buf;
 	n = end - start;
-	bfs-io-read_n(bfs-io, p, start, n);
+	if (!bfs-io-read_n(bfs-io, p, start, n))
+		return EIO;
 	/* last sector */
 	n *= DEV_BSIZE;
-	bfs-io-read(bfs-io, tmpbuf, end);
+	if (!bfs-io-read(bfs-io, tmpbuf, end))
+		return EIO;
 	memcpy(p + n, tmpbuf, sz - n);
 
 	if (read_size)