Message ID | 20191213040915.3502922-8-naohiro.aota@wdc.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | btrfs: zoned block device support | expand |
On 12/12/19 11:08 PM, Naohiro Aota wrote: > fallocate() is implemented by reserving actual extent instead of > reservations. This can result in exposing the sequential write constraint > of host-managed zoned block devices to the application, which would break > the POSIX semantic for the fallocated file. To avoid this, report > fallocate() as not supported when in HMZONED mode for now. > > In the future, we may be able to implement "in-memory" fallocate() in > HMZONED mode by utilizing space_info->bytes_may_use or so. > > Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> > Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com> Reviewed-by: Josef Bacik <josef@toxicpanda.com> Thanks, Josef
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index 0cb43b682789..22373d00428b 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c @@ -3170,6 +3170,10 @@ static long btrfs_fallocate(struct file *file, int mode, alloc_end = round_up(offset + len, blocksize); cur_offset = alloc_start; + /* Do not allow fallocate in HMZONED mode */ + if (btrfs_fs_incompat(btrfs_sb(inode->i_sb), HMZONED)) + return -EOPNOTSUPP; + /* Make sure we aren't being give some crap mode */ if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE | FALLOC_FL_ZERO_RANGE))