Few Years have passed since this was posted, but I think I have the same issue in my Gen8 Microserver. It has the B120i raid conrtoller working in AHCI .
I have got four 6TB drives connected to it and there is zfs raidz1 on top of these. At high load one disk gets timeout and sata link reset (on random, disk 1 OR 2 OR 4, not yet seen with disk 3). This causes the array to go degraded. When I try to resilver the array it puts heavy load on the drive that was just dropped from sata controller, so it resets once again, goes degraded and starts the resilvering from zero % once again. This repeats every 20-60minutes. This makes the relisver process impossible to finish. Previously I just took the drives into a separate machine for resilvering and after this was done they could work once again in the server.
Now I have tried this method to disable write cache. It has been going for over 4 hours without the drive link resetting, although the speed is terribly slow. Thanks for the temporary solution.
I will buy some used LSI SAS HBA card, hopefully moving the disks to a different controller (pci-e) will fix the issue permanently.