When any of the status update writes fail, the remainder of the code tends to ignore these failures (either immediately, or upon a small number of returns). This generally results in the status not being updated correctly, and the flash then in an inconsistent state from what is expected.
It's hard to determine exactly what to do if these calls fail. Generally it is either going to be a worn device, which probably does not have meaningful recovery, or it is some type of bug or driver problem that is preventing the writes from working. In any case, it should be a lot easier to figure out what is happening.