On 2020/07/16 19:37, Johannes Thumshirn wrote: > Count pages after possible truncating the iterator to the maximum zone > append size, not before. > > Signed-off-by: Johannes Thumshirn <johannes.thumshirn@xxxxxxx> > --- > fs/zonefs/super.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/fs/zonefs/super.c b/fs/zonefs/super.c > index 5b7ced5c643b..116bad28cd68 100644 > --- a/fs/zonefs/super.c > +++ b/fs/zonefs/super.c > @@ -607,13 +607,14 @@ static ssize_t zonefs_file_dio_append(struct kiocb *iocb, struct iov_iter *from) > int nr_pages; > ssize_t ret; > > + max = queue_max_zone_append_sectors(bdev_get_queue(bdev)); > + max = ALIGN_DOWN(max << SECTOR_SHIFT, inode->i_sb->s_blocksize); > + iov_iter_truncate(from, max); > + > nr_pages = iov_iter_npages(from, BIO_MAX_PAGES); > if (!nr_pages) > return 0; > > - max = queue_max_zone_append_sectors(bdev_get_queue(bdev)); > - max = ALIGN_DOWN(max << SECTOR_SHIFT, inode->i_sb->s_blocksize); > - iov_iter_truncate(from, max); > > bio = bio_alloc_bioset(GFP_NOFS, nr_pages, &fs_bio_set); > if (!bio) > Applied to for-5.8-fixes, minus the extra blank line before bio_alloc_bioset(). Thanks ! -- Damien Le Moal Western Digital Research