2010-09-21 13:39:31

by Bo Branten

[permalink] [raw]
Subject: uninit_bg compatibility?


Hello,

when writing new files to an ext4 file system using the Windows driver
fsck will later complain "Group descriptor nn checksum is invalid" and I
think that is because it used an yet unused block group without knowing
that they can be marked as uninitialized. So I thought a simple patch
would be to mount the file system read-only if that feature is in use
untill the driver is updated with full write support but I can't find the
flag to use, there is no EXT4_FEATURE_RO_COMPAT_UNINIT_BG so I thought I
ask here if anyone could clear this out.


2010-09-21 17:00:24

by Andreas Dilger

[permalink] [raw]
Subject: Re: uninit_bg compatibility?

On 2010-09-21, at 06:28, Bo Brant?n wrote:
> when writing new files to an ext4 file system using the Windows driver fsck will later complain "Group descriptor nn checksum is invalid" and I think that is because it used an yet unused block group without knowing that they can be marked as uninitialized. So I thought a simple patch would be to mount the file system read-only if that feature is in use untill the driver is updated with full write support but I can't find the flag to use, there is no EXT4_FEATURE_RO_COMPAT_UNINIT_BG so I thought I ask here if anyone could clear this out.

The Windows driver (or any driver for that matter) should ONLY allow read-only access if ANY feature in s_feature_ro_compat is unknown, and completely refuse to mount if any feature in s_feature_incompat is unknown.

The actual feature flag is called EXT4_FEATURE_RO_COMPAT_GDT_CSUM, but that doesn't matter, since what the code should be doing is masking off the features that it DOES understand and checking if any feature bits are remaining.


Cheers, Andreas




2010-09-21 17:59:15

by Theodore Ts'o

[permalink] [raw]
Subject: Re: uninit_bg compatibility?

On Tue, Sep 21, 2010 at 03:28:51PM +0200, Bo Brant?n wrote:
>
> when writing new files to an ext4 file system using the Windows
> driver fsck will later complain "Group descriptor nn checksum is
> invalid" and I think that is because it used an yet unused block
> group without knowing that they can be marked as uninitialized. So I
> thought a simple patch would be to mount the file system read-only
> if that feature is in use untill the driver is updated with full
> write support but I can't find the flag to use, there is no
> EXT4_FEATURE_RO_COMPAT_UNINIT_BG so I thought I ask here if anyone
> could clear this out.

Yeah, this is one where we decided to change the feature to uninit_bg
(since that describes the net benefit to the end-user), but we never
ended up changing the name of the flag in the source code. The
feature flag in question is:

#define EXT4_FEATURE_RO_COMPAT_GDT_CSUM 0x0010

I'll note that the Windows driver must not be checking the feature
flags, since the whole point of RO_COMPAT flags is that if a file
system implementation (such as the Windows drivers) sees an RO_COMPAT
flag it doesn't understand, it's supposed to treat the file system as
read-only.

- Ted