A data storage device, comprising: a non-volatile memory, and a data storage device controller configured to couple to the non-volatile memory comprising a plurality of blocks, each block being configured to store a plurality of physical pages at predetermined physical locations, the controller comprising: a processor configured to program data to and read data from the nonvolatile memory, the data being stored in a plurality of logical pages; and a volatile memory comprising a logical-to-physical address translation map (302, 902) configured to enable the processor to determi ne a physical location, within one or more physical pages, of the data stored in each logical page; characterized by a plurality of journals maintained in the non-volatile memory, each journal comprising a plurality of journal entries associating one or more physical pages to each logical page, wherein each of the plurality of journals covers a pre-determined range of physical pages, wherein the controller is configured, upon startup, to: read each of the plurality of journals in an order and to rebuild the map (302, 902) in the volatile memory from the read plurality of journals; indicate a readiness to process data access commands after the map is rebuilt; and rebuild a table configured to specify the amount of free space in each of the plurality of blocks, from the map (302, 902) and select, based on the table, at least one of the plurality of blocks for garbage collection after having indicated the readiness to process data access commands. a non-volatile memory, and a data storage device controller configured to couple to the non-volatile memory comprising a plurality of blocks, each block being configured to store a plurality of physical pages at predetermined physical locations, the controller comprising: a processor configured to program data to and read data from the nonvolatile memory, the data being stored in a plurality of logical pages; and a volatile memory comprising a logical-to-physical address translation map (302, 902) configured to enable the processor to determi ne a physical location, within one or more physical pages, of the data stored in each logical page; characterized by a plurality of journals maintained in the non-volatile memory, each journal comprising a plurality of journal entries associating one or more physical pages to each logical page, wherein each of the plurality of journals covers a pre-determined range of physical pages, wherein the controller is configured, upon startup, to: read each of the plurality of journals in an order and to rebuild the map (302, 902) in the volatile memory from the read plurality of journals; indicate a readiness to process data access commands after the map is rebuilt; and rebuild a table configured to specify the amount of free space in each of the plurality of blocks, from the map (302, 902) and select, based on the table, at least one of the plurality of blocks for garbage collection after having indicated the readiness to process data access commands. a processor configured to program data to and read data from the nonvolatile memory, the data being stored in a plurality of logical pages; and a volatile memory comprising a logical-to-physical address translation map (302, 902) configured to enable the processor to determi ne a physical location, within one or more physical pages, of the data stored in each logical page; characterized by a plurality of journals maintained in the non-volatile memory, each journal comprising a plurality of journal entries associating one or more physical pages to each logical page, wherein each of the plurality of journals covers a pre-determined range of physical pages, wherein the controller is configured, upon startup, to: read each of the plurality of journals in an order and to rebuild the map (302, 902) in the volatile memory from the read plurality of journals; indicate a readiness to process data access commands after the map is rebuilt; and rebuild a table configured to specify the amount of free space in each of the plurality of blocks, from the map (302, 902) and select, based on the table, at least one of the plurality of blocks for garbage collection after having indicated the readiness to process data access commands. read each of the plurality of journals in an order and to rebuild the map (302, 902) in the volatile memory from the read plurality of journals; indicate a readiness to process data access commands after the map is rebuilt; and rebuild a table configured to specify the amount of free space in each of the plurality of blocks, from the map (302, 902) and select, based on the table, at least one of the plurality of blocks for garbage collection after having indicated the readiness to process data access commands.