Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 31 Oct 2010 21:16:30 +0200
From:      Andriy Gapon <avg@icyb.net.ua>
To:        Ed Maste <emaste@FreeBSD.org>
Cc:        freebsd-scsi@FreeBSD.org
Subject:   Re: camcontrol rescan all fails if there is no bus 0
Message-ID:  <4CCDC08E.7020506@icyb.net.ua>
In-Reply-To: <20101031141031.GA14661@sandvine.com>
References:  <AANLkTiksEn2DP7Y=x=u99qcf28bBEspOWRnsWUfhaOPg@mail.gmail.com>	<E4EB1292-C4F8-4385-8ACD-58BE792988F1@samsco.org>	<20101026160457.GA61133@sandvine.com>	<9EC3B874-B089-4ED4-9A12-FA7A0E170A7B@samsco.org> <20101031141031.GA14661@sandvine.com>

next in thread | previous in thread | raw e-mail | index | archive | help
on 31/10/2010 16:10 Ed Maste said the following:
> On Tue, Oct 26, 2010 at 10:41:11AM -0600, Scott Long wrote:
> 
>> Ok, I guess I need to see if CAM_XPT_PATH_ID can get returned from the
>> devmatch.
> 
> Is that not handled by this code that parses the returned XPT_DEV_MATCH
> results in in reset_or_rescan_bus:
> 
>     for (i = 0; i < matchccb.cdm.num_matches; i++) {
>             struct bus_match_result *bus_result;
> 
> ...
> 
>             bus_result = &matchccb.cdm.matches[i].result.bus_result;
> 
>             /*
>              * We don't want to rescan or reset the xpt bus.
>              * See above.
>              */
>             if ((int)bus_result->path_id == -1)
>                     continue;
> 
> That is, we do the actual rescan only on legitimate busses after the
> XPT_DEV_MATCH ioctl returns.
> 
>> What happens with this patch if you run it with no real buses
>> registered (i.e. cam module present, but no SIMs present)?
> 
>  From the user's perspective, with the stock camcontrol and no
> registered busses I get: 
> 
> [root@edlaptop ~]# camcontrol rescan all
> camcontrol: CAMIOCOMMAND ioctl failed: Invalid argument
> 
> With the patch:
> 
> [root@edlaptop ~]# ./camcontrol rescan all
> [root@edlaptop ~]#
> 
> And then with a umass device attached:
> 
> [root@edlaptop ~]# ./camcontrol rescan all
> Re-scan of bus 0 was successful

Can you test a synthetic situation where you have e.g. bus 1, but no bus 0 ?
E.g. by having two umass devices connected during boot and then removing one of
them.

-- 
Andriy Gapon



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