A method of recording data from a host in a non-volatile memory (11, 19) comprising: organizing the memory into a plurality of blocks (22, 32), each block (22, 32) being a plurality of memory units that are erasable together, each memory unit for storing a data unit; (a) providing first and second blocks, each for sequentially recording data units and organizing the first and second blocks into pages, each page for programming together multiple data units having predetermined page offsets; CHARACTERISED BY: (b) designating either the first or second block as block (22, 32) for storing priority information, said priority information allowing determination of whether a first data unit in the first block was recorded before or after a second data unit in the second block; (c) receiving the data from the host, wherein the data is organized into data units having a predetermined order; (d) recording the received data to a next available location in either the first block or the second block respectively depending on whether or not a predetermined condition is satisfied, wherein the predetermined condition is when one of the received data units has a page-end offset, wherein said recording the data to the first block includes recording to a page of the first block said page-end data unit and any preceding data units in the page; (e) wherein whenever the received data is being recorded to the designated block (22, 32), the priority information is also being recorded thereto; and (f) repeating (c) - (e) until there is no more data to be recorded. organizing the memory into a plurality of blocks (22, 32), each block (22, 32) being a plurality of memory units that are erasable together, each memory unit for storing a data unit; (a) providing first and second blocks, each for sequentially recording data units and organizing the first and second blocks into pages, each page for programming together multiple data units having predetermined page offsets; CHARACTERISED BY: (b) designating either the first or second block as block (22, 32) for storing priority information, said priority information allowing determination of whether a first data unit in the first block was recorded before or after a second data unit in the second block; (c) receiving the data from the host, wherein the data is organized into data units having a predetermined order; (d) recording the received data to a next available location in either the first block or the second block respectively depending on whether or not a predetermined condition is satisfied, wherein the predetermined condition is when one of the received data units has a page-end offset, wherein said recording the data to the first block includes recording to a page of the first block said page-end data unit and any preceding data units in the page; (e) wherein whenever the received data is being recorded to the designated block (22, 32), the priority information is also being recorded thereto; and (f) repeating (c) - (e) until there is no more data to be recorded. (a) providing first and second blocks, each for sequentially recording data units and organizing the first and second blocks into pages, each page for programming together multiple data units having predetermined page offsets; CHARACTERISED BY: (b) designating either the first or second block as block (22, 32) for storing priority information, said priority information allowing determination of whether a first data unit in the first block was recorded before or after a second data unit in the second block; (c) receiving the data from the host, wherein the data is organized into data units having a predetermined order; (d) recording the received data to a next available location in either the first block or the second block respectively depending on whether or not a predetermined condition is satisfied, wherein the predetermined condition is when one of the received data units has a page-end offset, wherein said recording the data to the first block includes recording to a page of the first block said page-end data unit and any preceding data units in the page; (e) wherein whenever the received data is being recorded to the designated block (22, 32), the priority information is also being recorded thereto; and (f) repeating (c) - (e) until there is no more data to be recorded.