From patchwork Mon Mar 20 20:43:19 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 741181 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3vn7Fr2kw1z9rvt for ; Tue, 21 Mar 2017 07:43:44 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=infradead.org header.i=@infradead.org header.b="ERPpLe0c"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755322AbdCTUno (ORCPT ); Mon, 20 Mar 2017 16:43:44 -0400 Received: from bombadil.infradead.org ([65.50.211.133]:41056 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755141AbdCTUnh (ORCPT ); Mon, 20 Mar 2017 16:43:37 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=References:In-Reply-To:Message-Id: Date:Subject:Cc:To:From:Sender:Reply-To:MIME-Version:Content-Type: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=6loSnUAYukRTo+I3Hz0awEOblX59tT1UQ4juG6BuFLE=; b=ERPpLe0cCa97DRQIz/rsLeYv4 hzZI8nbYqK2g/z9COD1CRhbpHmgm4YY96hbwd5++8E1R5RJYpcz/paOmpaL5SVDZoUFip9LKGGXbw A2866pYrvH01mWJ/CO6wB9CnJvzImCai3vuy95IwyVDX22aydMuTDta94LxJ4pM5CvwwDXc3sao5y 2goid5XsBTh+exEon7oq800e0wrWVnfJDojNplGUAkkQW5OywZU3j0ZimfkkTjmX+1re2v9FOo5Xf It9rZXYfeRnlEfhRMfGwIdTgMpw3EMzDihSq2gf0rpexsooK7QUh33rFpWRZyjybGihuMhAGgoV98 GlMHQf2Xg==; Received: from pat.hitachigst.com ([199.255.44.5] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.87 #1 (Red Hat Linux)) id 1cq49J-0001fE-Ae; Mon, 20 Mar 2017 20:43:29 +0000 From: Christoph Hellwig To: tj@kernel.org, martin.petersen@oracle.com, axboe@kernel.dk Cc: linux-ide@vger.kernel.org, linux-scsi@vger.kernel.org, linux-block@vger.kernel.org Subject: [PATCH 7/7] sd: use ZERO_PAGE for WRITE_SAME payloads Date: Mon, 20 Mar 2017 16:43:19 -0400 Message-Id: <20170320204319.12628-8-hch@lst.de> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170320204319.12628-1-hch@lst.de> References: <20170320204319.12628-1-hch@lst.de> X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html Sender: linux-ide-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ide@vger.kernel.org We're never touching the contents of the page, so save a memory allocation for these cases. Signed-off-by: Christoph Hellwig Reviewed-by: Bart Van Assche --- drivers/scsi/sd.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index c18fe9ff1f8f..af632e350ab4 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -756,7 +756,7 @@ static int sd_setup_write_same16_cmnd(struct scsi_cmnd *cmd) 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 = ZERO_PAGE(0); if (!rq->special_vec.bv_page) return BLKPREP_DEFER; rq->special_vec.bv_offset = 0; @@ -785,7 +785,7 @@ static int sd_setup_write_same10_cmnd(struct scsi_cmnd *cmd, bool unmap) 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 = ZERO_PAGE(0); if (!rq->special_vec.bv_page) return BLKPREP_DEFER; rq->special_vec.bv_offset = 0; @@ -1256,7 +1256,8 @@ static void sd_uninit_command(struct scsi_cmnd *SCpnt) { struct request *rq = SCpnt->request; - if (rq->rq_flags & RQF_SPECIAL_PAYLOAD) + if ((rq->rq_flags & RQF_SPECIAL_PAYLOAD) && + rq->special_vec.bv_page != ZERO_PAGE(0)) __free_page(rq->special_vec.bv_page); if (SCpnt->cmnd != scsi_req(rq)->cmd) {