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.

EDIT:

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.