Message ID | 5136fb8ba2a9746bfc55247c93b86e33bdd7eb7b.1605007036.git.naohiro.aota@wdc.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | btrfs: zoned block device support | expand |
On 10/11/20 7:26 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 ZONED mode for now. > > In the future, we may be able to implement "in-memory" fallocate() in ZONED > mode by utilizing space_info->bytes_may_use or so. > > Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com> > Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> > Reviewed-by: Josef Bacik <josef@toxicpanda.com> Looks good. Reviewed-by: Anand Jain <anand.jain@orcle.com> Thanks.
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index 0ff659455b1e..68938a43081e 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c @@ -3341,6 +3341,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 ZONED mode */ + if (btrfs_is_zoned(btrfs_sb(inode->i_sb))) + 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))