Recently, when performing planned test scenarios with different hardware parts, our QA team identified an issue with kernel panic during read operations on the Areca ARC-1883 SAS RAID Adapter. We notified Areca and thanks to their fast reaction we were able to quickly resolve the problem. Here’s an overview.
During sequential read operations kernel panic occurred on Linux. As it turned out, the newer the kernel version the faster the system would hang.
Preliminary tests showed that the same scenario performed with an older kernel works longer but finally provides the same results – kernel panic.
What was the solution?
Our development team researched the driver and immediately informed Areca about the part of the code where this issue occurred. The issue was caused by getting the wrong Command Control Block pointer value in the arcmsr_hbaC_postqueue_isr function.
In the arcmsr_hbaC_postqueue_isr function of the old driver:
flag_ccb = readl(&phbcmu->outbound_queueport_low);ccb_cdb_phy = (flag_ccb & 0xFFFFFFF0);/*frame must be 32 bytes aligned*/arcmsr_cdb = (struct ARCMSR_CDB *)(acb->vir2phy_offset + ccb_cdb_phy);ccb = container_of(arcmsr_cdb, struct CommandControlBlock, arcmsr_cdb); <- ccb points to the wrong address
Upon Areca’s request, our kernel developers also tested this scenario on different Linux systems (including Ubuntu and CentOS) and provided further information about the test results.
We tested other Areca Adapters, however, this behavior only occurred on the Areca ARC-1883 SAS RAID Adapter.
Operation System affected
All Linux-based systems that use the Areca driver in versions lower than 1.30.0X.18-140417 are affected.
What to do if you want to use Open-E DSS V7 with the Areca ARC-1883 SAS RAID Adapter?
All in all, we have to say that we were impressed with Areca’s technical support. They reacted very fast from the moment our QA team first reported the problem. Then, upon Areca’s request – our team further investigated the issue. Once the problem was identified, our technology partner Areca quickly prepared a driver fixing the issue. Great job guys!