| CPC G06F 3/0631 (2013.01) [G06F 3/0619 (2013.01); G06F 3/0688 (2013.01)] | 19 Claims |

|
1. A method comprising:
receiving a first flush request indicating a first block of user data to be flushed;
in response to detecting that the first block of user data was, when it was received, directly stored into a physical block of non-volatile data storage, detecting whether the first flush request is an initial flush request indicating user data directly stored into the physical block of non-volatile data storage;
in response to detecting that the first flush request is the initial flush request indicating user data directly stored into the physical block of non-volatile data storage, allocating a virtual layer block for the physical block of non-volatile data storage;
storing, in the virtual layer block, a first set of virtual block pointers, wherein the first set of virtual block pointers indicate locations of respective pages of the first block of user data within the physical block of the non-volatile data storage; and
storing, in at least one leaf layer node of a first logical address mapping tree, pointers to the virtual block pointers in the first set of virtual block pointers stored in the virtual layer block.
|