camcontrol rescan not updating disk size?

Rolf Grossmann rg at xamine.com
Mon Dec 16 21:17:52 UTC 2013


On 16.12.2013 18:27, Douglas Gilbert wrote:
> On 13-12-16 11:44 AM, Rolf Grossmann wrote:
>> Hi,
>>
>> I'm having a problem with a virtualized system. I've grown the virtual
>> disk, but my FreeBSD 9.1-STABLE r246991 won't recognize the new size:
>>
>> # grep da1 /var/run/dmesg.boot
>> da1 at mpt0 bus 0 scbus2 target 1 lun 0
>> da1: <VMware Virtual disk 1.0> Fixed Direct Access SCSI-2 device
>> da1: 320.000MB/s transfers (160.000MHz DT, offset 127, 16bit)
>> da1: Command Queueing enabled
>> da1: 75776MB (155189248 512 byte sectors: 255H 63S/T 9660C)
>>
>> # camcontrol readcap 2:1:0
>> Last Block: 314572799, Block Length: 512 bytes
>>
>> # camcontrol rescan 2:1:0
>> Re-scan of 2:1:0 was successful
>>
>> # geom disk list da1
>> Geom name: da1
>> Providers:
>> 1. Name: da1
>>     Mediasize: 79456894976 (74G)
>>     Sectorsize: 512
>>     Mode: r1w1e1
>>     descr: VMware Virtual disk
>>     ident: (null)
>>     fwsectors: 63
>>     fwheads: 255
>>
>> IMHO that should now read "Mediasize: 161061273088 (150G)".
>>
>> (What I'm actually trying to do is "zpool online -e mypool da1", but
>> that doesn't recognize the new size either, so I'm thinking geom is a
>> good indicator of the system's idea of the disk size.)
>>
>> I've tried a full and targetd rescan multiple times to no avail. I don't
>> see anything to rescan the size or flush some sort of cache. My Google
>> searches also came up empty. I'm out of ideas what else to try short of
>> a reboot (which I'd really like to avoid).
>
> A related point: according to sbc3r36.pdf when an LU changes its
> size then it should "establish a unit attention condition with an
> additional sense code set to CAPACITY DATA HAS CHANGED". Can you
> determine if that happens? If it does then CAM needs enhancing, if
> not targetd needs some work.

I've reproduced the problem on my 9.2-STABLE test system that I can
reboot and compiled in CAMDEBUG. As far as I can see the emulated scsi
controller does not send any unit attention condition. Also, I think
relying on the device to tell you about changes should be optional, but
the rescan (or whatever other command I should use) should always detect
the correct size.

On the other hand, John-Mark Gurney is also correct in pointing out that
closing and reopening the device (as in zpool export; zpool import) does
update the size. Of course that still requires me to shut down
everything running on that filesystem, which is what I'm trying to
(though probably can't) avoid.

So what's next? Should I open a bug report? Anything else I should try?

Thanks for your help.

Rolf.


Rolf Grossmann
Software Developer

Xamine GmbH | Holzstraße 28 | 80469 München
Fon: +49 89 7201888-22 | Fax: +49 89 7201888-99

Geschäftsführer: Peter Herold | Sitz der GmbH: München, Deutschland
Registergericht: AG München (HRB 167040) | USt-IdNr.: DE 253 181 639


More information about the freebsd-scsi mailing list