linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* qla2xxx: does not respond to SCSI_IOCTL_PROBE_HOST
@ 2005-08-24 20:34 Drew Winstel
  2005-08-24 21:13 ` Andrew Vasquez
  0 siblings, 1 reply; 5+ messages in thread
From: Drew Winstel @ 2005-08-24 20:34 UTC (permalink / raw)
  To: linux-scsi

Hello, all.

Here's the situation.  I am running a QLogic QLA2200 (32-bit mode; lspci
output follows), and when I issue an ioctl() to call
SCSI_IOCTL_PROBE_HOST to /dev/sg0 (example code follows as well), the
ioctl() returns 0, as if to imply that there is no host present, which
is obviously not possible since the drive is attached to the HBA.  Using
an Adaptec 29160 adapter with a drive connected produces logical,
reasonable output, so I'm turning to the experts here.  Is this by
design, a bug, or just something I've horribly missed?  I have tried it
with a 2.6.11 and 2.6.12.5 kernel to no avail.
Thanks, 
Drew Winstel

Linux localhost.localdomain 2.6.12.5 #1 Mon Aug 22 14:01:04 CDT 2005
i686 athlon i386 GNU/Linux 00:00.0 Host bridge: nVidia Corporation
nForce2 AGP (different version?) (rev c1)
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
	Status: Cap+ 66Mhz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR-
	Latency: 0
	Region 0: Memory at d8000000 (32-bit, prefetchable) [size=64M]
	Capabilities: [40] AGP version 3.0
		Status: RQ=32 Iso- ArqSz=2 Cal=0 SBA+ ITACoh- GART64- HTrans- 64bit-
FW+ AGP3+ Rate=x4,x8
		Command: RQ=1 ArqSz=0 Cal=0 SBA- AGP- GART64- 64bit- FW- Rate=x4
	Capabilities: [60] HyperTransport: Host or Secondary Interface
		Command: WarmRst+ DblEnd-
		Link Control: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO- <CRCErr=0
		Link Config: MLWI=8bit MLWO=8bit LWI=8bit LWO=8bit
		Revision ID: 0.16

00:00.1 RAM memory: nVidia Corporation nForce2 Memory Controller 1 (rev
c1)
	Subsystem: nVidia Corporation: Unknown device 0c17
	Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
	Status: Cap- 66Mhz+ UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR-

00:00.2 RAM memory: nVidia Corporation nForce2 Memory Controller 4 (rev
c1)
	Subsystem: nVidia Corporation: Unknown device 0c17
	Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
	Status: Cap- 66Mhz+ UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR-

00:00.3 RAM memory: nVidia Corporation nForce2 Memory Controller 3 (rev
c1)
	Subsystem: nVidia Corporation: Unknown device 0c17
	Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
	Status: Cap- 66Mhz+ UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR-

00:00.4 RAM memory: nVidia Corporation nForce2 Memory Controller 2 (rev
c1)
	Subsystem: nVidia Corporation: Unknown device 0c17
	Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
	Status: Cap- 66Mhz+ UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR-

00:00.5 RAM memory: nVidia Corporation nForce2 Memory Controller 5 (rev
c1)
	Subsystem: nVidia Corporation: Unknown device 0c17
	Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
	Status: Cap- 66Mhz+ UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR-

00:01.0 ISA bridge: nVidia Corporation nForce2 ISA Bridge (rev a4)
	Subsystem: Giga-byte Technology: Unknown device 0c11
	Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
	Status: Cap+ 66Mhz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR-
	Latency: 0
	Capabilities: [48] HyperTransport: Slave or Primary Interface
		Command: BaseUnitID=1 UnitCnt=15 MastHost- DefDir-
		Link Control 0: CFlE- CST- CFE- <LkFail- Init+ EOC+ TXO- <CRCErr=0
		Link Config 0: MLWI=8bit MLWO=8bit LWI=8bit LWO=8bit
		Link Control 1: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO+ <CRCErr=0
		Link Config 1: MLWI=8bit MLWO=8bit LWI=8bit LWO=8bit
		Revision ID: 0.00

00:01.1 SMBus: nVidia Corporation nForce2 SMBus (MCP) (rev a2)
	Subsystem: Giga-byte Technology: Unknown device 0c11
	Control: I/O+ Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
	Status: Cap+ 66Mhz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR-
	Interrupt: pin A routed to IRQ 10
	Region 0: I/O ports at ec00 [size=32]
	Capabilities: [44] Power Management version 2
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot
+,D3cold+)
		Status: D0 PME-Enable- DSel=0 DScale=0 PME-

00:02.0 USB Controller: nVidia Corporation nForce2 USB Controller (rev
a4) (prog-if 10 [OHCI])
	Subsystem: Giga-byte Technology: Unknown device 5004
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
	Status: Cap+ 66Mhz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR-
	Latency: 0 (750ns min, 250ns max)
	Interrupt: pin A routed to IRQ 4
	Region 0: Memory at e0002000 (32-bit, non-prefetchable) [size=4K]
	Capabilities: [44] Power Management version 2
		Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot
+,D3cold+)
		Status: D0 PME-Enable- DSel=0 DScale=0 PME-

00:02.1 USB Controller: nVidia Corporation nForce2 USB Controller (rev
a4) (prog-if 10 [OHCI])
	Subsystem: Giga-byte Technology: Unknown device 5004
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
	Status: Cap+ 66Mhz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR-
	Latency: 0 (750ns min, 250ns max)
	Interrupt: pin B routed to IRQ 11
	Region 0: Memory at e0003000 (32-bit, non-prefetchable) [size=4K]
	Capabilities: [44] Power Management version 2
		Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot
+,D3cold+)
		Status: D0 PME-Enable- DSel=0 DScale=0 PME-

00:08.0 PCI bridge: nVidia Corporation nForce2 External PCI Bridge (rev
a3) (prog-if 00 [Normal decode])
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR+ FastB2B-
	Status: Cap- 66Mhz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR-
	Latency: 0
	Bus: primary=00, secondary=01, subordinate=01, sec-latency=32
	I/O behind bridge: 0000a000-0000dfff
	Memory behind bridge: de000000-dfffffff
	Secondary status: 66Mhz- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort+ <SERR- <PERR+
	BridgeCtl: Parity- SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-

00:09.0 IDE interface: nVidia Corporation nForce2 IDE (rev a2) (prog-if
8a [Master SecP PriP])
	Subsystem: Giga-byte Technology: Unknown device 5002
	Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
	Status: Cap+ 66Mhz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR-
	Latency: 0 (750ns min, 250ns max)
	Region 4: I/O ports at f000 [size=16]
	Capabilities: [44] Power Management version 2
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 PME-Enable- DSel=0 DScale=0 PME-

00:1e.0 PCI bridge: nVidia Corporation nForce2 AGP (rev c1) (prog-if 00
[Normal decode])
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR+ FastB2B-
	Status: Cap- 66Mhz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
	Latency: 32
	Bus: primary=00, secondary=02, subordinate=02, sec-latency=32
	Memory behind bridge: dc000000-ddffffff
	Prefetchable memory behind bridge: d0000000-d7ffffff
	Secondary status: 66Mhz+ FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort+ <SERR- <PERR-
	BridgeCtl: Parity- SERR+ NoISA- VGA+ MAbort- >Reset- FastB2B-

01:06.0 DPIO module: Adlink Technology: Unknown device 7248 (rev 02)
	Subsystem: Adlink Technology: Unknown device 7248
	Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
	Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
	Interrupt: pin A routed to IRQ 5
	Region 1: I/O ports at a000 [size=128]
	Region 2: I/O ports at a400 [size=256]
	Region 5: I/O ports at a800 [size=256]

01:08.0 SCSI storage controller: Adaptec AIC-7892A U160/m (rev 02)
	Subsystem: Adaptec 29160 Ultra160 SCSI Controller
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
	Status: Cap+ 66Mhz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
	Latency: 32 (10000ns min, 6250ns max), Cache Line Size 08
	Interrupt: pin A routed to IRQ 11
	BIST result: 00
	Region 0: I/O ports at ac00 [disabled] [size=256]
	Region 1: Memory at df008000 (64-bit, non-prefetchable) [size=4K]
	Capabilities: [dc] Power Management version 2
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 PME-Enable- DSel=0 DScale=0 PME-

01:09.0 SCSI storage controller: QLogic Corp. QLA2200 64-bit Fibre
Channel Adapter (rev 05)
	Subsystem: QLogic Corp. QLA2200
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr+
Stepping- SERR+ FastB2B-
	Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
	Latency: 32, Cache Line Size 10
	Interrupt: pin A routed to IRQ 10
	Region 0: I/O ports at b000 [size=256]
	Region 1: Memory at df004000 (32-bit, non-prefetchable) [size=4K]
	Capabilities: [44] Power Management version 1
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 PME-Enable- DSel=0 DScale=0 PME-

01:0b.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8169
Gigabit Ethernet (rev 10)
	Subsystem: Giga-byte Technology GA-K8VT800 Pro Motherboard
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr-
Stepping- SERR- FastB2B-
	Status: Cap+ 66Mhz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
	Latency: 32 (8000ns min, 16000ns max), Cache Line Size 10
	Interrupt: pin A routed to IRQ 11
	Region 0: I/O ports at b400 [size=256]
	Region 1: Memory at df005000 (32-bit, non-prefetchable) [size=256]
	Capabilities: [dc] Power Management version 2
		Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0-,D1+,D2+,D3hot
+,D3cold+)
		Status: D0 PME-Enable- DSel=0 DScale=0 PME-

01:0d.0 Unknown mass storage controller: Silicon Image, Inc. SiI 3512
[SATALink/SATARaid] Serial ATA Controller (rev 01)
	Subsystem: Silicon Image, Inc. SiI 3512 SATALink Controller
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
	Status: Cap+ 66Mhz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
	Latency: 32, Cache Line Size 08
	Interrupt: pin A routed to IRQ 5
	Region 0: I/O ports at cc00 [size=8]
	Region 1: I/O ports at d000 [size=4]
	Region 2: I/O ports at d400 [size=8]
	Region 3: I/O ports at d800 [size=4]
	Region 4: I/O ports at dc00 [size=16]
	Region 5: Memory at df006000 (32-bit, non-prefetchable) [size=512]
	Capabilities: [60] Power Management version 2
		Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 PME-Enable- DSel=0 DScale=2 PME-

01:0e.0 FireWire (IEEE 1394): Texas Instruments TSB43AB23
IEEE-1394a-2000 Controller (PHY/Link) (prog-if 10 [OHCI])
	Subsystem: Giga-byte Technology: Unknown device 1000
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
	Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
	Latency: 32 (500ns min, 1000ns max), Cache Line Size 08
	Interrupt: pin A routed to IRQ 11
	Region 0: Memory at df007000 (32-bit, non-prefetchable) [size=2K]
	Region 1: Memory at df000000 (32-bit, non-prefetchable) [size=16K]
	Capabilities: [44] Power Management version 2
		Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot
+,D3cold-)
		Status: D0 PME-Enable- DSel=0 DScale=0 PME+

02:00.0 VGA compatible controller: nVidia Corporation NV34 [GeForce FX
5200] (rev a1) (prog-if 00 [VGA])
	Subsystem: LeadTek Research Inc.: Unknown device 2967
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
	Status: Cap+ 66Mhz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
	Latency: 32 (1250ns min, 250ns max)
	Interrupt: pin A routed to IRQ 3
	Region 0: Memory at dc000000 (32-bit, non-prefetchable) [size=16M]
	Region 1: Memory at d0000000 (32-bit, prefetchable) [size=128M]
	Capabilities: [60] Power Management version 2
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [44] AGP version 3.0
		Status: RQ=32 Iso- ArqSz=0 Cal=3 SBA+ ITACoh- GART64- HTrans- 64bit-
FW+ AGP3+ Rate=x4,x8
		Command: RQ=1 ArqSz=0 Cal=0 SBA- AGP- GART64- 64bit- FW- Rate=<none>


/* Stupid test to see if this beast can execute SG_IOCTL_PROBE_HOST on a
qla2xxx*/

#include <stdio.h>
#include <scsi/sg.h>
#define SCSI_IOCTL_PROBE_HOST 0x5385

int main (void) {
  FILE *fd = fopen("/dev/sg0","r");
  char buffer[50]; /* just a simple storage */
  *buffer = (int)50;
  unsigned int fd_number = fd->_fileno;
  int retval_of_ioctl = ioctl(fd_number, SCSI_IOCTL_PROBE_HOST, buffer);
  printf("The returned value is %d, and the host name is %s.\n",
retval_of_ioctl, buffer);
  fclose(fd);
  return retval_of_ioctl;
}


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

* Re: qla2xxx: does not respond to SCSI_IOCTL_PROBE_HOST
  2005-08-24 20:34 qla2xxx: does not respond to SCSI_IOCTL_PROBE_HOST Drew Winstel
@ 2005-08-24 21:13 ` Andrew Vasquez
  2005-08-25 16:02   ` Drew Winstel
  2005-08-25 16:09   ` Christoph Hellwig
  0 siblings, 2 replies; 5+ messages in thread
From: Andrew Vasquez @ 2005-08-24 21:13 UTC (permalink / raw)
  To: Drew Winstel; +Cc: linux-scsi

On Wed, 24 Aug 2005, Drew Winstel wrote:

> Here's the situation.  I am running a QLogic QLA2200 (32-bit mode; lspci
> output follows), and when I issue an ioctl() to call
> SCSI_IOCTL_PROBE_HOST to /dev/sg0 (example code follows as well), the
> ioctl() returns 0, as if to imply that there is no host present, which
> is obviously not possible since the drive is attached to the HBA.  Using
> an Adaptec 29160 adapter with a drive connected produces logical,
> reasonable output, so I'm turning to the experts here.  Is this by
> design, a bug, or just something I've horribly missed?  I have tried it
> with a 2.6.11 and 2.6.12.5 kernel to no avail.

/proc support has been stripped from the qla2xxx driver.  So,
hostt->present is never incremented:

	void scsi_proc_hostdir_add(struct scsi_host_template *sht)
	{
		if (!sht->proc_info)
			return;

		down(&global_host_template_sem);
		if (!sht->present++) {
			...

SCSI_IOCTL_PROBE_HOST returns hostt->present:

	static int ioctl_probe(struct Scsi_Host *host, void __user *buffer)
	{
		unsigned int len, slen;
		const char *string;
		int temp = host->hostt->present;

		...
		return temp;

Not sure how we want to fix it, perhaps for backwards compatibility,
increment present regardless of the value of proc_info.

Something like this, perhaps (untested)?

---

diff --git a/drivers/scsi/scsi_proc.c b/drivers/scsi/scsi_proc.c
--- a/drivers/scsi/scsi_proc.c
+++ b/drivers/scsi/scsi_proc.c
@@ -80,32 +80,44 @@ out:
 
 void scsi_proc_hostdir_add(struct scsi_host_template *sht)
 {
+	int create;
+
+	down(&global_host_template_sem);
+	create = !sht->present++;
+	up(&global_host_template_sem);
+
 	if (!sht->proc_info)
 		return;
 
-	down(&global_host_template_sem);
-	if (!sht->present++) {
+	if (create) {
+		down(&global_host_template_sem);
 		sht->proc_dir = proc_mkdir(sht->proc_name, proc_scsi);
         	if (!sht->proc_dir)
 			printk(KERN_ERR "%s: proc_mkdir failed for %s\n",
 			       __FUNCTION__, sht->proc_name);
 		else
 			sht->proc_dir->owner = sht->module;
+		up(&global_host_template_sem);
 	}
-	up(&global_host_template_sem);
 }
 
 void scsi_proc_hostdir_rm(struct scsi_host_template *sht)
 {
+	int destroy;
+
+	down(&global_host_template_sem);
+	destroy = !--sht->present;
+	up(&global_host_template_sem);
+
 	if (!sht->proc_info)
 		return;
 
-	down(&global_host_template_sem);
-	if (!--sht->present && sht->proc_dir) {
+	if (destroy && sht->proc_dir) {
+		down(&global_host_template_sem);
 		remove_proc_entry(sht->proc_name, proc_scsi);
 		sht->proc_dir = NULL;
+		up(&global_host_template_sem);
 	}
-	up(&global_host_template_sem);
 }
 
 void scsi_proc_host_add(struct Scsi_Host *shost)

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

* Re: qla2xxx: does not respond to SCSI_IOCTL_PROBE_HOST
  2005-08-24 21:13 ` Andrew Vasquez
@ 2005-08-25 16:02   ` Drew Winstel
  2005-08-25 16:09   ` Christoph Hellwig
  1 sibling, 0 replies; 5+ messages in thread
From: Drew Winstel @ 2005-08-25 16:02 UTC (permalink / raw)
  To: Andrew Vasquez; +Cc: linux-scsi

On Wed, 2005-08-24 at 14:13 -0700, Andrew Vasquez wrote:

> Not sure how we want to fix it, perhaps for backwards compatibility,
> increment present regardless of the value of proc_info.
> 
> Something like this, perhaps (untested)?

Thanks for the patch, Andrew.

It certainly appears to work (the ioctl new returns qla2xxx), although I
have not done any in-depth testing other than issuing the ioctl to
drives connected to both the QLA2200 and the Adaptec 29160.  

Should this patch be added to the tree (assuming more testing, of
course)?


Thanks again,
Drew


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

* Re: qla2xxx: does not respond to SCSI_IOCTL_PROBE_HOST
  2005-08-24 21:13 ` Andrew Vasquez
  2005-08-25 16:02   ` Drew Winstel
@ 2005-08-25 16:09   ` Christoph Hellwig
  2005-08-25 17:02     ` Drew Winstel
  1 sibling, 1 reply; 5+ messages in thread
From: Christoph Hellwig @ 2005-08-25 16:09 UTC (permalink / raw)
  To: Andrew Vasquez; +Cc: Drew Winstel, linux-scsi

On Wed, Aug 24, 2005 at 02:13:48PM -0700, Andrew Vasquez wrote:
> /proc support has been stripped from the qla2xxx driver.  So,
> hostt->present is never incremented:
> 
> 	void scsi_proc_hostdir_add(struct scsi_host_template *sht)
> 	{
> 		if (!sht->proc_info)
> 			return;
> 
> 		down(&global_host_template_sem);
> 		if (!sht->present++) {
> 			...
> 
> SCSI_IOCTL_PROBE_HOST returns hostt->present:
> 
> 	static int ioctl_probe(struct Scsi_Host *host, void __user *buffer)
> 	{
> 		unsigned int len, slen;
> 		const char *string;
> 		int temp = host->hostt->present;
> 
> 		...
> 		return temp;
> 
> Not sure how we want to fix it, perhaps for backwards compatibility,
> increment present regardless of the value of proc_info.
> 
> Something like this, perhaps (untested)?

No, please not.  Just remove the ->present check in the ioctl, with
the hotplug mode in place we should consider an host always probed
for this legacy.

And while we're at it we should add deprecation warnings for most of
the crufy ioctls in scsi_ioctl.c..


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

* Re: qla2xxx: does not respond to SCSI_IOCTL_PROBE_HOST
  2005-08-25 16:09   ` Christoph Hellwig
@ 2005-08-25 17:02     ` Drew Winstel
  0 siblings, 0 replies; 5+ messages in thread
From: Drew Winstel @ 2005-08-25 17:02 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: Andrew Vasquez, linux-scsi

On Thu, 2005-08-25 at 17:09 +0100, Christoph Hellwig wrote:
> And while we're at it we should add deprecation warnings for most of
> the crufy ioctls in scsi_ioctl.c..
> 
Pardon my ignorance, but to which ioctls are you referring?  Are
practically all the ioctls now just junk, or is there a list somewhere
of ones that are slated for deprecation and removal?

Thanks,
Drew


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

end of thread, other threads:[~2005-08-25 17:02 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-08-24 20:34 qla2xxx: does not respond to SCSI_IOCTL_PROBE_HOST Drew Winstel
2005-08-24 21:13 ` Andrew Vasquez
2005-08-25 16:02   ` Drew Winstel
2005-08-25 16:09   ` Christoph Hellwig
2005-08-25 17:02     ` Drew Winstel

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