Shawn Webb <latt...@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@beastie:/usr/obj/usr/src/sys/GENERIC  amd64

Try below diff-against-diff. I'm using it for weeks with a few p4 commits.

inb4 you're encouraged to wait after 7.4/8.2 are out

%%
--- zfs_20101212.patch          pjd's original
+++ zfs_20101212.patch          sync with r218058
@@ -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");
@@ -103163,7 +103165,7 @@
        }
  
        return (ZIO_PIPELINE_CONTINUE);
-@@ -943,10 +1063,23 @@
+@@ -943,10 +1063,11 @@
   */
  
  static void
@@ -103173,36 +103175,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 +104205,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);
        }
  
%%
_______________________________________________
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"

Reply via email to