From patchwork Tue Oct 6 07:07:17 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 11818125 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id E945059D for ; Tue, 6 Oct 2020 07:07:28 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C350A20870 for ; Tue, 6 Oct 2020 07:07:28 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="vgjiBSig" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727143AbgJFHH1 (ORCPT ); Tue, 6 Oct 2020 03:07:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52244 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727117AbgJFHH0 (ORCPT ); Tue, 6 Oct 2020 03:07:26 -0400 Received: from casper.infradead.org (casper.infradead.org [IPv6:2001:8b0:10b:1236::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 19BC6C061755 for ; Tue, 6 Oct 2020 00:07:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=aPBmv+O69ihed5UuZR+x5KtVXVLpLm3Yt1NX1zge5vk=; b=vgjiBSigX7+QS/L/BhXkLIbpZC ty4X0U2WxWVb6oMNo5LSNbw3nd/R76+JSTrw/yXKDT00L9ESKLlx2lZf+0WBe7t/42PtKtZqD2pxk 530FKAOlFGmZWd8R/l3wF00vAW+b0BkfP+e7SEetQAuO2qbDCBFN56Dd6L413POxAs4klW4ku3fdH r2nlrO748eCFkjo7ybPK9qg3pSARuI4IdABfdN1wmJGqKbnV/iZVvAhlRvQjRIPZt1K42rNVZBmLa iHTMWvQiwOqABcbwyIY64XbHQdB72mbuzlcDrnQGamjd03DtACOzjJer6Z4U+T8UxYpWN8lQb+3AI 5Q6uqvmw==; Received: from [2001:4bb8:184:92a2:9ae2:c87f:2c64:2882] (helo=localhost) by casper.infradead.org with esmtpsa (Exim 4.92.3 #3 (Red Hat Linux)) id 1kPh4E-0002X8-Jn; Tue, 06 Oct 2020 07:07:22 +0000 From: Christoph Hellwig To: Jens Axboe Cc: "Martin K. Petersen" , linux-block@vger.kernel.org Subject: [PATCH 1/3] block: remove the unused blk_integrity_merge_rq export Date: Tue, 6 Oct 2020 09:07:17 +0200 Message-Id: <20201006070719.427627-2-hch@lst.de> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201006070719.427627-1-hch@lst.de> References: <20201006070719.427627-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by casper.infradead.org. See http://www.infradead.org/rpr.html Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org Also move the definition from the public blkdev.h to the private block/blk.h header. Signed-off-by: Christoph Hellwig --- block/blk-integrity.c | 1 - block/blk.h | 8 ++++++++ include/linux/blkdev.h | 8 -------- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/block/blk-integrity.c b/block/blk-integrity.c index 2b36a8f9b81390..a262e069eb3fe6 100644 --- a/block/blk-integrity.c +++ b/block/blk-integrity.c @@ -183,7 +183,6 @@ bool blk_integrity_merge_rq(struct request_queue *q, struct request *req, return true; } -EXPORT_SYMBOL(blk_integrity_merge_rq); bool blk_integrity_merge_bio(struct request_queue *q, struct request *req, struct bio *bio) diff --git a/block/blk.h b/block/blk.h index c08762e10b0470..ba4e8ac538cdc7 100644 --- a/block/blk.h +++ b/block/blk.h @@ -120,6 +120,9 @@ static inline bool bio_integrity_endio(struct bio *bio) return true; } +bool blk_integrity_merge_rq(struct request_queue *, struct request *, + struct request *); + static inline bool integrity_req_gap_back_merge(struct request *req, struct bio *next) { @@ -143,6 +146,11 @@ static inline bool integrity_req_gap_front_merge(struct request *req, void blk_integrity_add(struct gendisk *); void blk_integrity_del(struct gendisk *); #else /* CONFIG_BLK_DEV_INTEGRITY */ +static inline bool blk_integrity_merge_rq(struct request_queue *rq, + struct request *r1, struct request *r2) +{ + return true; +} static inline bool integrity_req_gap_back_merge(struct request *req, struct bio *next) { diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index cf80e61b4c5e1a..1c01e724659273 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -1663,8 +1663,6 @@ extern int blk_integrity_compare(struct gendisk *, struct gendisk *); extern int blk_rq_map_integrity_sg(struct request_queue *, struct bio *, struct scatterlist *); extern int blk_rq_count_integrity_sg(struct request_queue *, struct bio *); -extern bool blk_integrity_merge_rq(struct request_queue *, struct request *, - struct request *); extern bool blk_integrity_merge_bio(struct request_queue *, struct request *, struct bio *); @@ -1794,12 +1792,6 @@ static inline unsigned short queue_max_integrity_segments(const struct request_q { return 0; } -static inline bool blk_integrity_merge_rq(struct request_queue *rq, - struct request *r1, - struct request *r2) -{ - return true; -} static inline bool blk_integrity_merge_bio(struct request_queue *rq, struct request *r, struct bio *b) From patchwork Tue Oct 6 07:07:18 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 11818123 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A8A61112E for ; Tue, 6 Oct 2020 07:07:28 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4BF5220760 for ; Tue, 6 Oct 2020 07:07:28 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="YgIIZGm2" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727105AbgJFHH1 (ORCPT ); Tue, 6 Oct 2020 03:07:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52250 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727143AbgJFHH0 (ORCPT ); Tue, 6 Oct 2020 03:07:26 -0400 Received: from casper.infradead.org (casper.infradead.org [IPv6:2001:8b0:10b:1236::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1BC21C0613D2 for ; Tue, 6 Oct 2020 00:07:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=v3qm8jk/m29MYSu/R0mBBoqOjSNzON7a8VE8CzosqD0=; b=YgIIZGm2VzT81n7+BUEYpO8LIz Y0OL+V47GXmj32KxOeDFjF4JaQGGx6AdY+f1obIXqVmfWiTzapQgwdmWtvrz/w8NJCyl7yJpzDqQY swM+zaF9j8tqpUninwSPFInn2cB2eB2ZGfVA0+dTTpEko06YMjUc1TW4XltMM8kXaKwKPZpXvA6UT nt9SC4l6Smzwg8aTg58cgJXPDswTc2R6na9ac27zrAafxljer23e11xqc5ru1VDTglWRnBsxdQFpt lAs1C4Dh/NQL9qhU01A5pZOvUSITSrL3+ElC0ngkAO76JPchxIZgVohPbAob14e7O7Vdww2T+ZOQZ 2r0GlGfg==; Received: from [2001:4bb8:184:92a2:9ae2:c87f:2c64:2882] (helo=localhost) by casper.infradead.org with esmtpsa (Exim 4.92.3 #3 (Red Hat Linux)) id 1kPh4F-0002XM-TW; Tue, 06 Oct 2020 07:07:24 +0000 From: Christoph Hellwig To: Jens Axboe Cc: "Martin K. Petersen" , linux-block@vger.kernel.org Subject: [PATCH 2/3] block: remove the unused blk_integrity_merge_bio export Date: Tue, 6 Oct 2020 09:07:18 +0200 Message-Id: <20201006070719.427627-3-hch@lst.de> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201006070719.427627-1-hch@lst.de> References: <20201006070719.427627-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by casper.infradead.org. See http://www.infradead.org/rpr.html Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org Also move the definition from the public blkdev.h to the private block/blk.h header. Signed-off-by: Christoph Hellwig --- block/blk-integrity.c | 1 - block/blk.h | 7 +++++++ include/linux/blkdev.h | 8 -------- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/block/blk-integrity.c b/block/blk-integrity.c index a262e069eb3fe6..410da060d1f5ad 100644 --- a/block/blk-integrity.c +++ b/block/blk-integrity.c @@ -211,7 +211,6 @@ bool blk_integrity_merge_bio(struct request_queue *q, struct request *req, return true; } -EXPORT_SYMBOL(blk_integrity_merge_bio); struct integrity_sysfs_entry { struct attribute attr; diff --git a/block/blk.h b/block/blk.h index ba4e8ac538cdc7..8fcb146d30034f 100644 --- a/block/blk.h +++ b/block/blk.h @@ -122,6 +122,8 @@ static inline bool bio_integrity_endio(struct bio *bio) bool blk_integrity_merge_rq(struct request_queue *, struct request *, struct request *); +bool blk_integrity_merge_bio(struct request_queue *, struct request *, + struct bio *); static inline bool integrity_req_gap_back_merge(struct request *req, struct bio *next) @@ -151,6 +153,11 @@ static inline bool blk_integrity_merge_rq(struct request_queue *rq, { return true; } +static inline bool blk_integrity_merge_bio(struct request_queue *rq, + struct request *r, struct bio *b) +{ + return true; +} static inline bool integrity_req_gap_back_merge(struct request *req, struct bio *next) { diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 1c01e724659273..a8b04af50191dc 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -1663,8 +1663,6 @@ extern int blk_integrity_compare(struct gendisk *, struct gendisk *); extern int blk_rq_map_integrity_sg(struct request_queue *, struct bio *, struct scatterlist *); extern int blk_rq_count_integrity_sg(struct request_queue *, struct bio *); -extern bool blk_integrity_merge_bio(struct request_queue *, struct request *, - struct bio *); static inline struct blk_integrity *blk_get_integrity(struct gendisk *disk) { @@ -1792,12 +1790,6 @@ static inline unsigned short queue_max_integrity_segments(const struct request_q { return 0; } -static inline bool blk_integrity_merge_bio(struct request_queue *rq, - struct request *r, - struct bio *b) -{ - return true; -} static inline unsigned int bio_integrity_intervals(struct blk_integrity *bi, unsigned int sectors) From patchwork Tue Oct 6 07:07:19 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 11818127 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 6905C59D for ; Tue, 6 Oct 2020 07:07:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id ED4D72080A for ; Tue, 6 Oct 2020 07:07:31 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="fXxp2Md7" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727162AbgJFHH2 (ORCPT ); Tue, 6 Oct 2020 03:07:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52256 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727150AbgJFHH2 (ORCPT ); Tue, 6 Oct 2020 03:07:28 -0400 Received: from casper.infradead.org (casper.infradead.org [IPv6:2001:8b0:10b:1236::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 45705C061755 for ; Tue, 6 Oct 2020 00:07:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=b4c/PPQgiIo5w44oJfiaLxdplqQNYi0qhjxufCK3Q9U=; b=fXxp2Md7Omwk/kV5/Ozw6ORfcC tjnK5kRFzKnSWhKOJbHn4QCSDmmwuNj1j/N+qhHvYV3oPtfoFY4gFUR22uOxavbym1mk0jLouWvVu KvwSnM9cziAWtGROQXVds3vSqNLCPILrySR+NBLggRbsyovWy6dPoq7RAOy2p/onFe1zBpdGe5W4g 354d2lC6WqDPyQ6gv1jsnDzn98c8Fm2T2LymRchq8b4bvNFOYvgo5xtCqszjJYPeNlPtWu+NqA1e5 bAtFhoxIxv1k9d+rhieP2DMciofgSB0M2mhI8+xp1YAVWG/dMMLOmw7Jw1ye4moVv1/6N/myegVtb kl1uGhKg==; Received: from [2001:4bb8:184:92a2:9ae2:c87f:2c64:2882] (helo=localhost) by casper.infradead.org with esmtpsa (Exim 4.92.3 #3 (Red Hat Linux)) id 1kPh4H-0002Xi-B4; Tue, 06 Oct 2020 07:07:25 +0000 From: Christoph Hellwig To: Jens Axboe Cc: "Martin K. Petersen" , linux-block@vger.kernel.org Subject: [PATCH 3/3] block: move blk_mq_sched_try_merge to blk-merge.c Date: Tue, 6 Oct 2020 09:07:19 +0200 Message-Id: <20201006070719.427627-4-hch@lst.de> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201006070719.427627-1-hch@lst.de> References: <20201006070719.427627-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by casper.infradead.org. See http://www.infradead.org/rpr.html Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org Move blk_mq_sched_try_merge to blk-merge.c, which allows to mark a lot of the merge infrastructure static there. Signed-off-by: Christoph Hellwig --- block/blk-merge.c | 62 +++++++++++++++++++++++++++++++++++--------- block/blk-mq-sched.c | 32 ----------------------- block/blk.h | 19 -------------- 3 files changed, 50 insertions(+), 63 deletions(-) diff --git a/block/blk-merge.c b/block/blk-merge.c index 6ed715835d45f6..bcf5e458060337 100644 --- a/block/blk-merge.c +++ b/block/blk-merge.c @@ -580,7 +580,8 @@ int ll_back_merge_fn(struct request *req, struct bio *bio, unsigned int nr_segs) return ll_new_hw_segment(req, bio, nr_segs); } -int ll_front_merge_fn(struct request *req, struct bio *bio, unsigned int nr_segs) +static int ll_front_merge_fn(struct request *req, struct bio *bio, + unsigned int nr_segs) { if (req_gap_front_merge(req, bio)) return 0; @@ -810,7 +811,8 @@ static struct request *attempt_merge(struct request_queue *q, return next; } -struct request *attempt_back_merge(struct request_queue *q, struct request *rq) +static struct request *attempt_back_merge(struct request_queue *q, + struct request *rq) { struct request *next = elv_latter_request(q, rq); @@ -820,7 +822,8 @@ struct request *attempt_back_merge(struct request_queue *q, struct request *rq) return NULL; } -struct request *attempt_front_merge(struct request_queue *q, struct request *rq) +static struct request *attempt_front_merge(struct request_queue *q, + struct request *rq) { struct request *prev = elv_former_request(q, rq); @@ -907,9 +910,14 @@ static void blk_account_io_merge_bio(struct request *req) part_stat_unlock(); } -enum bio_merge_status bio_attempt_back_merge(struct request *req, - struct bio *bio, - unsigned int nr_segs) +enum bio_merge_status { + BIO_MERGE_OK, + BIO_MERGE_NONE, + BIO_MERGE_FAILED, +}; + +static enum bio_merge_status bio_attempt_back_merge(struct request *req, + struct bio *bio, unsigned int nr_segs) { const int ff = bio->bi_opf & REQ_FAILFAST_MASK; @@ -932,9 +940,8 @@ enum bio_merge_status bio_attempt_back_merge(struct request *req, return BIO_MERGE_OK; } -enum bio_merge_status bio_attempt_front_merge(struct request *req, - struct bio *bio, - unsigned int nr_segs) +static enum bio_merge_status bio_attempt_front_merge(struct request *req, + struct bio *bio, unsigned int nr_segs) { const int ff = bio->bi_opf & REQ_FAILFAST_MASK; @@ -959,9 +966,8 @@ enum bio_merge_status bio_attempt_front_merge(struct request *req, return BIO_MERGE_OK; } -enum bio_merge_status bio_attempt_discard_merge(struct request_queue *q, - struct request *req, - struct bio *bio) +static enum bio_merge_status bio_attempt_discard_merge(struct request_queue *q, + struct request *req, struct bio *bio) { unsigned short segments = blk_rq_nr_discard_segments(req); @@ -1096,3 +1102,35 @@ bool blk_bio_list_merge(struct request_queue *q, struct list_head *list, return false; } EXPORT_SYMBOL_GPL(blk_bio_list_merge); + +bool blk_mq_sched_try_merge(struct request_queue *q, struct bio *bio, + unsigned int nr_segs, struct request **merged_request) +{ + struct request *rq; + + switch (elv_merge(q, &rq, bio)) { + case ELEVATOR_BACK_MERGE: + if (!blk_mq_sched_allow_merge(q, rq, bio)) + return false; + if (bio_attempt_back_merge(rq, bio, nr_segs) != BIO_MERGE_OK) + return false; + *merged_request = attempt_back_merge(q, rq); + if (!*merged_request) + elv_merged_request(q, rq, ELEVATOR_BACK_MERGE); + return true; + case ELEVATOR_FRONT_MERGE: + if (!blk_mq_sched_allow_merge(q, rq, bio)) + return false; + if (bio_attempt_front_merge(rq, bio, nr_segs) != BIO_MERGE_OK) + return false; + *merged_request = attempt_front_merge(q, rq); + if (!*merged_request) + elv_merged_request(q, rq, ELEVATOR_FRONT_MERGE); + return true; + case ELEVATOR_DISCARD_MERGE: + return bio_attempt_discard_merge(q, rq, bio) == BIO_MERGE_OK; + default: + return false; + } +} +EXPORT_SYMBOL_GPL(blk_mq_sched_try_merge); diff --git a/block/blk-mq-sched.c b/block/blk-mq-sched.c index 3e9596738852e1..e7a690ae86c9d6 100644 --- a/block/blk-mq-sched.c +++ b/block/blk-mq-sched.c @@ -344,38 +344,6 @@ void blk_mq_sched_dispatch_requests(struct blk_mq_hw_ctx *hctx) } } -bool blk_mq_sched_try_merge(struct request_queue *q, struct bio *bio, - unsigned int nr_segs, struct request **merged_request) -{ - struct request *rq; - - switch (elv_merge(q, &rq, bio)) { - case ELEVATOR_BACK_MERGE: - if (!blk_mq_sched_allow_merge(q, rq, bio)) - return false; - if (bio_attempt_back_merge(rq, bio, nr_segs) != BIO_MERGE_OK) - return false; - *merged_request = attempt_back_merge(q, rq); - if (!*merged_request) - elv_merged_request(q, rq, ELEVATOR_BACK_MERGE); - return true; - case ELEVATOR_FRONT_MERGE: - if (!blk_mq_sched_allow_merge(q, rq, bio)) - return false; - if (bio_attempt_front_merge(rq, bio, nr_segs) != BIO_MERGE_OK) - return false; - *merged_request = attempt_front_merge(q, rq); - if (!*merged_request) - elv_merged_request(q, rq, ELEVATOR_FRONT_MERGE); - return true; - case ELEVATOR_DISCARD_MERGE: - return bio_attempt_discard_merge(q, rq, bio) == BIO_MERGE_OK; - default: - return false; - } -} -EXPORT_SYMBOL_GPL(blk_mq_sched_try_merge); - bool __blk_mq_sched_bio_merge(struct request_queue *q, struct bio *bio, unsigned int nr_segs) { diff --git a/block/blk.h b/block/blk.h index 8fcb146d30034f..dfab98465db9a5 100644 --- a/block/blk.h +++ b/block/blk.h @@ -29,12 +29,6 @@ struct blk_flush_queue { spinlock_t mq_flush_lock; }; -enum bio_merge_status { - BIO_MERGE_OK, - BIO_MERGE_NONE, - BIO_MERGE_FAILED, -}; - extern struct kmem_cache *blk_requestq_cachep; extern struct kobj_type blk_queue_ktype; extern struct ida blk_queue_ida; @@ -190,15 +184,6 @@ static inline void blk_integrity_del(struct gendisk *disk) unsigned long blk_rq_timeout(unsigned long timeout); void blk_add_timer(struct request *req); -enum bio_merge_status bio_attempt_front_merge(struct request *req, - struct bio *bio, - unsigned int nr_segs); -enum bio_merge_status bio_attempt_back_merge(struct request *req, - struct bio *bio, - unsigned int nr_segs); -enum bio_merge_status bio_attempt_discard_merge(struct request_queue *q, - struct request *req, - struct bio *bio); bool blk_attempt_plug_merge(struct request_queue *q, struct bio *bio, unsigned int nr_segs, struct request **same_queue_rq); bool blk_bio_list_merge(struct request_queue *q, struct list_head *list, @@ -249,10 +234,6 @@ ssize_t part_timeout_store(struct device *, struct device_attribute *, void __blk_queue_split(struct bio **bio, unsigned int *nr_segs); int ll_back_merge_fn(struct request *req, struct bio *bio, unsigned int nr_segs); -int ll_front_merge_fn(struct request *req, struct bio *bio, - unsigned int nr_segs); -struct request *attempt_back_merge(struct request_queue *q, struct request *rq); -struct request *attempt_front_merge(struct request_queue *q, struct request *rq); int blk_attempt_req_merge(struct request_queue *q, struct request *rq, struct request *next); unsigned int blk_recalc_rq_segments(struct request *rq);