Message ID | 7e1a3b008e0ded5b0ea1a86ec842618c2bcac56a.1608608848.git.naohiro.aota@wdc.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | btrfs: zoned block device support | expand |
On 12/21/20 10:49 PM, Naohiro Aota wrote: > The implementation of fitrim is depending on space cache, which is not used > and disabled for zoned btrfs' extent allocator. So the current code does > not work with zoned btrfs. In the future, we can implement fitrim for zoned > btrfs by enabling space cache (but, only for fitrim) or scanning the extent > tree at fitrim time. But, for now, disallow fitrim in ZONED mode. > > Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com> > --- > fs/btrfs/ioctl.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c > index 5b9b0a390f0e..6df362081478 100644 > --- a/fs/btrfs/ioctl.c > +++ b/fs/btrfs/ioctl.c > @@ -527,6 +527,14 @@ static noinline int btrfs_ioctl_fitrim(struct btrfs_fs_info *fs_info, > if (!capable(CAP_SYS_ADMIN)) > return -EPERM; > > + /* > + * btrfs_trim_block_group() is depending on space cache, which is > + * not available in ZONED mode. So, disallow fitrim in ZONED mode > + * for now. > + */ > + if (fs_info->zoned) Should be btrfs_is_zoned(fs_info); Thanks, Josef
On 11/01/2021 21:13, Josef Bacik wrote: >> + if (fs_info->zoned) > Should be btrfs_is_zoned(fs_info); Fixed
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index 5b9b0a390f0e..6df362081478 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c @@ -527,6 +527,14 @@ static noinline int btrfs_ioctl_fitrim(struct btrfs_fs_info *fs_info, if (!capable(CAP_SYS_ADMIN)) return -EPERM; + /* + * btrfs_trim_block_group() is depending on space cache, which is + * not available in ZONED mode. So, disallow fitrim in ZONED mode + * for now. + */ + if (fs_info->zoned) + return -EOPNOTSUPP; + /* * If the fs is mounted with nologreplay, which requires it to be * mounted in RO mode as well, we can not allow discard on free space
The implementation of fitrim is depending on space cache, which is not used and disabled for zoned btrfs' extent allocator. So the current code does not work with zoned btrfs. In the future, we can implement fitrim for zoned btrfs by enabling space cache (but, only for fitrim) or scanning the extent tree at fitrim time. But, for now, disallow fitrim in ZONED mode. Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com> --- fs/btrfs/ioctl.c | 8 ++++++++ 1 file changed, 8 insertions(+)