Re: [GIT PULL] Block changes for 4.21-rc
From: Jens Axboe <axboe@kernel.dk>
Date: 2018-12-23 03:35:27
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