On 12/20/18 9:04 PM, Jens Axboe wrote: > Hi Linus, > > Sending this out a bit early to get this sorted for the holiday break. > This is the main pull request for block/storage for 4.21. Larger than > usual, it was a busy round with lots of goodies queued up. Most notable > is the removal of the old IO stack, which has been a long time coming. > No new features for a while, everything coming in this week has all > been fixes for things that were previously merged. > > Note that I've pulled in 4.20-rc a few times to both resolve a few > conflicts, but mostly to get the important fixes that went into mainline > late in this series. The SD discard fix [1] you just merged causes a conflict, just for reference, the below is the straight forward way to resolve it. [1] 61cce6f6eeced5ddd9cac55e807fe28b4f18c1ba diff --cc drivers/scsi/sd.c index bd0a5c694a97,4a6ed2fc8c71..a1a44f52e0e8 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@@ -760,10 -759,9 +760,10 @@@ static blk_status_t sd_setup_unmap_cmnd unsigned int data_len = 24; char *buf; - rq->special_vec.bv_page = alloc_page(GFP_ATOMIC | __GFP_ZERO); + rq->special_vec.bv_page = mempool_alloc(sd_page_pool, GFP_ATOMIC); if (!rq->special_vec.bv_page) - return BLKPREP_DEFER; + return BLK_STS_RESOURCE; + clear_highpage(rq->special_vec.bv_page); rq->special_vec.bv_offset = 0; rq->special_vec.bv_len = data_len; rq->rq_flags |= RQF_SPECIAL_PAYLOAD; @@@ -794,10 -793,9 +795,10 @@@ static blk_status_t sd_setup_write_same u32 nr_sectors = blk_rq_sectors(rq) >> (ilog2(sdp->sector_size) - 9); u32 data_len = sdp->sector_size; - rq->special_vec.bv_page = alloc_page(GFP_ATOMIC | __GFP_ZERO); + rq->special_vec.bv_page = mempool_alloc(sd_page_pool, GFP_ATOMIC); if (!rq->special_vec.bv_page) - return BLKPREP_DEFER; + return BLK_STS_RESOURCE; + clear_highpage(rq->special_vec.bv_page); rq->special_vec.bv_offset = 0; rq->special_vec.bv_len = data_len; rq->rq_flags |= RQF_SPECIAL_PAYLOAD; @@@ -825,10 -824,9 +827,10 @@@ static blk_status_t sd_setup_write_same u32 nr_sectors = blk_rq_sectors(rq) >> (ilog2(sdp->sector_size) - 9); u32 data_len = sdp->sector_size; - rq->special_vec.bv_page = alloc_page(GFP_ATOMIC | __GFP_ZERO); + rq->special_vec.bv_page = mempool_alloc(sd_page_pool, GFP_ATOMIC); if (!rq->special_vec.bv_page) - return BLKPREP_DEFER; + return BLK_STS_RESOURCE; + clear_highpage(rq->special_vec.bv_page); rq->special_vec.bv_offset = 0; rq->special_vec.bv_len = data_len; rq->rq_flags |= RQF_SPECIAL_PAYLOAD; -- Jens Axboe