On 07/06/2017 05:21 AM, Damien Le Moal wrote: > The BIO issuing loop in __blkdev_issue_zeroout() is allocating BIOs > with a maximum number of bvec (pages) equal to > > min(nr_sects, (sector_t)BIO_MAX_PAGES) > > This works since the requested number of bvecs will always be limited > to the absolute maximum number supported (BIO_MAX_PAGES), but this is > ineficient as too many bvec entries may be requested due to the > different units being used in the min() operation (number of sectors vs > number of pages). > To fix this, introduce the helper __blkdev_sectors_to_bio_pages() to > correctly calculate the number of bvecs for zeroout BIOs as the issuing > loop progresses. The calculation is done using consistent units and > makes sure that the number of pages return is at least 1 (for cases > where the number of sectors is less that the number of sectors in > a page). > > Also remove a trailing space after the bit shift in the internal loop > min() call. Thanks, added for 4.13. -- Jens Axboe