Thread (19 messages) 19 messages, 5 authors, 2016-09-21

Re: [PATCH 0/3] Btrfs: fix free space tree bitmaps+tests on big-endian systems

From: Omar Sandoval <osandov@osandov.com>
Date: 2016-08-27 00:56:59
Also in: sparclinux

On Fri, Aug 26, 2016 at 02:06:29PM +0300, Anatoly Pugachev wrote:
On Thu, Aug 18, 2016 at 11:33 PM, Omar Sandoval [off-list ref] wrote:
quoted
On Tue, Jul 19, 2016 at 03:25:16PM -0400, Chris Mason wrote:
quoted
On 07/19/2016 12:06 PM, Chandan Rajendra wrote:

Omar, looks like we need to make the patched kernel refuse to mount free
space trees without a new incompat bit set.  That way there won't be any
surprises for the people that have managed to get a free space tree saved.
Can it please printk a message about clearing the tree and mounting again?
Sorry it took me a month to get around to this, I tried to implement
this a couple of ways but I really don't like it. Basically, when we see
that we're missing the compat bit, we have to assume that the free space
tree was created with the same endianness that we're running on now.
That could lead to a false positive if, say, we created the filesystem
on a little-endian machine with an old kernel but are using it on a
big-endian system, or a false negative if it was created on a big-endian
machine with an old kernel but we're using it on a little-endian
machine.

There's also the question of making it a compat bit vs an incompat bit.
An incompat bit makes sure that we don't break the filesystem by
mounting it on an old big-endian kernel, but needlessly breaks
backwards-compatibility for little-endian.

I'd be much happier if we could just pretend this never happened. Here's
the patch, anyways, for the sake of completeness. Chris, what do you
think?
Omar,

I can't load btrfs module with this patch applied to 4.8.0-rc3+ (git
v4.8-rc3-39-g61c0457)
on "modprobe btrfs" i'm getting the following in the logs and module
does not load:

Btrfs loaded, crc32c=crc32c-generic, debug=on, assert=on
BTRFS: selftest: sectorsize: 8192  nodesize: 8192
BTRFS: selftest: Running btrfs free space cache tests
BTRFS: selftest: Running extent only tests
BTRFS: selftest: Running bitmap only tests
BTRFS: selftest: Running bitmap and extent tests
BTRFS: selftest: Running space stealing from bitmap to extent
BTRFS: selftest: Free space cache tests finished
BTRFS: selftest: Running extent buffer operation tests
BTRFS: selftest: Running btrfs_split_item tests
BTRFS: selftest: Running extent I/O tests
BTRFS: selftest: Running find delalloc tests
BTRFS: selftest: Running extent buffer bitmap tests
BTRFS: selftest: Setting straddling pages failed
BTRFS: selftest: Extent I/O tests finished
Is this with the whole patchset + this patch? You still need the patch
set for this to actually work, the extra patch is just some extra
checks.

-- 
Omar
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help