Add to your file system an efficient sub-system for managing free blocks, and the ability to have nested sub-directories. On formatting, a list of unused blocks must be created and stored safely on the disc in some way. WHen a file is created, the blocks it needs must be taken from that list in an efficient way, and when your system stops you must make sure that the updated list is kept safe. WHen a file is deleted its blocks must be returned to that list also in a safe and efficient way. Efficiency has at least three aspects: not overburdening the disc system with too many unnecessary reads and writes. and not taking a long time to find a free block or to release a previously used one. and not needing large amounts of data in memory. The details for subdirectories are totally up to you with the caveat that they must practically usable.