linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: Patch to update scsi_debug.c
@ 2001-11-30  5:13 Douglas Gilbert
  2001-11-30  5:14 ` BALBIR SINGH
  0 siblings, 1 reply; 4+ messages in thread
From: Douglas Gilbert @ 2001-11-30  5:13 UTC (permalink / raw)
  To: linux-kernel

Pete Zaitcev <zaitcev@redhat.com> wrote:

> I would like to have scsi_debug with a variable number 
> of hosts. Patch is attached. Does anyone object to the 
> demise of scsi_debug.h?

<snipped patch/>

Pete,
Maybe you may like to consider this effort. Apart from allowing
extra hosts (hundreds of them via boot/module option) it is
like a RAM disk. The default RAM allocation is 8 MB which
can be overridden by a boot/module option. You can
run fdisk on it, make a fs, mount it, etc.

See:
http://www.torque.net/sg/sdebug.html

It runs properly on SMP (Eric's didn't) and supports a
reasonable number of SCSI commands including READ_16 and
WRITE_16. I used the latter 2 commands to test (via sg)
that the recently added 16 byte CDBs worked.

BTW I kept scsi_debug.h as most other SCSI adapter drivers
have .h and .c components.

Doug Gilbert

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Patch to update scsi_debug.c
  2001-11-30  5:13 Patch to update scsi_debug.c Douglas Gilbert
@ 2001-11-30  5:14 ` BALBIR SINGH
  0 siblings, 0 replies; 4+ messages in thread
From: BALBIR SINGH @ 2001-11-30  5:14 UTC (permalink / raw)
  Cc: linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1326 bytes --]


The ramdisk emulation should be easy to do, you
can get sample code from most of the iSCSI
implementations on Linux. Most of them simulate a
ramdisk on the target side.

Balbir

Douglas Gilbert wrote:

>Pete Zaitcev <zaitcev@redhat.com> wrote:
>
>>I would like to have scsi_debug with a variable number 
>>of hosts. Patch is attached. Does anyone object to the 
>>demise of scsi_debug.h?
>>
>
><snipped patch/>
>
>Pete,
>Maybe you may like to consider this effort. Apart from allowing
>extra hosts (hundreds of them via boot/module option) it is
>like a RAM disk. The default RAM allocation is 8 MB which
>can be overridden by a boot/module option. You can
>run fdisk on it, make a fs, mount it, etc.
>
>See:
>http://www.torque.net/sg/sdebug.html
>
>It runs properly on SMP (Eric's didn't) and supports a
>reasonable number of SCSI commands including READ_16 and
>WRITE_16. I used the latter 2 commands to test (via sg)
>that the recently added 16 byte CDBs worked.
>
>BTW I kept scsi_debug.h as most other SCSI adapter drivers
>have .h and .c components.
>
>Doug Gilbert
>-
>To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>the body of a message to majordomo@vger.kernel.org
>More majordomo info at  http://vger.kernel.org/majordomo-info.html
>Please read the FAQ at  http://www.tux.org/lkml/
>



[-- Attachment #2: InterScan_Disclaimer.txt --]
[-- Type: text/plain, Size: 855 bytes --]

-------------------------------------------------------------------------------------------------------------------------
Information transmitted by this E-MAIL is proprietary to Wipro and/or its Customers and
is intended for use only by the individual or entity to which it is
addressed, and may contain information that is privileged, confidential or
exempt from disclosure under applicable law. If you are not the intended
recipient or it appears that this mail has been forwarded to you without
proper authority, you are notified that any use or dissemination of this
information in any manner is strictly prohibited. In such cases, please
notify us immediately at mailto:mailadmin@wipro.com and delete this mail
from your records.
----------------------------------------------------------------------------------------------------------------------

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Patch to update scsi_debug.c
       [not found] <3C07138D.41A77811@interlog.com>
@ 2001-11-30  7:26 ` Pete Zaitcev
  0 siblings, 0 replies; 4+ messages in thread
From: Pete Zaitcev @ 2001-11-30  7:26 UTC (permalink / raw)
  To: linux-kernel

> <snipped patch/>
> 
> Maybe you may like to consider this effort.

> See:
> http://www.torque.net/sg/sdebug.html
> 
> It runs properly on SMP (Eric's didn't) and supports a
> reasonable number of SCSI commands including READ_16 and
> WRITE_16. [...]

Are you going to merge it? If yes, when?

> BTW I kept scsi_debug.h as most other SCSI adapter drivers
> have .h and .c components.

I think it's a carryover from Space.c days or something of
that nature that serves no useful purpose anymore (only makes
it harder to use vi).

-- Pete

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Patch to update scsi_debug.c
@ 2001-11-30  4:15 Pete Zaitcev
  0 siblings, 0 replies; 4+ messages in thread
From: Pete Zaitcev @ 2001-11-30  4:15 UTC (permalink / raw)
  To: linux-kernel; +Cc: Pete Zaitcev

Hi, everyone:

I would like to have scsi_debug with a variable number of hosts.
Patch is attached. Does anyone object to the demise of scsi_debug.h?

Greetings,
-- Pete

diff -urN -X dontdiff linux-2.4.16/drivers/scsi/scsi_debug.c linux-2.4.16-niph/drivers/scsi/scsi_debug.c
--- linux-2.4.16/drivers/scsi/scsi_debug.c	Fri Oct 12 15:35:54 2001
+++ linux-2.4.16-niph/drivers/scsi/scsi_debug.c	Thu Nov 29 20:11:41 2001
@@ -2,9 +2,12 @@
  *  linux/kernel/scsi_debug.c
  *
  *  Copyright (C) 1992  Eric Youngdale
+ *  Copyright (C) 2001  Red Hat, Inc.
  *  Simulate a host adapter with 2 disks attached.  Do a lot of checking
  *  to make sure that we are not getting blocks mixed up, and panic if
  *  anything out of the ordinary is seen.
+ *
+ * 2001/11/25 Variable number of hosts by Pete Zaitcev <zaitcev@yahoo.com>.
  */
 
 #include <linux/config.h>
@@ -19,6 +22,7 @@
 #include <linux/genhd.h>
 #include <linux/fs.h>
 #include <linux/proc_fs.h>
+#include <linux/kdev_t.h>
 
 #include <asm/system.h>
 #include <asm/io.h>
@@ -29,12 +33,11 @@
 
 #include "sd.h"
 
-#include<linux/stat.h>
+#include <linux/stat.h>
 
 /* A few options that we want selected */
 
-#define NR_HOSTS_PRESENT 1
-#define NR_FAKE_DISKS   3
+#define NR_FAKE_TGTS      3
 #define N_HEAD          255
 #define N_SECTOR        63
 #define N_CYLINDER      524
@@ -51,9 +54,6 @@
 /* Read return zeros. Undefine for benchmarking */
 #define CLEAR
 
-/* Number of real scsi disks that will be detected ahead of time */
-static int NR_REAL = -1;
-
 #define NR_BLK_DEV  12
 #ifndef MAJOR_NR
 #define MAJOR_NR 8
@@ -72,13 +72,29 @@
  CAPACITY, 0};
 static int npart = 0;
 
-#include "scsi_debug.h"
+int scsi_debug_detect(Scsi_Host_Template *);
+int scsi_debug_command(Scsi_Cmnd *);
+int scsi_debug_queuecommand(Scsi_Cmnd *, void (*done) (Scsi_Cmnd *));
+int scsi_debug_abort(Scsi_Cmnd *);
+int scsi_debug_biosparam(Disk *, kdev_t, int[]);
+int scsi_debug_reset(Scsi_Cmnd *, unsigned int);
+int scsi_debug_proc_info(char *, char **, off_t, int, int, int);
+
+#define SCSI_DEBUG_MAILBOXES 1
+
 #ifdef DEBUG
 #define DEB(x) x
 #else
 #define DEB(x)
 #endif
 
+struct scsi_debug_host {
+	int instance;
+};
+
+static int nhosts = 1;
+MODULE_PARM(nhosts, "i");
+
 #ifdef SPEEDY
 #define VERIFY1_DEBUG(RW)
 #define VERIFY_DEBUG(RW)
@@ -219,7 +235,7 @@
 	if (done == NULL) {
 		return 0;
 	}
-	DEB(if (target >= NR_FAKE_DISKS) {
+	DEB(if (target >= NR_FAKE_TGTS) {
 	    SCpnt->result = DID_TIME_OUT << 16; done(SCpnt); return 0;
 	    }
 	);
@@ -237,7 +253,7 @@
                 return 0;
         }
 
-	if (target >= NR_FAKE_DISKS || SCpnt->lun != 0) {
+	if (target >= NR_FAKE_TGTS || SCpnt->lun != 0) {
 		SCpnt->result = DID_NO_CONNECT << 16;
 		done(SCpnt);
 		return 0;
@@ -301,8 +317,6 @@
 	case READ_CAPACITY:
 		SCSI_LOG_LLQUEUE(3, printk("Read Capacity\n"));
                 SHpnt = SCpnt->host;
-		if (NR_REAL < 0)
-			NR_REAL = (MINOR(SCpnt->request.rq_dev) >> 4) & 0x0f;
 		memset(buff, 0, bufflen);
 		buff[0] = (CAPACITY >> 24);
 		buff[1] = (CAPACITY >> 16) & 0xff;
@@ -612,16 +626,25 @@
 #endif
 }
 
-
 int scsi_debug_detect(Scsi_Host_Template * tpnt)
 {
+	struct Scsi_Host *host;
+	struct scsi_debug_host *hp;
 	int i;
 
-	for (i = 0; i < NR_HOSTS_PRESENT; i++) {
-		tpnt->proc_name = "scsi_debug";	/* Huh? In the loop??? */
-		scsi_register(tpnt, 0);
+	for (i = 0; i < nhosts; i++) {
+		host = scsi_register(tpnt, sizeof(struct scsi_debug_host));
+		if (host == NULL) {
+			printk(KERN_ERR
+			    "scsi_debug: cannot register host %d\n", i);
+			return i;
+		}
+		hp = (struct scsi_debug_host *) &host->hostdata[0];
+		hp->instance = i;
+		DEB(printk("scsi_debug: #%d registered, host %p hostdata %p\n",
+		    i, host, hp));
 	}
-	return NR_HOSTS_PRESENT;
+	return nhosts;
 }
 
 int scsi_debug_abort(Scsi_Cmnd * SCpnt)
@@ -687,11 +710,13 @@
 	return SCSI_RESET_SUCCESS;
 }
 
+#if 0 /* later */
 const char *scsi_debug_info(void)
 {
 	static char buffer[] = " ";	/* looks nicer without anything here */
 	return buffer;
 }
+#endif
 
 /* scsi_debug_proc_info
  * Used if the driver currently has no own support for /proc/scsi
@@ -756,6 +781,17 @@
 	return (len);
 }
 
+/*
+ * This happens when module is going to be unloaded.
+ */
+int scsi_debug_release(struct Scsi_Host *host)
+{
+	struct scsi_debug_host *hp = (struct scsi_debug_host *) host->hostdata;
+
+	DEB(printk("scsi_debug: #%d release\n", hp->instance));
+	return (0);
+}
+
 #ifdef CONFIG_USER_DEBUG
 /*
  * This is a hack for the user space emulator.  It allows us to
@@ -773,8 +809,30 @@
 }
 #endif
 
-/* Eventually this will go into an include file, but this will be later */
-static Scsi_Host_Template driver_template = SCSI_DEBUG;
+/*
+ * Allow the driver to reject commands.  Thus we accept only one, but
+ * and the mid-level will queue the remainder.
+ */
+#define SCSI_DEBUG_CANQUEUE  255
+
+/* Going into a header file? I don't think so, Eric. */
+static Scsi_Host_Template driver_template = {
+	proc_info:         scsi_debug_proc_info,
+	proc_name:         "scsi_debug",
+	name:              "SCSI DEBUG",
+	detect:            scsi_debug_detect,
+	queuecommand:      scsi_debug_queuecommand,
+	abort:             scsi_debug_abort,
+	reset:             scsi_debug_reset,
+	bios_param:        scsi_debug_biosparam,
+	can_queue:         SCSI_DEBUG_CANQUEUE,
+	this_id:           7,
+	sg_tablesize:      16,
+	cmd_per_lun:       3,
+	unchecked_isa_dma: 0,
+	use_clustering:    ENABLE_CLUSTERING,
+	use_new_eh_code:   1,
+};
 
 #include "scsi_module.c"
 
diff -urN -X dontdiff linux-2.4.16/drivers/scsi/scsi_debug.h linux-2.4.16-niph/drivers/scsi/scsi_debug.h
--- linux-2.4.16/drivers/scsi/scsi_debug.h	Mon Dec 11 13:19:52 2000
+++ linux-2.4.16-niph/drivers/scsi/scsi_debug.h	Wed Dec 31 16:00:00 1969
@@ -1,42 +0,0 @@
-#ifndef _SCSI_DEBUG_H
-
-#include <linux/types.h>
-#include <linux/kdev_t.h>
-
-int scsi_debug_detect(Scsi_Host_Template *);
-int scsi_debug_command(Scsi_Cmnd *);
-int scsi_debug_queuecommand(Scsi_Cmnd *, void (*done) (Scsi_Cmnd *));
-int scsi_debug_abort(Scsi_Cmnd *);
-int scsi_debug_biosparam(Disk *, kdev_t, int[]);
-int scsi_debug_reset(Scsi_Cmnd *, unsigned int);
-int scsi_debug_proc_info(char *, char **, off_t, int, int, int);
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-
-#define SCSI_DEBUG_MAILBOXES 1
-
-/*
- * Allow the driver to reject commands.  Thus we accept only one, but
- * and the mid-level will queue the remainder.
- */
-#define SCSI_DEBUG_CANQUEUE  255
-
-#define SCSI_DEBUG {proc_info:         scsi_debug_proc_info,	\
-		    name:              "SCSI DEBUG",		\
-		    detect:            scsi_debug_detect,	\
-		    queuecommand:      scsi_debug_queuecommand, \
-		    abort:             scsi_debug_abort,	\
-		    reset:             scsi_debug_reset,	\
-		    bios_param:        scsi_debug_biosparam,	\
-		    can_queue:         SCSI_DEBUG_CANQUEUE,	\
-		    this_id:           7,			\
-		    sg_tablesize:      16,			\
-		    cmd_per_lun:       3,			\
-		    unchecked_isa_dma: 0,			\
-		    use_clustering:    ENABLE_CLUSTERING,	\
-		    use_new_eh_code:   1,			\
-}
-#endif

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2001-11-30  7:26 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-11-30  5:13 Patch to update scsi_debug.c Douglas Gilbert
2001-11-30  5:14 ` BALBIR SINGH
     [not found] <3C07138D.41A77811@interlog.com>
2001-11-30  7:26 ` Pete Zaitcev
  -- strict thread matches above, loose matches on Subject: below --
2001-11-30  4:15 Pete Zaitcev

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).