On Fri, Sep 13, 2019 at 09:14:08AM -0700, Josef Bacik wrote: > On Thu, Sep 12, 2019 at 07:55:01PM -0400, Zygo Blaxell wrote: > > Currently, the command: > > > > btrfs balance start -dconvert=single,soft . > > > > on a Raspberry Pi produces the following kernel message: > > > > BTRFS error (device mmcblk0p2): balance: invalid convert data profile > > single > > > > This fails because we use is_power_of_2(unsigned long) to validate > > the new data profile, the constant for 'single' profile uses bit 48, > > and there are only 32 bits in a long on ARM. > > > > Fix by open-coding the check using u64 variables. > > > > Tested by completing the original balance command on several Raspberry > > Pis. > > > > Signed-off-by: Zygo Blaxell <ce3g8...@umail.furryterror.org> > > Honestly I'd rather we fixed is_power_of_2 to work on 32bit, that way any > other > users don't get bitten by the same problem. Thanks,
is_power_of_2 doesn't live in the btrfs tree. I considered modifying it, but worried about side-effects elsewhere (i.e. breaking some other 32-bit device I've never heard of). What do you think about using the IS_ALIGNED macro? > Josef
signature.asc
Description: PGP signature