WL-reviver: A framework for reviving any wear-leveling techniques in the face of failures on phase change memory