1. A method comprising: receiving, at a non-volatile memory controller, data to program N portions of a plurality of non-volatile memories, the data comprising particular data to program a particular one of the N portions; storing the particular data in an allocated buffer associated with the non-volatile memory controller; beginning programming the particular data to a particular one of the non-volatile memories; updating redundancy information sufficient to recover from failures of M of the N portions; freeing the allocated buffer; wherein at least one of the storing, the beginning programming the particular data, the updating redundancy information, and the freeing is in response to the receiving; and wherein the freeing is prior to the particular non-volatile memory completing the programming.