Mark Harmstone published his btrfs filesystem driver on github.
Here is a patch that imports it into ReactOS.
PLEASE NOTE that none of this is my work.
Brief description of the patch:
Changes are mostly for compiling it cleanly in ReactOS, because Mark set the driver target to Win7.
That's why there are added 2 missing Rtl functions courtesy of Thomas (RtlUnicodeToUTF8N & RtlUTF8ToUnicodeN).
One copy of removed hack from Pierre for IOCTL_DISK_GET_PARTITION_INFO_EX (btrfs uses this to determine its size, not sure why Mark used this instead of btrfs superblock). EDIT: Committed in http://code.reactos.org/changelog/reactos?cs=70781
There are 3 more changes:
1. Disabling SSE4.2 CPU check and SSE4.2 optimization when calculating crc32 (can be easily added back)
2. Disabling FsRtlRemoveDotsFromPath which is defined for Vista+ when used for symlink path simplification.
3. Switch a check on RemoveHeadList to IsListEmpty, because ROS checks were bugchecking when trying to remove head of the list. EDIT: same "fix" applied to drv_shutdown. EDIT2: no longer needed, Mark already changed it.
4. Rearrange of code a bit in mount_vol to fix behavior when called for non-btrfs volumes.
Also here is an implementation of file system recognizer for btrfs, registry entry for driver, txtsetup.sif change to copy it from CD on install.
I can add separated patches if it will be easier for review.
Attached also btrfs patch to the original driver code for future reimports.
Please review and comment.