Current list

Outstanding - work ($)

Tags of the form reqst######## are bug IDs in $oldwork's bug tracking system.

Old current list

  1. Performance test and commit netmap stats change (netperf cluster)
  2. Netmap locking issue reported by witness, on detach
  3. FreeBSD/NetBSD diff reduction, for OVS port
    1. route.h RT_ADVANCE etc.

Doc issues

  1. exit(3) man page return value guidance - too much exit(-1) in proprietary code

Solution is understood, work just needs to be done

  1. BSD licensed smarthost delivery mini MTA
  2. Indexed arrays for sh(1) a la ksh/bash -- var[index]=val; echo ${var[index]}
    • Some opposition to this idea - don't want to "bloat" sh(1)
    • I originally had "associative arrays" listed, but indexed arrays are simpler and sufficient for many purposes. Also Bash only added associative arrays recently.
    • zsh supports indexed arrays (but not associative)
  3. lagg failover discarding input -> Tushar

    • disconnect master link
    • switch's mac table assigns mac to backup link
    • reconnect master link
    • switch continues to send frames to backup link
    • lagg discards the frames
    • easy hack: allow accept on any port via sysctl setting
    • better fix: allow lagg to send gratuitous ARP when failover active port changes
    • need link state notification input to lagg to do the latter
  4. bootcode / vfs.root.mountfrom cleanup
    • patch is waiting in my tree, reviewed by Attilio
      • (phk) [rootdevnames] should be removable by now.
      • dev/md/md.c: rootdevnames[0] = "ufs:/dev/md0";
      • ia64/ia64/sscdisk.c: rootdevnames[0] = "ufs:/dev/sscdisk0";
      • kern/vfs_mount.c:char *rootdevnames[2] = {NULL, NULL};
      • kern/vfs_mount.c: if (!vfs_mountroot_try(rootdevnames[0]))
      • kern/vfs_mount.c: if (!vfs_mountroot_try(rootdevnames[1]))
      • nfsclient/bootp_subr.c: rootdevnames[0] = "nfs:";
      • nfsclient/nfs_diskless.c: rootdevnames[0] = "nfs:";
      • sys/systm.h:extern char *rootdevnames[2];

  5. TCP support for syslogd
    • plain syslog format over TCP
    • as implemented in syslog-ng
    • thread names from ps -axH -o paddr,tdaddr,pcomm,tdnam
    • sort by thread name
    • tree view of threads in a process
    • show/hide threads or processes
    • lines between processes in right-hand window don't display in some cases (towards bottom)
    • < > buttons in event window - move to top so you can keep clicking next without moving mouse

    • allow event zoom (magnify selected thread around current time w/o changing overall ticks/pixel)
    • allow absolute ticks, relative ticks, relative time as timestamps
    • add a legend window
    • lend prio event - to thread shows up with just proc name it appears
  7. Allow tzsetup to pick UTC or UTC +/- offset zones
    • reqst00227912

  8. Kernel core handling infrastructure
    • Need a method to determine, from a kernel core,
      • Path to the kernel that was loaded at the time (i.e., sysctl kern.bootfile)
      • Whether or not the kernel now at that path is identical to the one that was running (e.g. md5 hash of kernel file)

    • reqst00220678

Further investigation or scoping is necessary before beginning work

  1. Teach {k,}gdb to read gzipped symbols files (idea from brooks)

    • Support --compress-debug-sections

  2. sysv semaphore locking issues
    • does it need a rewrite?
    • some cleanup has happened here, it might be fine now?
  3. Big MD root crashes kernel or loader
    • Make big ramdisk: dd if=/dev/zero of=bsdimage bs=1k count=128k

    • /boot/loader.rc
    • load /boot/kernel/kernel
    • load -t mfs_root /bsdimage
    • JohnBaldwin: fixed by bumping up NKPT usually, and now NKPT on i386 is a real kernel option so you can change it more easily

  4. other compat32 issues: (maybe just clean up and contribute from $WORKBSD)
    • libcam
    • libgeom / devstat
    • sys/dev/smbus/smb.c
  5. PR kern/40021 patch to use ld(1) to include a prebuilt md root filesystem instead of writing to a preallocated region
  6. serial gdb & conserver improvements

    • conserver, or pty<->conserver connector

    • conserver probably needs a 'passthrough' mode; ^Ec parsing etc. is handled by the server
  7. valgrind support
  8. hwpmc new CPUs, update/release/incorporate into pmcannotate $WORKBSD profiler

  9. mount behaviour
    • at mountroot> ufs:ufs/freebsdvm mount -uw / filesystem becomes dirty but does not go rw

    • looks like update changes clean flag and last-mounted string, but then fails when ufs/freebsdvm instead of /dev/ufs/freebsdvm shows up
  10. spb perf / FCAPS / 1UX7
  11. Audit sys/net/if.c:if_grow() and callers for potential locking issues/race conditions
    • had been fixed in $WORKBSD in the 5.x timeframe, but maybe the race is gone or much less likely now?
  12. caching DNS proxy and small DNS server
    • provide hostnames for local network
    • basically what you might expect on a small home router
    • like dnsmasq
    • BSD license would be a plus
  13. <@JohnBaldwin> emaste: we probably need a separate BSD.32.dist

  14. Conflict between utrace records in ld-elf32 and 64-bit kdump
  15. pam_diameter - use diameter for AAA, like pam_radius/pam_tacacs
    • Does anyone do this?
  16. bsdtar -U option behaviour
    • reqst00174629
    • create a symlink dirlink -> /some/other/path

    • create a tar file containing directory dirlink

    • tar -x -P -U file.tar
    • 6.1 left the symlink in place; 6.3 replaces with a directory
  17. ifconfig w/ ether and inet config
  18. em(4) + vlan + polling issue
  19. lagg / IPv6
  20. First line of vmstat output is incorrect (reqst00198101)
  21. Audit ifnet reference counting -- if_ref / vlan / lagg / carp / ...
  22. WITNESS for userland (pthreads)
  23. kexec (named kload in FreeBSD:

  24. ksplice (

  1. Add a nodiskless keyworkd to startup scripts and have /etc/rc not run those for diskless machines
  2. Multi device support for loader(8) -- allow simultaneous disk, tftp, nfs, httpfs, etc.
    • Sam said he might look at this
  3. HTTP support for pxe loader
    • integrate taleks' work from previous GSoC
  4. Database-backed or in memory DHCP server
    • for booting diskless machines in a test lab
    • be able to change next-server, root-path etc. per host, without rewriting config file and restarting
  5. Add support for loading FreeBSD kernels to QEMU, like it does with Linux kernels
    • direct loading, not from disk image or PXE
  6. Automatically unset the boot.nfsroot variables,
    • whenever the loader is compiled with LOADER_TFTP_SUPPORT?
    • if a root md(4) filesystem is loaded?
    • if vfs.root.mountfrom is set and doesn't start with nfs:?
    • via the default loader.conf on the installation media?
    • I don't recall what I was trying to solve here
  7. Add SNMP v3 support to bsnmpd
  8. Add AgentX support (RFC2741) to bsnmpd
  9. Automatically set vfs.root.mountfrom=ufs:/dev/md0 if a root md(4) filesystem is loaded.

Outstanding - personal interest

  1. SIGINFO handler for newfs_msdos (percentage progress indicator)
  2. vnode backed md is in raw format - allow vmdk (vmware) / qcow2(qemu) etc. format as well
    • or perhaps geom_vmdk, geom_qcow2?
  3. CUPS / devfs conflict with lpt0
  4. media with sector size != 512 (e.g. 2048 byte USB stick)
  5. Offer a prebuilt pxeboot_tftp binary compiled with LOADER_TFTP_SUPPORT=YES so that the loader doesn't need to be recompiled.
    • No point if multi-device support gets done.
  6. Add twiddle to fsck
    • jhb mentioned this
    • I thought he had an implementation, but apparently not so
  7. Kernel options and modules
    • Can't build ipfw module with forwarding or default to accept
    • sys/netinet/ipfw/ip_fw2.c - #if !defined(KLD_MODULE)
    • looks like a generic problem

Todo after 8.0 branch

  1. Clean up src/lib/libstand/nfs.c vs. netbsd src/sys/lib/libsa/nfs.c
  2. Add debug message to src/sys/boot/common/load_elf.c (symbols)


  1. NFS truncation with non-power-of-two block size (reqst00031351)
    • mount -t nfs -orsize=8000,wsize=8000 localhost:/mnt/src /mnt/dst
      jot -b 1234567890 1000 > /mnt/src/foo
    • wc -l /mnt/src/foo -- returns 1000
    • wc -l /mnt/dst/foo -- returns 698
    • Issue is uio->uio_offset & (biosize - 1) used as modulo for non-power-of-two

    • Committed as r248500

  3. pivot_root (reroot)
    • To support deployable VMs

Abandoned / Overcome by Events

  1. dump_write API change to take offset (and add di->mediaoffset itself)

    • makes netdumping slightly cleaner
    • Attilio to include in cleanup of netdump to HEAD

  2. NFS client improvements against SOSS
    • SOSS is a Windows NFS v2 server
  3. pxeboot / loader / serial console (RELENG_6 fails, HEAD ok)
  4. CPU affinity and binding
    • probably the support in 7.x/8.x is all we want
  5. Scheduler work for CPU affinity
  6. handle panics from within X "somehow"

EdMaste/ToDo (last edited 2023-08-20T20:07:12+0000 by EdMaste)