@@ -113,22+71,16 @@ Projects that can be clearly used for Google Code-In are marked with their categ

### One-liners

* Port the BSDL OSS code to DragonFly

* Complete Path MTU Discovery by adding a host route to remember the Path MTU and setting a timer to expire old host routes. See netinet/if_ether.c for an example of this mechanism as used by ARP. Periodically increase MTU of hosts that have had its MTU decreased.

-* Look for places in the kernel that can benefit from Solaris-style caching of preconstructed slab allocator objects. If we can find enough of these uses, we can add this functionality to the kernel memory allocator.

-* Clean our code to make it [style(9)](http://leaf.dragonflybsd.org/cgi/web-man?command#style&sectionANY) compatible. Compile and test your changes. Verify that the checksum (sha(1)) of the unmodified object matches the checksum of the cleaned object. Check also with strip(1)+sha(1)

-* Setup a regression testing machine/system to register and find problems and new improvements. (GCI:Research)

* Port or update drivers from other systems.

-* Port NFSv4. [This mail](http://leaf.dragonflybsd.org/mailarchive/kernel/2008-01/msg00065.html) is a good starting point.

-* clean up buildworld/kernel compilation warnings

-* Port DTrace

* Port Linux emulation to x86-64

-* Bring BSD-licensed ext2fs from FreeBSD.

-

### Code to port/sync from FreeBSD

* PCI code (to take advantage of power saving features)

* Bring in support for UFS2, just the changes to extend the width of some fields from 32 bits to 64 bits. (GCI:Code)

* hardware drivers.

+* ext2fs

+* DTrace

### Code to port/sync from OpenBSD

* Add support for the NoExecute bit as described in [http://www.openbsd.org/papers/auug04/index.html](http://www.openbsd.org/papers/auug04/index.html).

@@ -186,17+138,12 @@ Projects that can be clearly used for Google Code-In are marked with their categ

* zlib, pv entries

* Once all consumers are ported, zalloc can be removed.

-### Document all sysctl's

-* The description of sysctl's can be provided when the sysctl is declared and displayed in userland by passing the -d flag to the sysctl utility.

-* Document all undocumented sysctl's

-* Verify that the description of documented sysctl's is correct.

-

### Convert kprintf-enabling sysctl's to KTR's

* Many sysctl's simply enable one or more kernel kprintf's

* This can be very easy, or can be very unwieldy

* Convert all of these cases to ktr's, while slightly less easy they are far easier to wield in all cases.

-### Tear out C/H/S disk reporting (GCI:Research)

+### Tear out C/H/S disk reporting

* Cylinders/Heads/Sectors are an outdated concept and the system doesn't rely on them anymore.

* Verify the assumption that we don't rely on them in any way, shape or form.

* Tear the reporting out of the kernel/installer/etc.

@@ -219,7+166,10 @@ Projects that can be clearly used for Google Code-In are marked with their categ

* This would allow nmalloc to allocate slabs (64k, 64k-aligned) without wastage

### vnode dumps

-* It would be beneficial to be able to have crash dumps written to an ordinary file in configurations where swap is not configured.

+* It may be beneficial to be able to have crash dumps written to an ordinary file in configurations where swap is not configured.

+

+### vnode swap

+* Add a vnode-backed swap pager that respects a file size limit, to allow paging to a "swap file" on a filesystem.

### Kernel allocator feature enhancements

* Enhance objcache in a manner that will allow the initialization to specify allocation functions which will allocate and free entire slabs of memory, not just single objects.

@@ -229,7+179,7 @@ Projects that can be clearly used for Google Code-In are marked with their categ

* Add reclaim functionality to objcache, such that it may ask consumers to free objects back into it under memory pressure.

### Tear out serializers

-* Serializers could be _carefully_ replaced with MTX locks

+* Serializers could be _carefully_ replaced with MTX locks?

### Tear out condvars

* Conditional vars -- condvar(9), could be replaced with other locking primitives and our tsleep/wakeup interlock.