From: Christoph Hellwig <hch@lst.de>
To: James Bottomley <James.Bottomley@steeleye.com>
Cc: linux-scsi@vger.kernel.org
Subject: [PATCH] remove scsi_merge.c
Date: Thu, 24 Oct 2002 02:53:17 +0200 [thread overview]
Message-ID: <20021024025317.B20656@lst.de> (raw)
In 2.5.44 it contains only two functions, that both have exactly
one caller in other files and both are entirely unrelated to
request merging..
--- 1.28/drivers/scsi/Makefile Sun Oct 13 17:12:43 2002
+++ edited/drivers/scsi/Makefile Wed Oct 23 17:09:17 2002
@@ -122,8 +122,8 @@
obj-$(CONFIG_CHR_DEV_SG) += sg.o
scsi_mod-objs := scsi.o hosts.o scsi_ioctl.o constants.o scsicam.o \
- scsi_proc.o scsi_error.o scsi_lib.o scsi_merge.o \
- scsi_scan.o scsi_syms.o
+ scsi_proc.o scsi_error.o scsi_lib.o scsi_scan.o \
+ scsi_syms.o
sd_mod-objs := sd.o
sr_mod-objs := sr.o sr_ioctl.o sr_vendor.o
--- 1.29/drivers/scsi/scsi.h Thu Oct 17 17:16:34 2002
+++ edited/drivers/scsi/scsi.h Wed Oct 23 17:12:40 2002
@@ -446,20 +446,6 @@
void scsi_free_sgtable(struct scatterlist *sgl, int index);
/*
- * Prototypes for functions in scsi_dma.c
- */
-void scsi_resize_dma_pool(void);
-int scsi_init_minimal_dma_pool(void);
-void *scsi_malloc(unsigned int);
-int scsi_free(void *, unsigned int);
-
-/*
- * Prototypes for functions in scsi_merge.c
- */
-extern void scsi_initialize_merge_fn(Scsi_Device *SDpnt);
-extern int scsi_init_io(Scsi_Cmnd *SCpnt);
-
-/*
* Prototypes for functions in scsi_lib.c
*/
extern int scsi_maybe_unblock_host(Scsi_Device * SDpnt);
--- 1.35/drivers/scsi/scsi_lib.c Fri Oct 18 15:19:51 2002
+++ edited/drivers/scsi/scsi_lib.c Wed Oct 23 17:07:52 2002
@@ -730,6 +730,92 @@
}
/*
+ * Function: scsi_init_io()
+ *
+ * Purpose: SCSI I/O initialize function.
+ *
+ * Arguments: SCpnt - Command descriptor we wish to initialize
+ *
+ * Returns: 1 on success.
+ */
+static int scsi_init_io(Scsi_Cmnd *SCpnt)
+{
+ struct request *req = SCpnt->request;
+ struct scatterlist *sgpnt;
+ int count, gfp_mask;
+
+ /*
+ * non-sg block request. FIXME: check bouncing for isa hosts!
+ */
+ if ((req->flags & REQ_BLOCK_PC) && !req->bio) {
+ /*
+ * FIXME: isa bouncing
+ */
+ if (SCpnt->host->unchecked_isa_dma)
+ goto fail;
+
+ SCpnt->request_bufflen = req->data_len;
+ SCpnt->request_buffer = req->data;
+ req->buffer = req->data;
+ SCpnt->use_sg = 0;
+ return 1;
+ }
+
+ /*
+ * we used to not use scatter-gather for single segment request,
+ * but now we do (it makes highmem I/O easier to support without
+ * kmapping pages)
+ */
+ SCpnt->use_sg = req->nr_phys_segments;
+
+ gfp_mask = GFP_NOIO;
+ if (in_interrupt()) {
+ gfp_mask &= ~__GFP_WAIT;
+ gfp_mask |= __GFP_HIGH;
+ }
+
+ /*
+ * if sg table allocation fails, requeue request later.
+ */
+ sgpnt = scsi_alloc_sgtable(SCpnt, gfp_mask);
+ if (unlikely(!sgpnt))
+ goto out;
+
+ SCpnt->request_buffer = (char *) sgpnt;
+ SCpnt->request_bufflen = req->nr_sectors << 9;
+ req->buffer = NULL;
+
+ /*
+ * Next, walk the list, and fill in the addresses and sizes of
+ * each segment.
+ */
+ count = blk_rq_map_sg(req->q, req, SCpnt->request_buffer);
+
+ /*
+ * mapped well, send it off
+ */
+ if (unlikely(count > SCpnt->use_sg))
+ goto incorrect;
+ SCpnt->use_sg = count;
+ return 1;
+
+incorrect:
+ printk(KERN_ERR "Incorrect number of segments after building list\n");
+ printk(KERN_ERR "counted %d, received %d\n", count, SCpnt->use_sg);
+ printk(KERN_ERR "req nr_sec %lu, cur_nr_sec %u\n", req->nr_sectors,
+ req->current_nr_sectors);
+
+ /*
+ * kill it. there should be no leftover blocks in this request
+ */
+fail:
+ SCpnt = scsi_end_request(SCpnt, 0, req->nr_sectors);
+ BUG_ON(SCpnt);
+out:
+ return 0;
+}
+
+/*
* Function: scsi_request_fn()
*
* Purpose: Generic version of request function for SCSI hosts.
--- 1.24/drivers/scsi/scsi_merge.c Fri Oct 18 15:19:51 2002
+++ edited/drivers/scsi/scsi_merge.c Wed Oct 23 17:08:07 2002
@@ -1,168 +0,0 @@
-/*
- * scsi_merge.c Copyright (C) 1999 Eric Youngdale
- *
- * SCSI queueing library.
- * Initial versions: Eric Youngdale (eric@andante.org).
- * Based upon conversations with large numbers
- * of people at Linux Expo.
- * Support for dynamic DMA mapping: Jakub Jelinek (jakub@redhat.com).
- * Support for highmem I/O: Jens Axboe <axboe@suse.de>
- */
-
-/*
- * This file contains queue management functions that are used by SCSI.
- * We need to ensure that commands do not grow so large that they cannot
- * be handled all at once by a host adapter.
- */
-
-#include <linux/config.h>
-#include <linux/module.h>
-
-#include <linux/sched.h>
-#include <linux/timer.h>
-#include <linux/string.h>
-#include <linux/slab.h>
-#include <linux/ioport.h>
-#include <linux/kernel.h>
-#include <linux/stat.h>
-#include <linux/blk.h>
-#include <linux/interrupt.h>
-#include <linux/delay.h>
-#include <linux/smp_lock.h>
-
-
-#define __KERNEL_SYSCALLS__
-
-#include <linux/unistd.h>
-
-#include <asm/system.h>
-#include <asm/irq.h>
-#include <asm/dma.h>
-#include <asm/io.h>
-
-#include "scsi.h"
-#include "hosts.h"
-#include <scsi/scsi_ioctl.h>
-
-/*
- * Function: scsi_init_io()
- *
- * Purpose: SCSI I/O initialize function.
- *
- * Arguments: SCpnt - Command descriptor we wish to initialize
- *
- * Returns: 1 on success.
- *
- * Lock status:
- */
-int scsi_init_io(Scsi_Cmnd *SCpnt)
-{
- struct request *req = SCpnt->request;
- struct scatterlist *sgpnt;
- int count, gfp_mask;
-
- /*
- * non-sg block request. FIXME: check bouncing for isa hosts!
- */
- if ((req->flags & REQ_BLOCK_PC) && !req->bio) {
- /*
- * FIXME: isa bouncing
- */
- if (SCpnt->host->unchecked_isa_dma)
- goto fail;
-
- SCpnt->request_bufflen = req->data_len;
- SCpnt->request_buffer = req->data;
- req->buffer = req->data;
- SCpnt->use_sg = 0;
- return 1;
- }
-
- /*
- * we used to not use scatter-gather for single segment request,
- * but now we do (it makes highmem I/O easier to support without
- * kmapping pages)
- */
- SCpnt->use_sg = req->nr_phys_segments;
-
- gfp_mask = GFP_NOIO;
- if (in_interrupt()) {
- gfp_mask &= ~__GFP_WAIT;
- gfp_mask |= __GFP_HIGH;
- }
-
- /*
- * if sg table allocation fails, requeue request later.
- */
- sgpnt = scsi_alloc_sgtable(SCpnt, gfp_mask);
- if (!sgpnt)
- return 0;
-
- SCpnt->request_buffer = (char *) sgpnt;
- SCpnt->request_bufflen = req->nr_sectors << 9;
- req->buffer = NULL;
-
- /*
- * Next, walk the list, and fill in the addresses and sizes of
- * each segment.
- */
- count = blk_rq_map_sg(req->q, req, SCpnt->request_buffer);
-
- /*
- * mapped well, send it off
- */
- if (count <= SCpnt->use_sg) {
- SCpnt->use_sg = count;
- return 1;
- }
-
- printk("Incorrect number of segments after building list\n");
- printk("counted %d, received %d\n", count, SCpnt->use_sg);
- printk("req nr_sec %lu, cur_nr_sec %u\n", req->nr_sectors, req->current_nr_sectors);
-
- /*
- * kill it. there should be no leftover blocks in this request
- */
-fail:
- SCpnt = scsi_end_request(SCpnt, 0, req->nr_sectors);
- BUG_ON(SCpnt);
- return 0;
-}
-
-/*
- * Function: scsi_initialize_merge_fn()
- *
- * Purpose: Initialize merge function for a host
- *
- * Arguments: SHpnt - Host descriptor.
- *
- * Returns: Nothing.
- *
- * Lock status:
- *
- * Notes:
- */
-void scsi_initialize_merge_fn(Scsi_Device * SDpnt)
-{
- struct Scsi_Host *SHpnt = SDpnt->host;
- request_queue_t *q = &SDpnt->request_queue;
- u64 bounce_limit;
-
- /*
- * The generic merging functions work just fine for us.
- * Enable highmem I/O, if appropriate.
- */
- bounce_limit = BLK_BOUNCE_HIGH;
- if (SHpnt->highmem_io) {
- if (!PCI_DMA_BUS_IS_PHYS)
- /* Platforms with virtual-DMA translation
- * hardware have no practical limit.
- */
- bounce_limit = BLK_BOUNCE_ANY;
- else if (SHpnt->pci_dev)
- bounce_limit = SHpnt->pci_dev->dma_mask;
- } else if (SHpnt->unchecked_isa_dma)
- bounce_limit = BLK_BOUNCE_ISA;
-
- blk_queue_bounce_limit(q, bounce_limit);
-}
--- 1.30/drivers/scsi/scsi_scan.c Tue Oct 22 13:06:06 2002
+++ edited/drivers/scsi/scsi_scan.c Wed Oct 23 17:04:01 2002
@@ -483,6 +483,35 @@
}
/**
+ * scsi_initialize_merge_fn() -Æ£initialize merge function for a host
+ * @sd: host descriptor
+ */
+static void scsi_initialize_merge_fn(struct scsi_device *sd)
+{
+ request_queue_t *q = &sd->request_queue;
+ struct Scsi_Host *sh = sd->host;
+ u64 bounce_limit;
+
+ if (sh->highmem_io) {
+ if (sh->pci_dev && PCI_DMA_BUS_IS_PHYS) {
+ bounce_limit = sh->pci_dev->dma_mask;
+ } else {
+ /*
+ * Platforms with virtual-DMA translation
+ * hardware have no practical limit.
+ */
+ bounce_limit = BLK_BOUNCE_ANY;
+ }
+ } else if (sh->unchecked_isa_dma) {
+ bounce_limit = BLK_BOUNCE_ISA;
+ } else {
+ bounce_limit = BLK_BOUNCE_HIGH;
+ }
+
+ blk_queue_bounce_limit(q, bounce_limit);
+}
+
+/**
* scsi_alloc_sdev - allocate and setup a Scsi_Device
*
* Description:
-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
reply other threads:[~2002-10-24 0:53 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20021024025317.B20656@lst.de \
--to=hch@lst.de \
--cc=James.Bottomley@steeleye.com \
--cc=linux-scsi@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).