Recent studies show hard disk drives fail much more often in real systems than specified in their data-sheets, and RAID-5 may not be able to provide necessary reliability for practical systems. It is desirable to have disk arrays and clustered storage systems with higher data redundancy, such as RAID-6. Meanwhile, latest research also indicates that sector failures become a threat to data reliability in storage systems. As a result, disk failures in RAID-6 systems become complex, and call for efficient decoding approaches to recover data when disk failures take place. This paper proposes a simple and efficient decoding algorithm to reconstruct data from disk failures for RAID-6 systems. First, for many well known RAID-6 codes, we provide the conditions to determine the recoverability of disk failures by using Tanner graph. The covered RAID-6 codes include X-code, EVENODD, and RDP. Then, a generic failure decoding algorithm called SCAN algorithm is derived. The SCAN algorithm is able to efficiently reconstruct data for any recoverable disk failures. Extensive performance evaluation shows the SCAN algorithm achieves higher performance than Matrix Method, another general decoding algorithm. Hence, the SCAN algorithm is an attractive decoding algorithm to be integrated into RAID-6 systems.