A signal processing approach to overcome data integrity challenges in flash SSD design