Message ID | 20200716103723.31983-1-johannes.thumshirn@wdc.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | zonefs: count pages after truncating the iterator | expand |
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@wdc.com> > --- > 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 !
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)
Count pages after possible truncating the iterator to the maximum zone append size, not before. Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> --- fs/zonefs/super.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)