On 9/3/13 2:54 PM, Ken Schneider - openSUSE wrote:
On 09/03/2013 10:32 AM, Jeff Mahoney pecked at the keyboard and wrote:
Hi all -
Last month I posted queries to this list (and several other locations, including the forums) asking about people's experiences with btrfs. For the most part it seemed like the experience had improved over time. Most of the concerns were either with interactions with zypper or old perceptions of instability that were based more on old impressions than new testing. With the exception of an ENOSPC issue that had been recently fixed, users actively using the file system seemed pretty satisfied with it.
I posted a followup question a week or two later asking what people thought about limiting the 'supported' feature set in the way we do in SLES so that it's clear to all users which parts of the file system are considered stable.
A quick table of what that looks like:
Supported Unsupported --------- ----------- Snapshots Inode cache Copy-on-Write Auto Defrag Subvolumes RAID Metadata Integrity Compression Data Integrity Send / Receive Online metadata scrubbing Hot add/remove Manual defrag Seeding devices Manual deduplication (soon) Multiple devices "Big" Metadata (supported read-only)
Over time this table will change. Items from the Unsupported list will move to the Supported list as they mature.
That proposal was pretty well received except, predictably, by those using the features listed. In practice, all that's required for those users to continue uninterrupted is to add the 'allow_unsupported=1' option to the btrfs module either on the kernel command line or /etc/modprobe.d. There is nothing inherently limiting to any openSUSE user with this practice. The features are all still in the code and available immediately just by setting a flag. It can even be done safely after module load or even after file systems that don't use the unsupported features have been mounted. I intend to introduce this functionality into openSUSE soon.
One other aspect to consider: Even though they are independent projects, we've been focusing heavily on btrfs support in the SLES product. As a result, the openSUSE kernel will end up getting much of that work 'for free' since most of the same people maintain the kernel for both projects.
So that's the "why it's safe" part of the proposal. I haven't gotten to the "why" yet, but then you probably already know the "whys". Subvolumes. Built-in snapshots that don't corrupt themselves when an exception table runs out of space. Built-in integrity verification via checksums. Built-in proactive metadata semantic checking via scrubbing. Online defrag. Soon we'll see online deduplication of arbitrary combinations of files. The code is written, it just needs to be pulled in. You've seen the rest of the feature set. Once we test more of it under load and ensure that it's mature enough to roll out, you'll get those features for free.
So, I'd like to propose that we use btrfs as the default file system for the 13.1 release before we release the first beta.
Thanks for your time.
-Jeff
Not as long as any items are in the unsupported colume and as long as
The unsupported features might as well be "unimplemented" for the purposes of this discussion.
there is no tool to repair a broken filesystem.
There is a btrfsck tool. Have you encountered a file system it was unable to repair? Bugzilla IDs? The tool can only improve with the reporting of different types of corruption. Even e2fsck still receives regular updates. -Jeff -- Jeff Mahoney SUSE Labs