thanks for the info re timestamp.

The reason why my buffer is getting filled up so quickly is that I'm 
getting lots of the below messages:

th xxxx tm xxxx: quorum_ioctl_with_retries: ioctl DKIOCGGEOM returned 
error (48). Will retry in 2 seconds.
th xxxx tm xxxx: quorum_ioctl_with_retries: ioctl DKIOCGGEOM returned 
error (48). Will retry in 2 seconds.
th xxxx tm xxxx: quorum_ioctl_with_retries: ioctl DKIOCGGEOM returned 
error (48). Will retry in 2 seconds.
th xxxx tm xxxx: quorum_ioctl_with_retries: ioctl DKIOCGGEOM returned 
error (48).

as timestamps are in microseconds the entries with "Will retry in 2 
seconds." do indeed happen at every 2s, while the other entry happens at 
about every 306s. I also double checked it with dtrace. I also get 
stack() and ustack() when quorum_ioctl_with_retries() returns with 
ENOTSUP (48). All of them happen when scqdmd (Quorum Device Monitor 
Daemon) is checking qourum device and inside a kernel the 
quorum_ioctl_with_retries() is then called from 
quorum_scsi_get_sblkno(). By looking at the source code I can see that 
if quorum_ioctl_with_retries() returns with ENOTSUP (48) and SC is 
compiled with SC_EFI_SUPPORT then it will try to get the PGRE area by 
calling get_efi_reserved(). I checked with dtrace and the 
get_efi_reserved() returns with 0 all the time (so it succeeds).

To summarize:

   scqdmd is checking quorum device status every 300s by default
     scsi_get_sblkno() is called to get PGRE reserved area
       quorum_ioctl_with_retries(DKIOCGGEOM) is called but fails with 
ENOTSUP (48) if quorum is on a disk with EFI label
       if quorum_ioctl_with_retries() returned with 48 then 
SC_EFI_SUPPORT() is called to get the PGRE area


it means that the cmm_dbg_buf will get filled up relatively quickly on 
every system with a quorum device on a lun with an EFI label. While not 
a big issue imho the code should be fixed so no unnecesary warning 
messages are written all the time - perhaps if QD is on an efi lun it 
should be marked and code should call SC_EFI_SUPPORT() without calling 
quorum_ioctl_with_retries(DKIOCGGEOM) in such a case.


Anyway, while it was a fun it didn't really help me :(
But at least I know why I'm getting these warning messages.




-- 
Robert Milkowski
http://milek.blogspot.com

Reply via email to