On Tue, 2022-04-12 at 13:27 +0200, Pankaj Raghav wrote: > From: Luis Chamberlain <[email protected]> > > f2fs currently only work with zoned storage devices with a zone > size which is a power of 2 (PO2). So check if a non-power of 2 > zone is device is found, and if so disallow its use. This prevents > users from incorrectly using these devices. > > This is a non-issue today give today's kernel does not allow NPO2 > zon devices to exist. But these devices do exist, and so proactively > put a stop-gap measure in place to prevent the from being assumed > to be used. > > Signed-off-by: Luis Chamberlain <[email protected]> > Signed-off-by: Pankaj Raghav <[email protected]> > --- > lib/libf2fs.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/lib/libf2fs.c b/lib/libf2fs.c > index 8fad1d7..a13ba32 100644 > --- a/lib/libf2fs.c > +++ b/lib/libf2fs.c > @@ -882,6 +882,11 @@ static int open_check_fs(char *path, int flag) > return open(path, O_RDONLY | flag); > } > > +static int is_power_of_2(unsigned long n) > +{ > + return (n != 0 && ((n & (n - 1)) == 0)); > +} > + > int get_device_info(int i) > { > int32_t fd = 0; > @@ -1043,6 +1048,13 @@ int get_device_info(int i) > return -1; > } > > + if (!dev->zone_size || !is_power_of_2(dev->zone_size)) { > + MSG(0, "\tError: zoned: illegal zone size %lu (not a > power of 2)\n", > + dev->zone_size);
The message should be different for the !dev->zone_size case since that would be an error. > + free(stat_buf); > + return -1; > + } > + > /* > * Check zone configuration: for the first disk of a > * multi-device volume, conventional zones are needed. Of the 3 patches of this series, this one is the only one that makes sense to me. I fail to see how the first 2 patches improve things. -- Damien Le Moal Western Digital Research _______________________________________________ Linux-f2fs-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
