Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 27 Jun 2009 19:55:09 +0300
From:      Alexander Motin <mav@FreeBSD.org>
To:        Pieter de Goeje <pieter@degoeje.nl>
Cc:        freebsd-current@freebsd.org, scottl@freebsd.org
Subject:   Re: RFC: ATA to CAM integration patch
Message-ID:  <4A464EED.3070700@FreeBSD.org>
In-Reply-To: <200906271419.49329.pieter@degoeje.nl>
References:  <4A4517BE.9040504@FreeBSD.org> <200906271419.49329.pieter@degoeje.nl>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------050502010606090600020306
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Pieter de Goeje wrote:
> However there is a problem with camcontrol:
> 
> nox# camcontrol devlist
> cam_periph_mapmem: attempt to map 79200 bytes, which is greater than DFLTPHYS(65536)
> camcontrol: error sending CAMIOCOMMAND ioctl: Argument list too long

Thank you for report. I have missed this due to increased DFLTPHYS value 
in my kernel. Attached trivial patch fixes that.

> nox# camcontrol inquiry ada0
> ahcich1: ahci_ch_intr ERROR is 48000000 cs 00000100 ss 00000000 rs 00000100 tfd 451 serr 00000000
> 
> nox# camcontrol inquiry ada1
> ahcich7: ahci_ch_intr ERROR is 40000001 cs 00002000 ss 00000000 rs 00002000 tfd 451 serr 00000000

This is not a problem. ATA disks does not have SCSI INQUIRY command. 
They use own IDENTIFY instead. inquiry should work for ATAPI devices, as 
they are SCSI deep inside.

-- 
Alexander Motin

--------------050502010606090600020306
Content-Type: text/plain;
 name="camcontrol.size.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="camcontrol.size.patch"

--- camcontrol.c.prev	2009-06-14 17:29:55.000000000 +0300
+++ camcontrol.c	2009-06-27 19:43:55.000000000 +0300
@@ -321,7 +321,7 @@ getdevtree(void)
 	ccb.ccb_h.target_lun = CAM_LUN_WILDCARD;
 
 	ccb.ccb_h.func_code = XPT_DEV_MATCH;
-	bufsize = sizeof(struct dev_match_result) * 100;
+	bufsize = sizeof(struct dev_match_result) * 50;
 	ccb.cdm.match_buf_len = bufsize;
 	ccb.cdm.matches = (struct dev_match_result *)malloc(bufsize);
 	if (ccb.cdm.matches == NULL) {

--------------050502010606090600020306--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4A464EED.3070700>