GNU parted should detect physical block size
GNU parted supports the distinction between physical and logical block size. However this is not implemented in the Solaris-specific code.
The attached patch adds support for detecting physical block size. It tries DKIOCGMEDIAINFOEXT (which supports the distinction between physical and logical block size) before calling DKIOCGMEDIAINFO and if it succeeds it uses those values instead.
Not all drivers implement DKIOCGMEDIAINFOEXT, so the DKIOCGMEDIAINFO fallback is still necessary.