Module Name: src
Committed By: haad
Date: Mon Aug 10 22:38:02 UTC 2009
Modified Files:
src/external/cddl/osnet/dist/uts/common/fs/zfs: arc.c dmu.c
spa_history.c zfs_dir.c zfs_vfsops.c
src/external/cddl/osnet/dist/uts/common/fs/zfs/sys: vdev_disk.h
zfs_znode.h zvol.h
Log Message:
Add some NetBSD fixes which I have forgot to commit during first round.
With these patches I can build solaris and zfs module again.
To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/external/cddl/osnet/dist/uts/common/fs/zfs/arc.c \
src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vfsops.c
cvs rdiff -u -r1.1.1.1 -r1.2 \
src/external/cddl/osnet/dist/uts/common/fs/zfs/dmu.c \
src/external/cddl/osnet/dist/uts/common/fs/zfs/spa_history.c
cvs rdiff -u -r1.3 -r1.4 \
src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_dir.c
cvs rdiff -u -r1.1.1.1 -r1.2 \
src/external/cddl/osnet/dist/uts/common/fs/zfs/sys/vdev_disk.h \
src/external/cddl/osnet/dist/uts/common/fs/zfs/sys/zvol.h
cvs rdiff -u -r1.2 -r1.3 \
src/external/cddl/osnet/dist/uts/common/fs/zfs/sys/zfs_znode.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/arc.c
diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/arc.c:1.2 src/external/cddl/osnet/dist/uts/common/fs/zfs/arc.c:1.3
--- src/external/cddl/osnet/dist/uts/common/fs/zfs/arc.c:1.2 Fri Aug 7 20:16:45 2009
+++ src/external/cddl/osnet/dist/uts/common/fs/zfs/arc.c Mon Aug 10 22:38:02 2009
@@ -133,6 +133,42 @@
#include <sys/callb.h>
#include <sys/kstat.h>
+#ifdef __NetBSD__
+#include <uvm/uvm.h>
+#define btop(x) ((x) / PAGE_SIZE)
+#define needfree (uvmexp.free < uvmexp.freetarg ? uvmexp.freetarg : 0)
+#define buf_init arc_buf_init
+#define freemem uvmexp.free
+#define minfree uvmexp.freemin
+#define desfree uvmexp.freetarg
+#define lotsfree (desfree * 2)
+#define availrmem desfree
+#define swapfs_minfree 0
+#define swapfs_reserve 0
+#undef curproc
+#define curproc curlwp
+#define proc_pageout uvm.pagedaemon_lwp
+
+#define heap_arena kernel_map
+#define VMEM_ALLOC 1
+#define VMEM_FREE 2
+static inline size_t
+vmem_size(struct vm_map *map, int flag)
+{
+ switch (flag) {
+ case VMEM_ALLOC:
+ return map->size;
+ case VMEM_FREE:
+ return vm_map_max(map) - vm_map_min(map) - map->size;
+ case VMEM_FREE|VMEM_ALLOC:
+ return vm_map_max(map) - vm_map_min(map);
+ default:
+ panic("vmem_size");
+ }
+}
+static void *zio_arena;
+#endif /* __NetBSD__ */
+
static kmutex_t arc_reclaim_thr_lock;
static kcondvar_t arc_reclaim_thr_cv; /* used to signal reclaim thr */
static uint8_t arc_thread_exit;
@@ -3233,10 +3269,8 @@
static uint64_t page_load = 0;
static uint64_t last_txg = 0;
-#if defined(__i386)
available_memory =
MIN(available_memory, vmem_size(heap_arena, VMEM_FREE));
-#endif
if (available_memory >= zfs_write_limit_max)
return (0);
Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vfsops.c
diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vfsops.c:1.2 src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vfsops.c:1.3
--- src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vfsops.c:1.2 Fri Aug 7 20:16:45 2009
+++ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vfsops.c Mon Aug 10 22:38:02 2009
@@ -35,7 +35,6 @@
#include <sys/mntent.h>
#include <sys/mount.h>
#include <sys/cmn_err.h>
-#include "fs/fs_subr.h"
#include <sys/zfs_znode.h>
#include <sys/zfs_dir.h>
#include <sys/zil.h>
@@ -51,11 +50,9 @@
#include <sys/atomic.h>
#include <sys/mkdev.h>
#include <sys/modctl.h>
-#include <sys/refstr.h>
#include <sys/zfs_ioctl.h>
#include <sys/zfs_ctldir.h>
#include <sys/zfs_fuid.h>
-#include <sys/bootconf.h>
#include <sys/sunddi.h>
#include <sys/dnlc.h>
#include <sys/dmu_objset.h>
Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/dmu.c
diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/dmu.c:1.1.1.1 src/external/cddl/osnet/dist/uts/common/fs/zfs/dmu.c:1.2
--- src/external/cddl/osnet/dist/uts/common/fs/zfs/dmu.c:1.1.1.1 Fri Aug 7 18:32:54 2009
+++ src/external/cddl/osnet/dist/uts/common/fs/zfs/dmu.c Mon Aug 10 22:38:02 2009
@@ -751,6 +751,7 @@
return (err);
}
+#ifndef __NetBSD__
int
dmu_write_pages(objset_t *os, uint64_t object, uint64_t offset, uint64_t size,
page_t *pp, dmu_tx_t *tx)
@@ -808,6 +809,7 @@
dmu_buf_rele_array(dbp, numbufs, FTAG);
return (err);
}
+#endif /* __NetBSD__ */
#endif
typedef struct {
Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/spa_history.c
diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/spa_history.c:1.1.1.1 src/external/cddl/osnet/dist/uts/common/fs/zfs/spa_history.c:1.2
--- src/external/cddl/osnet/dist/uts/common/fs/zfs/spa_history.c:1.1.1.1 Fri Aug 7 18:33:07 2009
+++ src/external/cddl/osnet/dist/uts/common/fs/zfs/spa_history.c Mon Aug 10 22:38:02 2009
@@ -178,7 +178,7 @@
static char *
spa_history_zone()
{
-#ifdef _KERNEL
+#if defined(_KERNEL) && !defined(__NetBSD__)
return (curproc->p_zone->zone_name);
#else
return ("global");
Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_dir.c
diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_dir.c:1.3 src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_dir.c:1.4
--- src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_dir.c:1.3 Fri Aug 7 22:46:04 2009
+++ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_dir.c Mon Aug 10 22:38:02 2009
@@ -46,7 +46,6 @@
#include <sys/zfs_dir.h>
#include <sys/zfs_acl.h>
#include <sys/fs/zfs.h>
-#include "fs/fs_subr.h"
#include <sys/zap.h>
#include <sys/dmu.h>
#include <sys/atomic.h>
@@ -777,11 +776,10 @@
return (EEXIST);
}
if (zp->z_phys->zp_links <= zp_is_dir) {
- zfs_panic_recover("zfs: link count on %s is %u, "
- "should be at least %u",
- zp->z_vnode->v_path ? zp->z_vnode->v_path :
- "<unknown>", (int)zp->z_phys->zp_links,
- zp_is_dir + 1);
+ zfs_panic_recover("zfs: link count on vnode %p is %u, "
+ "should be at least %u",
+ zp->z_vnode, (int)zp->z_phys->zp_links,
+ zp_is_dir + 1);
zp->z_phys->zp_links = zp_is_dir + 1;
}
if (--zp->z_phys->zp_links == zp_is_dir) {
Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/sys/vdev_disk.h
diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/sys/vdev_disk.h:1.1.1.1 src/external/cddl/osnet/dist/uts/common/fs/zfs/sys/vdev_disk.h:1.2
--- src/external/cddl/osnet/dist/uts/common/fs/zfs/sys/vdev_disk.h:1.1.1.1 Fri Aug 7 18:33:41 2009
+++ src/external/cddl/osnet/dist/uts/common/fs/zfs/sys/vdev_disk.h Mon Aug 10 22:38:02 2009
@@ -41,9 +41,9 @@
#endif
typedef struct vdev_disk {
- ddi_devid_t vd_devid;
- char *vd_minor;
- ldi_handle_t vd_lh;
+ char *vd_minor;
+ vnode_t *vd_vn;
+ struct workqueue *vd_wq;
} vdev_disk_t;
#ifdef _KERNEL
Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/sys/zvol.h
diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/sys/zvol.h:1.1.1.1 src/external/cddl/osnet/dist/uts/common/fs/zfs/sys/zvol.h:1.2
--- src/external/cddl/osnet/dist/uts/common/fs/zfs/sys/zvol.h:1.1.1.1 Fri Aug 7 18:33:45 2009
+++ src/external/cddl/osnet/dist/uts/common/fs/zfs/sys/zvol.h Mon Aug 10 22:38:02 2009
@@ -51,7 +51,7 @@
extern int zvol_open(dev_t *devp, int flag, int otyp, cred_t *cr);
extern int zvol_dump(dev_t dev, caddr_t addr, daddr_t offset, int nblocks);
extern int zvol_close(dev_t dev, int flag, int otyp, cred_t *cr);
-extern int zvol_strategy(buf_t *bp);
+extern void zvol_strategy(buf_t *bp);
extern int zvol_read(dev_t dev, uio_t *uiop, cred_t *cr);
extern int zvol_write(dev_t dev, uio_t *uiop, cred_t *cr);
extern int zvol_aread(dev_t dev, struct aio_req *aio, cred_t *cr);
Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/sys/zfs_znode.h
diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/sys/zfs_znode.h:1.2 src/external/cddl/osnet/dist/uts/common/fs/zfs/sys/zfs_znode.h:1.3
--- src/external/cddl/osnet/dist/uts/common/fs/zfs/sys/zfs_znode.h:1.2 Fri Aug 7 20:16:45 2009
+++ src/external/cddl/osnet/dist/uts/common/fs/zfs/sys/zfs_znode.h Mon Aug 10 22:38:02 2009
@@ -122,7 +122,9 @@
* Convert mode bits (zp_mode) to BSD-style DT_* values for storing in
* the directory entries.
*/
+#ifndef __NetBSD__
#define IFTODT(mode) (((mode) & S_IFMT) >> 12)
+#endif
/*
* The directory entry has the type (currently unused on Solaris) in the