On Thu, May 07, 2020 at 03:50:57PM +0800, Zhen Lei wrote: > +++ b/block/blk-settings.c > @@ -150,7 +150,7 @@ void blk_queue_max_hw_sectors(struct request_queue *q, unsigned int max_hw_secto > unsigned int max_sectors; > > if ((max_hw_sectors << 9) < PAGE_SIZE) { > - max_hw_sectors = 1 << (PAGE_SHIFT - 9); > + max_hw_sectors = PAGE_SECTORS; Surely this should be: if (max_hw_sectors < PAGE_SECTORS) { max_hw_sectors = PAGE_SECTORS; ... no? > - page = read_mapping_page(mapping, > - (pgoff_t)(n >> (PAGE_SHIFT - 9)), NULL); > + page = read_mapping_page(mapping, (pgoff_t)sectors_to_npage(n), NULL); ... again, get the type right, and you won't need the cast.