<!DOCTYPE HTML PUBLIC "-//FreeBSD//DTD HTML 4.01 Transitional-Based Extension//EN" [
<!ENTITY base CDATA "../..">
<!ENTITY email 'freebsd-qa'>
<!ENTITY date "$FreeBSD$">
<!ENTITY title "FreeBSD 5.2 Open Issues">
<!ENTITY % navinclude.download "INCLUDE">
<!ENTITY % developers PUBLIC "-//FreeBSD//ENTITIES FreeBSD Developers Entities//EN"> %developers;
<!-- Status levels -->
<!ENTITY status.na "<font color=green>N/A</font>">
<!ENTITY status.done "<font color=green>Done</font>">
<!ENTITY status.wip "<font color=blue>In&nbsp;progress</font>">
<!ENTITY status.untested "<font color=orange>Needs&nbsp;testing</font>">
<!ENTITY status.new "<font color=red>Not&nbsp;done</font>">
<!ENTITY status.unknown "<font color=red>Unknown</font>">
]>

<html>
&header;

<h1>Open Issues</h1>

<p>This is a list of open issues that need to be resolved for FreeBSD
  5.2.  If you have any updates for this list, please e-mail
  re@FreeBSD.org.</p>

<h3>Show stopper defects for 5.2-RELEASE</h3>

<table class="tblbasic">
  <tr><th>Issue</th><th>Status</th><th>Responsible</th><th>Description</th>
      </tr>

</table>

<h3>Required features for 5.2-RELEASE</h3>

<table class="tblbasic">
  <tr><th>Issue</th><th>Status</th><th>Responsible</th><th>Description</th>
      </tr>

  <tr>
    <td>Fine-grained network stack locking without Giant</td>
    <td>&status.wip;</td>
    <td>&a.sam;</td>
    <td>Significant parts of the network stack (especially IPv4 and
      IPv6) now have fine-grained locking of their data structures.
      However, it is not yet possible for the netisr threads to run
      without Giant, due to dependencies on sockets, routing, etc.
      A 5.2-RELEASE goal is to have the forwarding path in the network
      stack able to run without Giant, which should substantially improve
      performance of the stack, as well as other system components by
      reducing contention on Giant.  For stability reasons, this will
      be disabled by default in 5.2.</td>
  </tr>

</table>

<h3>Desired features for 5.2-RELEASE</h3>

<table class="tblbasic">
  <tr><th>Issue</th><th>Status</th><th>Responsible</th><th>Description</th>
      </tr>

  <tr>
    <td>KAME Synchronization</td>
    <td>&status.wip;</td>
    <td>&a.ume;</td>
    <td>The FreeBSD KAME IPv6 code is now substantially dated with
      respect to the KAME vendor source.  The FreeBSD Project needs
      to take initiative in driving the merge of new bug fixes,
      features, et al.</td>
  </tr>

  <tr>
    <td>Light-weight interrupt threads, context switches</td>
    <td>&status.new;</td>
    <td>--</td>
    <td>Currently, there are two classes of interrupt handlers in 5.x:
      fast interrupt handlers which run entirely in interrupt context,
      and heavy-weight handlers which execute in a full-weight kernel
      interrupt thread.  It is possible to optimize interrupt thread
      context management such that a light-weight context switch is
      performed to begin execution of the interrupt thread in the
      handler context, and only when a full-weight context is required
      (such as sleeping on a lock) is that cost required.  This
      optimization should substantially improve interrupt latency.
      There are also additional kernel thread context switch optimizations
      that can be made to improve the performance of thread workers in
      the kernel, such as found in the network stack, crypto worker
      threads, and GEOM.  &a.bmilekic; has done substantial prototyping
      work, and should be coordinated with.</td>
  </tr>

  <tr>
    <td>Run-time autoconfiguration of GBDE and related transforms</td>
    <td>&status.new;</td>
    <td>--</td>
    <td>Currently, gbde must be manually configured at run-time each
      time an encrypted disk device is mounted.  This prevents easy
      integration into /etc/fstab and easy automated deployment.
      Improved integration with the configuration, mounting, and boot
      process is required to make this feature more easily accessible.</td>
  </tr>

  <tr>
    <td>gdb -k support for alpha</td>
    <td>&status.new;</td>
    <td>&a.mp;</td>
    <td>gdb -k doesn't work on alpha</td>
  </tr>

</table>

<h3>Documentation items desired for 5.2</h3>

<table class="tblbasic">
  <tr><th>Issue</th><th>Status</th><th>Responsible</th><th>Description</th>
      </tr>

  <tr>
    <td>Revise EAG</td>
    <td>&status.done;</td>
    <td>&a.bmah;</td>
    <td>The Early Adopters Guide needs to be revised, hopefully for
      the last time, to reflect the state of 5.2.</td>
  </tr>

  <tr>
    <td>Trim Hardware Notes</td>
    <td>&status.wip;</td>
    <td>&a.bmah;</td>
    <td>Ongoing project to remove redundancy in documentation by
      removing lists of specific devices from the hardware notes and
      pointing readers to driver manpages.</td>
  </tr>

</table>

<h3>Testing focuses for 5.2-RELEASE</h3>

<table class="tblbasic">
  <tr><th>Issue</th><th>Status</th><th>Responsible</th><th>Description</th>
      </tr>

  <tr>
    <td>PCM locking and performance issues</td>
    <td>&status.untested;</td>
    <td>--</td>
    <td>The PCM audio framework and device drivers have been locked and
      free of Giant for quite a while, but LOR problems persist along with
      reports of poor audio performance under load.  These problems are
      believed to have been corrected, but more testing is desired.</td>
  </tr>

  <tr>
    <td>ATA driver structural improvements, MPsafety</td>
    <td>&status.untested;</td>
    <td>&a.sos;</td>
    <td>New ATA model has arrived, supporting fine-grained locking,
      and more.  Much testing is needed to ensure no regressions.</td>
  </tr>

  <tr>
    <td>GPT support for sysinstall</td>
    <td>&status.untested;</td>
    <td>&a.marcel;</td>
    <td>Sysinstall and libdisk has been overhauled to support the GPT
      partition scheme used on ia64.</td>
  </tr>

  <tr>
    <td>Complete the APIC PCI interrupt routing support</td>
    <td>&status.untested;</td>
    <td>&a.jhb</td>
    <td>Interrupt routing on ia32 has been completely re-written to support
      ACPI hints for PCI interrupt routing, along with ACPI hints for CPU
      enumeration.  There have been reports of interrupt storms or a
      failure for interrupts to deliver, possibly a result of bad ACPI
      information.  These problems need to be tracked down and resolved.</td>
  </tr>

  <tr>
    <td>ATAng crashdump causes disk corruption</td>
    <td>&status.untested;</td>
    <td>&a.sos;, &a.tegge;</td>
    <td>Performing a crashdump on an ATA device can result in a corrupted
      MBR record.  Tor has a possible patch for this.</td>
  </tr>

  <tr>
    <td>SMP users report acpi_cpu panic during shutdown</td>
    <td>&status.untested;</td>
    <td>&a.njl;</td>
    <td>The ACPI code registers eventhandlers that are not unregistered
      when ACPI shuts down during system shutdown.  The result can
      be a panic during shutdown.  Nate is circulating a patch that
      is believed to correct this problem.</td>
  </tr>

  <tr>
    <td>random_harvest panic</td>
    <td>&status.untested;</td>
    <td>&a.markm;</td>
    <td>There are reports of witness panics in random_harvest_internal()
      due to last minute changes in interrupt entropy harvesting code.
      Systems running with INVARIANTS will rapidly panic.  Update:
      a workaround has been committed, but the original change must
      either be backed out or revised before we can cut the first
      beta.</td>
  </tr>

  <tr>
    <td>Vinum data corruption and memory allocation problems</td>
    <td>&status.untested;</td>
    <td>&a.grog;</td>
    <td>In the last week, reports of two new (and possibly related)
      Vinum failures have come to light: a warning message of
      <code>vinum: exiting with malloc table inconsistency at
      0xc2053c00 from vinumio.c:755</code> has been experienced when
      Vinum auto-configuration fails.  Also, even simple test cases
      for Vinum I/O appear to result in incorrect data being returned
      from disk, rendering Vinum unusable in several reproduceable
      configurations.</td>
  </tr>

  <tr>
    <td>ACPI kernel module</td>
    <td>&status.untested;</td>
    <td>&a.jhb;</td>
    <td>The new i386 inpterrupt code should work whether the acpi driver is
      compiled into the kernel or loaded as a module.  The loader should
      automatically load the module if it's not already compiled in.</td>
  </tr>

  <tr>
    <td>Reported NFS failures</td>
    <td>&status.unknown;</td>
    <td>&nbsp;</td>
    <td>There have been a number of reports of NFS clients and server
      hangs.  Unfortunately, these are difficult to reproduce, and
      have not yet been traced back to a particular change or
      reliable reproduction scenario.</td>
  </tr>

  <tr>
    <td>Turnstile assertion failure</td>
    <td>&status.unknown</td>
    <td>&a.jhb;</td>
    <td><code>panic: Assertion td->td_turnstile != NULL failed
      at ../../../kern/subr_turnstile.c:427</code> has been affecting
      several users on multiple platforms.  This has hopefully been fixed
      now, but more testinig is needed.</td>
  </tr>

  <tr>
    <td>fsync panic while installing with softupdates enabled</td>
      <td>&status.untested;</td>
      <td>&a.dwhite;, &a.jeff;</td>
      <td>There is a repeatable panic happening for many people while
        installing 5.2-RC1 when softupdates are enabled on the root
        partition.  This was being triggered by sysinstall doing a
        forced unmount of devfs while node where still active.  VFS has
        been fixed to deal with this better, and sysinstall has bee
        fixed to not do the forced unmount.
  </tr>

</table>

    &footer;

  </body>
</html>
