Skip to content

Commit

Permalink
VERSION 1.1
Browse files Browse the repository at this point in the history
  • Loading branch information
maharmstone committed Dec 15, 2018
1 parent 9969380 commit def1fed
Show file tree
Hide file tree
Showing 6 changed files with 93 additions and 75 deletions.
48 changes: 33 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
WinBtrfs v1.0.2
---------------
WinBtrfs v1.1
-------------

WinBtrfs is a Windows driver for the next-generation Linux filesystem Btrfs.
A reimplementation from scratch, it contains no code from the Linux kernel,
Expand Down Expand Up @@ -43,15 +43,13 @@ Features

* Reading and writing of Btrfs filesystems
* Basic RAID: RAID0, RAID1, and RAID10
* Advanced RAID: RAID5 and RAID6 (incompat flag `raid56`)
* Advanced RAID: RAID5 and RAID6
* Caching
* Discovery of Btrfs partitions, even if Windows would normally ignore them
* Getting and setting of Access Control Lists (ACLs), using the xattr
security.NTACL
* Alternate Data Streams (e.g. :Zone.Identifier is stored as the xattr
user.Zone.Identifier)
* Supported incompat flags: `mixed_backref`, `default_subvol`, `big_metadata`,
`extended_iref`, `skinny_metadata`.
* Mappings from Linux users to Windows ones (see below)
* Symlinks and other reparse points
* Shell extension to identify and create subvolumes, including snapshots
Expand All @@ -63,8 +61,7 @@ Features
* Partition-less Btrfs volumes
* Per-volume registry mount options (see below)
* zlib compression
* LZO compression (incompat flag `compress_lzo`)
* Misc incompat flags: `mixed_groups`, `no_holes`
* LZO compression
* LXSS ("Ubuntu on Windows") support
* Balancing (including resuming balances started on Linux)
* Device addition and removal
Expand All @@ -76,12 +73,14 @@ Features
* Degraded mounts
* Free space tree (compat_ro flag `free_space_cache`)
* Shrinking and expanding
* Passthrough of permissions etc. for LXSS
* Zstd compression

Todo
----

* Passthrough of permissions etc. for LXSS
* Oplocks
* Marking directories as case-sensitive with `fsutil` on Windows 10

Installation
------------
Expand Down Expand Up @@ -134,6 +133,23 @@ entry maps Windows' Users group to gid 100, which is usually "users" on Linux.
You can also specify user SIDs here to force files created by a user to belong
to a certain group. The setgid flag also works as on Linux.

LXSS ("Ubuntu on Windows" / "Windows Subsystem for Linux")
----------------------------------------------------------

The driver will passthrough Linux metadata to recent versions of LXSS, but you
will have to let Windows that you wish to do this. From a Bash prompt on Windows,
edit `/etc/wsl.conf` to look like the following:

```
[automount]
enabled = true
options = "metadata"
mountFsTab = false
```

It will then take effect next time you open a new command prompt. Yes, you should
be able to chroot into an actual Linux installation, if you wish.

Commands
--------

Expand Down Expand Up @@ -175,13 +191,6 @@ The driver assumes that all filenames are encoded in UTF-8. This should be the
default on most setups nowadays - if you're not using UTF-8, it's probably worth
looking into converting your files.

* `btrfs check` reports errors in the extent tree

There's a bug in btrfs-progs v4.7, which causes it to return false positives when
using prealloc extents - this'll also manifest itself with filesystems from the
official driver. If you still get the same errors when using btrfs-check v4.6, please
e-mail me what it says.

* The root of the drive isn't case-sensitive in LXSS

This is something Microsoft hardcoded into LXSS, presumably to stop people hosing
Expand Down Expand Up @@ -213,6 +222,13 @@ for Windows, you're out of luck.
Changelog
---------

v1.1 (2018-12-15):
* Support for Zstd compression
* Passthrough of Linux metadata to LXSS
* Refactored shell extension
* Fixed memory leaks
* Many other bug fixes

v1.0.2 (2018-05-19):
* Minor bug fixes

Expand Down Expand Up @@ -409,6 +425,8 @@ when the system last powered down. The default is 0. The equivalent parameter on
* `NoPNP` (DWORD): useful for debugging only, this forces any volumes to appear rather than exposing them
via the usual Plug and Play method.

* `ZstdLevel` (DWORD): Zstd compression level, default 3.

Contact
-------

Expand Down
2 changes: 1 addition & 1 deletion src/btrfs.inf
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Signature = "$Windows NT$"
Class = Volume
ClassGuid = {71a27cdd-812a-11d0-bec7-08002be2092f}
Provider = %Me%
DriverVer = 05/19/2018,1.0.2.0
DriverVer = 12/15/2018,1.1.0.0
CatalogFile = btrfs.cat

[DestinationDirs]
Expand Down
8 changes: 4 additions & 4 deletions src/btrfs.rc
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,8 @@ END
//

VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,2,0
PRODUCTVERSION 1,0,2,0
FILEVERSION 1,1,0,0
PRODUCTVERSION 1,1,0,0
FILEFLAGSMASK 0x17L
#ifdef _DEBUG
FILEFLAGS 0x1L
Expand All @@ -70,12 +70,12 @@ BEGIN
BLOCK "080904b0"
BEGIN
VALUE "FileDescription", "WinBtrfs"
VALUE "FileVersion", "1.0.2"
VALUE "FileVersion", "1.1"
VALUE "InternalName", "btrfs"
VALUE "LegalCopyright", "Copyright (c) Mark Harmstone 2016-18"
VALUE "OriginalFilename", "btrfs.sys"
VALUE "ProductName", "WinBtrfs"
VALUE "ProductVersion", "1.0.2"
VALUE "ProductVersion", "1.1"
END
END
BLOCK "VarFileInfo"
Expand Down
16 changes: 8 additions & 8 deletions src/mkbtrfs/mkbtrfs.rc
Original file line number Diff line number Diff line change
Expand Up @@ -25,18 +25,18 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK
// TEXTINCLUDE
//

1 TEXTINCLUDE
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END

2 TEXTINCLUDE
2 TEXTINCLUDE
BEGIN
"#include ""winres.h""\r\n"
"\0"
END

3 TEXTINCLUDE
3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
Expand All @@ -51,8 +51,8 @@ END
//

VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,2,0
PRODUCTVERSION 1,0,2,0
FILEVERSION 1,1,0,0
PRODUCTVERSION 1,1,0,0
FILEFLAGSMASK 0x17L
#ifdef _DEBUG
FILEFLAGS 0x1L
Expand All @@ -68,12 +68,12 @@ BEGIN
BLOCK "080904b0"
BEGIN
VALUE "FileDescription", "Btrfs formatting utility"
VALUE "FileVersion", "1.0.2"
VALUE "FileVersion", "1.1"
VALUE "InternalName", "mkbtrfs"
VALUE "LegalCopyright", "Copyright (c) Mark Harmstone 2016-18"
VALUE "OriginalFilename", "mkbtrfs.exe"
VALUE "ProductName", "WinBtrfs"
VALUE "ProductVersion", "1.0.2"
VALUE "ProductVersion", "1.1"
END
END
BLOCK "VarFileInfo"
Expand Down Expand Up @@ -106,7 +106,7 @@ END
STRINGTABLE
BEGIN
IDS_NO_NODE_SIZE "No node size specified."
IDS_CANT_FIND_SETINCOMPATFLAGS
IDS_CANT_FIND_SETINCOMPATFLAGS
"Could not load function SetIncompatFlags in %s"
IDS_USAGE2 "The device parameter can either be a drive letter, e.g. D:, or a device path,\nsuch as \\Device\\Harddisk0\\Partition2.\n\nTo format the whole of the first hard disk without using partitions, you would\nneed to use the parameter \\Device\\Harddisk0\\Partition0.\n\nSupported flags:\n\n/sectorsize:num Sets the sector size. This must be a\n multiple of the size that the disk itself\n reports. The default is 4096, which should\n be used unless you have a good reason.\n\n/nodesize:num Sets the node size, i.e. the size of the\n metadata trees. The default is 16384. This\n needs to either be the same as sector size,\n or a power of two multiple.\n\n/mixed Enables or disable mixed block groups,\n/notmixed which store data and and metadata in the\n same chunks. The default is disabled. This\n is only useful for very small filesystems.\n\n/extiref Enables or disables extened inode refs,\n/notextiref which increase the number of hardlinks\n allowed. The default is enabled.\n\n/skinnymetadata Enables or disable skinny metadata, which\n/notskinnymetadata allows more efficient storage of metadata\n refs. The default is enabled.\n\n/noholes Enables or disables whether sparse extents\n/notnoholes should be stored implicitly, which can save\n a little space. The default is disabled."
END
Expand Down
Loading

0 comments on commit def1fed

Please sign in to comment.