zpool v28 and -current
Anonymous
swell.k at gmail.com
Fri Feb 11 19:40:41 UTC 2011
Anonymous <swell.k at gmail.com> writes:
> Shawn Webb <lattera at gmail.com> writes:
>
>> I'm having trouble building freebsd-current (sources as of 29 Jan 2011) with
>> the latest zpool v28 patch. `make buildworld` fails. I'd attach a copy of
>> the build log, but it's pretty big. I can put it online on my tech blog if
>> needed. Has anyone else had the same problem? The `uname -a` output of the
>> box in question:
>>
>> FreeBSD beastie 9.0-CURRENT FreeBSD 9.0-CURRENT #0 r218075: Sat Jan 29
>> 15:14:44 MST 2011 shawn at beastie:/usr/obj/usr/src/sys/GENERIC amd64
>
> Try below diff-against-diff. I'm using it for weeks with a few p4 commits.
Regen with mm's variant of r218550 for v28.
%%
--- zfs_20101212.patch pjd's original
+++ zfs_20101212.patch sync with r218550
@@ -34850,12 +34851,14 @@
{
--- sys/cddl/compat/opensolaris/sys/atomic.h.orig
+++ sys/cddl/compat/opensolaris/sys/atomic.h
-@@ -39,9 +39,10 @@
- #ifndef __LP64__
+@@ -39,11 +39,10 @@
+ #if !defined(__LP64__) && !defined(__mips_n32)
extern void atomic_add_64(volatile uint64_t *target, int64_t delta);
extern void atomic_dec_64(volatile uint64_t *target);
--extern void *atomic_cas_ptr(volatile void *target, void *cmp, void *newval);
#endif
+-#ifndef __LP64__
+-extern void *atomic_cas_ptr(volatile void *target, void *cmp, void *newval);
+-#endif
#ifndef __sparc64__
+extern uint32_t atomic_cas_32(volatile uint32_t *target, uint32_t cmp,
+ uint32_t newval);
@@ -38448,9 +38451,9 @@
TUNABLE_QUAD("vfs.zfs.arc_meta_limit", &zfs_arc_meta_limit);
-TUNABLE_INT("vfs.zfs.mdcomp_disable", &zfs_mdcomp_disable);
SYSCTL_DECL(_vfs_zfs);
- SYSCTL_QUAD(_vfs_zfs, OID_AUTO, arc_max, CTLFLAG_RDTUN, &zfs_arc_max, 0,
+ SYSCTL_UQUAD(_vfs_zfs, OID_AUTO, arc_max, CTLFLAG_RDTUN, &zfs_arc_max, 0,
"Maximum ARC size");
- SYSCTL_QUAD(_vfs_zfs, OID_AUTO, arc_min, CTLFLAG_RDTUN, &zfs_arc_min, 0,
+ SYSCTL_UQUAD(_vfs_zfs, OID_AUTO, arc_min, CTLFLAG_RDTUN, &zfs_arc_min, 0,
"Minimum ARC size");
-SYSCTL_INT(_vfs_zfs, OID_AUTO, mdcomp_disable, CTLFLAG_RDTUN,
- &zfs_mdcomp_disable, 0, "Disable metadata compression");
@@ -56065,16 +56068,16 @@
+ &zfs_txg_synctime_ms, 0, "Target milliseconds to sync a txg");
+
+TUNABLE_QUAD("vfs.zfs.write_limit_min", &zfs_write_limit_min);
-+SYSCTL_QUAD(_vfs_zfs, OID_AUTO, write_limit_min, CTLFLAG_RDTUN,
++SYSCTL_UQUAD(_vfs_zfs, OID_AUTO, write_limit_min, CTLFLAG_RDTUN,
+ &zfs_write_limit_min, 0, "Minimum write limit");
+TUNABLE_QUAD("vfs.zfs.write_limit_max", &zfs_write_limit_max);
-+SYSCTL_QUAD(_vfs_zfs, OID_AUTO, write_limit_max, CTLFLAG_RDTUN,
++SYSCTL_UQUAD(_vfs_zfs, OID_AUTO, write_limit_max, CTLFLAG_RDTUN,
+ &zfs_write_limit_max, 0, "Maximum data payload per txg");
+TUNABLE_QUAD("vfs.zfs.write_limit_inflated", &zfs_write_limit_inflated);
-+SYSCTL_QUAD(_vfs_zfs, OID_AUTO, write_limit_inflated, CTLFLAG_RDTUN,
++SYSCTL_UQUAD(_vfs_zfs, OID_AUTO, write_limit_inflated, CTLFLAG_RDTUN,
+ &zfs_write_limit_inflated, 0, "");
+TUNABLE_QUAD("vfs.zfs.write_limit_override", &zfs_write_limit_override);
-+SYSCTL_QUAD(_vfs_zfs, OID_AUTO, write_limit_override, CTLFLAG_RDTUN,
++SYSCTL_UQUAD(_vfs_zfs, OID_AUTO, write_limit_override, CTLFLAG_RDTUN,
+ &zfs_write_limit_override, 0, "");
+
+int
@@ -75748,7 +75751,7 @@
uint64_t *io_stall;
zio_t *io_gang_leader;
zio_gang_node_t *io_gang_tree;
-@@ -336,56 +416,64 @@
+@@ -336,57 +416,64 @@
kcondvar_t io_cv;
/* FMA state */
@@ -75757,9 +75760,8 @@
#ifdef _KERNEL
/* FreeBSD only. */
-- struct ostask io_task;
-+ struct ostask io_task_issue;
-+ struct ostask io_task_interrupt;
+ struct ostask io_task_issue;
+ struct ostask io_task_interrupt;
#endif
};
@@ -76377,7 +76379,7 @@
-SYSCTL_INT(_vfs_zfs_txg, OID_AUTO, synctime, CTLFLAG_RDTUN, &zfs_txg_synctime,
- 0, "Target seconds to sync a txg");
-TUNABLE_QUAD("vfs.zfs.txg.write_limit_override", &zfs_write_limit_override);
--SYSCTL_QUAD(_vfs_zfs_txg, OID_AUTO, write_limit_override, CTLFLAG_RW,
+-SYSCTL_UQUAD(_vfs_zfs_txg, OID_AUTO, write_limit_override, CTLFLAG_RW,
- &zfs_write_limit_override, 0,
- "Override maximum size of a txg to this size in bytes, "
- "value of 0 means don't override");
@@ -94124,10 +94126,12 @@
/*ARGSUSED*/
static int
zfs_mount(vfs_t *vfsp)
-@@ -1203,6 +1577,12 @@
+@@ -1203,8 +1577,14 @@
goto out;
}
+ vfsp->vfs_flag |= MNT_NFS4ACLS;
+
+#ifdef SECLABEL
+ error = zfs_mount_label_policy(vfsp, osname);
+ if (error)
@@ -94504,6 +94508,16 @@
if (noff >= file_sz) {
return (ENXIO);
}
+@@ -353,6 +355,9 @@
+ {
+
+ vm_page_wakeup(pp);
++ vm_page_lock(pp);
++ vm_page_activate(pp);
++ vm_page_unlock(pp);
+ }
+
+ static caddr_t
@@ -370,7 +372,6 @@
sf_buf_free(sf);
}
@@ -94520,7 +94534,7 @@
static void
update_pages(vnode_t *vp, int64_t start, int len, objset_t *os, uint64_t oid,
int segflg, dmu_tx_t *tx)
-@@ -420,6 +420,64 @@
+@@ -420,6 +420,69 @@
}
/*
@@ -94569,9 +94583,14 @@
+ zfs_unmap_page(sf);
+ VM_OBJECT_LOCK(obj);
+ vm_page_io_finish(pp);
-+ if (error)
-+ break;
-+ pp->valid = VM_PAGE_BITS_ALL;
++ vm_page_lock(pp);
++ if (error) {
++ vm_page_free(pp);
++ } else {
++ pp->valid = VM_PAGE_BITS_ALL;
++ vm_page_activate(pp);
++ }
++ vm_page_unlock(pp);
+ }
+ uio->uio_resid -= bytes;
+ uio->uio_offset += bytes;
@@ -94600,7 +94619,7 @@
ASSERT(vp->v_mount != NULL);
obj = vp->v_object;
-@@ -450,92 +505,25 @@
+@@ -450,98 +505,25 @@
start = uio->uio_loffset;
off = start & PAGEOFFSET;
@@ -94692,9 +94711,15 @@
- }
+ error = dmu_read_uio(os, zp->z_id, uio, bytes);
VM_OBJECT_LOCK(obj);
-- if (error == 0)
-- m->valid = VM_PAGE_BITS_ALL;
- vm_page_io_finish(m);
+- vm_page_lock(m);
+- if (error == 0) {
+- m->valid = VM_PAGE_BITS_ALL;
+- vm_page_activate(m);
+- } else
+- vm_page_free(m);
+- vm_page_unlock(m);
+-
- if (error == 0) {
- uio->uio_resid -= bytes;
- uio->uio_offset += bytes;
@@ -103163,7 +103188,7 @@
}
return (ZIO_PIPELINE_CONTINUE);
-@@ -943,10 +1063,23 @@
+@@ -943,10 +1063,11 @@
*/
static void
@@ -103173,36 +103198,22 @@
spa_t *spa = zio->io_spa;
zio_type_t t = zio->io_type;
+ int flags = TQ_SLEEP | (cutinline ? TQ_FRONT : 0);
-+#ifdef _KERNEL
-+ struct ostask *task;
-+#endif
-+
-+ ASSERT(q == ZIO_TASKQ_ISSUE || q == ZIO_TASKQ_INTERRUPT);
-+
-+#ifdef _KERNEL
-+ if (q == ZIO_TASKQ_ISSUE)
-+ task = &zio->io_task_issue;
-+ else /* if (q == ZIO_TASKQ_INTERRUPT) */
-+ task = &zio->io_task_interrupt;
-+#endif
-
- /*
- * If we're a config writer or a probe, the normal issue and
-@@ -970,8 +1103,13 @@
- q++;
-
+ #ifdef _KERNEL
+ struct ostask *task;
+ #endif
+@@ -972,10 +1105,10 @@
ASSERT3U(q, <, ZIO_TASKQ_TYPES);
-+#ifdef _KERNEL
+ #ifdef _KERNEL
(void) taskq_dispatch_safe(spa->spa_zio_taskq[t][q],
-- (task_func_t *)zio_execute, zio, &zio->io_task);
+- (task_func_t *)zio_execute, zio, task);
+ (task_func_t *)zio_execute, zio, flags, task);
-+#else
-+ (void) taskq_dispatch(spa->spa_zio_taskq[t][q],
+ #else
+ (void) taskq_dispatch(spa->spa_zio_taskq[t][q],
+- (task_func_t *)zio_execute, zio, TQ_SLEEP);
+ (task_func_t *)zio_execute, zio, flags);
-+#endif
+ #endif
}
- static boolean_t
@@ -990,7 +1128,7 @@
static int
zio_issue_async(zio_t *zio)
@@ -104217,22 +104228,16 @@
zio_gang_tree_free(&zio->io_gang_tree);
-@@ -2300,18 +2900,36 @@
- * Reexecution is potentially a huge amount of work.
- * Hand it off to the otherwise-unused claim taskq.
- */
-+#ifdef _KERNEL
+@@ -2303,7 +2903,7 @@
+ #ifdef _KERNEL
(void) taskq_dispatch_safe(
spa->spa_zio_taskq[ZIO_TYPE_CLAIM][ZIO_TASKQ_ISSUE],
-- (task_func_t *)zio_reexecute, zio, &zio->io_task);
+- (task_func_t *)zio_reexecute, zio,
+ (task_func_t *)zio_reexecute, zio, TQ_SLEEP,
-+ &zio->io_task_issue);
-+#else
-+ (void) taskq_dispatch(
-+ spa->spa_zio_taskq[ZIO_TYPE_CLAIM][ZIO_TASKQ_ISSUE],
-+ (task_func_t *)zio_reexecute, zio, TQ_SLEEP);
-+#endif
- }
+ &zio->io_task_issue);
+ #else
+ (void) taskq_dispatch(
+@@ -2314,11 +2914,22 @@
return (ZIO_PIPELINE_STOP);
}
%%
More information about the freebsd-current
mailing list