I've been looking though a lot of filesystem lately and noticed they all have one disadvantage, block lists.
I was wondering if it would be possible to create a list of the blocks used by a file with ranges and clever arithmetic.
Instead of listing all the sectors in a file, we have a byte that specifies an operation type and data after that.
There could be operation types for block ranges and short/medium/long offsets to the next block.
i.e. if a file occupies blocks 50-55, instead of listing 50-55 you could specify that it is a range.
Code: Select all
In a 32-bit file system
Instead of:
0x000000320000003300000034000000350000003600000037
You could do:
0x010000003200000037 - Range Type blocks 50-55 (0x32-0x37)
Instead of:
0x08000014080000D3
You could use:
0x02BF to represent the second entries (as an offset from the first).
The idea is, while the CPU has to do a little more work, there is a decent saving in the amount of clusters needed to access a file.
What do you think? Has someone already done this? Would there we fundamental problems.