Re: Adaptec RAID 2020SA raid status
- In reply to: Robert Fitzpatrick : "Adaptec RAID 2020SA raid status"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 28 Mar 2023 19:42:41 UTC
On Tue, Mar 28, 2023 at 8:53 PM Robert Fitzpatrick wrote: > > I installed FreeBSD 13.1 on an old Supermicro server that uses Adaptec > STAT RAID 2020SA hardware raid and want to do health checks: > (..) > Can someone advise on how to get arcconf working or another way to > monitor the RAID status? I have ASR-2405 Adaptec RAID controller as SATA ports onboard are full.. but I keep optical drives on it. There is a dedicated BIOS menu for this card that you can trigger on boot to see the card status settingc etc. It only works in BIOS mode (prompt is not visible when UEFI boot is selected). Also you may want to enable "cards prompt to firmware settings" or something like that if the card firmware prompt does not show up. The prompt should show before POST screen or after POST screen and right before the OS loader prompt (I do not remember exactly and that also may depend on your machine). Regarding the RAID status I am using ZFS ZRAID2 and its status can be verified with zpool. Regarding the arcconf it core dumps for me too on `arcconf getconfig 1`. Building port with debug symbols allows seeing the backtrace: root@octagon:/usr/ports/sysutils/arcconf # make clean; make reinstall WITH_DEBUG=yes then root@octagon:/usr/ports/sysutils/arcconf # lldb arcconf getconfig 1 (lldb) target create "arcconf" Current executable set to 'arcconf' (x86_64). (lldb) settings set -- target.run-args "getconfig" "1" (lldb) run Process 31060 launched: '/usr/local/sbin/arcconf' (x86_64) Controllers found: 1 Process 31060 stopped * thread #1, name = 'arcconf', stop reason = signal SIGSEGV: invalid address (fault address: 0x0) frame #0: 0x0000000000000000 error: memory read failed for 0x0 (lldb) bt * thread #1, name = 'arcconf', stop reason = signal SIGSEGV: invalid address (fault address: 0x0) * frame #0: 0x0000000000000000 frame #1: 0x00000000005c6a64 arcconf`ArcPhysicalDeviceAttach::setFsaInfo(FSA_STORAGE_DEVICE_INFO const*, FSA_SMART_DATA const*) + 3124 frame #2: 0x00000000005c782d arcconf`ArcPhysicalDeviceAttach::ArcPhysicalDeviceAttach(Channel*, PhysicalDevice*, FSA_STORAGE_DEVICE_INFO const*, FSA_SMART_DATA const*) + 797 frame #3: 0x00000000005a0c79 arcconf`ArcAdapter::buildChildren(Ret&) + 4457 frame #4: 0x00000000005d000c arcconf`ArcSystem::buildChildrenForSingleAdapter(StorLib*, unsigned long, Ret&, EnumGetSystemConfigType) + 892 frame #5: 0x00000000004f1d70 arcconf`StorLib::getSystemConfigForSingleAdapter(unsigned long, EnumGetSystemConfigType) + 112 frame #6: 0x00000000004072fe arcconf`main + 2190 frame #7: 0x00000000004094df arcconf`_start + 383 The same for rescan: root@octagon:/usr/ports/sysutils/arcconf # arcconf rescan 1 Controllers found: 1 Segmentation fault (core dumped) root@octagon:/usr/ports/sysutils/arcconf # root@octagon:/usr/ports/sysutils/arcconf # root@octagon:/usr/ports/sysutils/arcconf # lldb arcconf rescan 1 (lldb) target create "arcconf" Current executable set to 'arcconf' (x86_64). (lldb) settings set -- target.run-args "rescan" "1" (lldb) run Process 36179 launched: '/usr/local/sbin/arcconf' (x86_64) Controllers found: 1 Process 36179 stopped * thread #1, name = 'arcconf', stop reason = signal SIGSEGV: invalid address (fault address: 0x0) frame #0: 0x0000000000000000 error: memory read failed for 0x0 (lldb) bt * thread #1, name = 'arcconf', stop reason = signal SIGSEGV: invalid address (fault address: 0x0) * frame #0: 0x0000000000000000 frame #1: 0x00000000005c6a64 arcconf`ArcPhysicalDeviceAttach::setFsaInfo(FSA_STORAGE_DEVICE_INFO const*, FSA_SMART_DATA const*) + 3124 frame #2: 0x00000000005c782d arcconf`ArcPhysicalDeviceAttach::ArcPhysicalDeviceAttach(Channel*, PhysicalDevice*, FSA_STORAGE_DEVICE_INFO const*, FSA_SMART_DATA const*) + 797 frame #3: 0x00000000005a0c79 arcconf`ArcAdapter::buildChildren(Ret&) + 4457 frame #4: 0x00000000005d000c arcconf`ArcSystem::buildChildrenForSingleAdapter(StorLib*, unsigned long, Ret&, EnumGetSystemConfigType) + 892 frame #5: 0x00000000004f1d70 arcconf`StorLib::getSystemConfigForSingleAdapter(unsigned long, EnumGetSystemConfigType) + 112 frame #6: 0x00000000004072fe arcconf`main + 2190 frame #7: 0x00000000004094df arcconf`_start + 383 The same for getstatus: root@octagon:/usr/ports/sysutils/arcconf # lldb arcconf getstatus 1 (lldb) target create "arcconf" Current executable set to 'arcconf' (x86_64). (lldb) settings set -- target.run-args "getstatus" "1" (lldb) run Process 39367 launched: '/usr/local/sbin/arcconf' (x86_64) Controllers found: 1 Process 39367 stopped * thread #1, name = 'arcconf', stop reason = signal SIGSEGV: invalid address (fault address: 0x0) frame #0: 0x0000000000000000 error: memory read failed for 0x0 (lldb) bt * thread #1, name = 'arcconf', stop reason = signal SIGSEGV: invalid address (fault address: 0x0) * frame #0: 0x0000000000000000 frame #1: 0x00000000005c6a64 arcconf`ArcPhysicalDeviceAttach::setFsaInfo(FSA_STORAGE_DEVICE_INFO const*, FSA_SMART_DATA const*) + 3124 frame #2: 0x00000000005c782d arcconf`ArcPhysicalDeviceAttach::ArcPhysicalDeviceAttach(Channel*, PhysicalDevice*, FSA_STORAGE_DEVICE_INFO const*, FSA_SMART_DATA const*) + 797 frame #3: 0x00000000005a0c79 arcconf`ArcAdapter::buildChildren(Ret&) + 4457 frame #4: 0x00000000005d000c arcconf`ArcSystem::buildChildrenForSingleAdapter(StorLib*, unsigned long, Ret&, EnumGetSystemConfigType) + 892 frame #5: 0x00000000004f1d70 arcconf`StorLib::getSystemConfigForSingleAdapter(unsigned long, EnumGetSystemConfigType) + 112 frame #6: 0x00000000004072fe arcconf`main + 2190 frame #7: 0x00000000004094df arcconf`_start + 383 The same for getlogs: root@octagon:/usr/ports/sysutils/arcconf # lldb arcconf getlogs 1 (lldb) target create "arcconf" Current executable set to 'arcconf' (x86_64). (lldb) settings set -- target.run-args "getlogs" "1" (lldb) run Process 45845 launched: '/usr/local/sbin/arcconf' (x86_64) Controllers found: 1 Process 45845 stopped * thread #1, name = 'arcconf', stop reason = signal SIGSEGV: invalid address (fault address: 0x0) frame #0: 0x0000000000000000 error: memory read failed for 0x0 (lldb) bt * thread #1, name = 'arcconf', stop reason = signal SIGSEGV: invalid address (fault address: 0x0) * frame #0: 0x0000000000000000 frame #1: 0x00000000005c6a64 arcconf`ArcPhysicalDeviceAttach::setFsaInfo(FSA_STORAGE_DEVICE_INFO const*, FSA_SMART_DATA const*) + 3124 frame #2: 0x00000000005c782d arcconf`ArcPhysicalDeviceAttach::ArcPhysicalDeviceAttach(Channel*, PhysicalDevice*, FSA_STORAGE_DEVICE_INFO const*, FSA_SMART_DATA const*) + 797 frame #3: 0x00000000005a0c79 arcconf`ArcAdapter::buildChildren(Ret&) + 4457 frame #4: 0x00000000005d000c arcconf`ArcSystem::buildChildrenForSingleAdapter(StorLib*, unsigned long, Ret&, EnumGetSystemConfigType) + 892 frame #5: 0x00000000004f1d70 arcconf`StorLib::getSystemConfigForSingleAdapter(unsigned long, EnumGetSystemConfigType) + 112 frame #6: 0x00000000004072fe arcconf`main + 2190 frame #7: 0x00000000004094df arcconf`_start + 383 No matter what command trace looks always the same. Seems like a bug in the application that prevents the initial read of the device info..? There is no man page for arcconf: root@octagon:/usr/ports/sysutils/arcconf # man arcconf No manual entry for arcconf There seems to be no source code to analyze, just a binary builds provided by MicroSemi / Microchip. I am attaching port maintainer, maybe Michael will be able to help? :-) -- CeDeROM, SQ7MHZ, http://www.tomek.cedro.info