1. A method for dynamically re-allocating data storage space in a mass storage device, the method comprising: performing, by a controller embedded within the mass storage device that has a memory space divided into partitions, which partitions include at least a first memory partition and a second memory partition: determining when the first memory partition is full or has reached a threshold value; determining that the second memory partition has unused storage space which can be allocated to the first memory partition when it is full or has reached a threshold value; and assigning the unused storage space from the second memory partition to the first memory partition, wherein the first memory partition includes storage space for storing a first File Allocation Table (FAT) and the second memory partition includes storage space for storing a second FAT, wherein the first FAT is expanded or shrunk based on whether storage space is being added to or removed from the first memory partition and the second FAT is expanded or shrunk based on whether storage space is being added to or removed from the second memory partition.