zonefs: count pages after truncating the iterator
Count pages after possibly truncating the iterator to the maximum zone append size, not before. Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
This commit is contained in:
parent
01b2651cfb
commit
89ee72376b
|
@ -607,14 +607,14 @@ static ssize_t zonefs_file_dio_append(struct kiocb *iocb, struct iov_iter *from)
|
||||||
int nr_pages;
|
int nr_pages;
|
||||||
ssize_t ret;
|
ssize_t ret;
|
||||||
|
|
||||||
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 = queue_max_zone_append_sectors(bdev_get_queue(bdev));
|
||||||
max = ALIGN_DOWN(max << SECTOR_SHIFT, inode->i_sb->s_blocksize);
|
max = ALIGN_DOWN(max << SECTOR_SHIFT, inode->i_sb->s_blocksize);
|
||||||
iov_iter_truncate(from, max);
|
iov_iter_truncate(from, max);
|
||||||
|
|
||||||
|
nr_pages = iov_iter_npages(from, BIO_MAX_PAGES);
|
||||||
|
if (!nr_pages)
|
||||||
|
return 0;
|
||||||
|
|
||||||
bio = bio_alloc_bioset(GFP_NOFS, nr_pages, &fs_bio_set);
|
bio = bio_alloc_bioset(GFP_NOFS, nr_pages, &fs_bio_set);
|
||||||
if (!bio)
|
if (!bio)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
Loading…
Reference in New Issue