A filesystem needs to keep of the unused blocks so that it can allocate new blocks when creating new files or expanding existing files. There are a number of strategies for keeping track of the free space:
A bitmap: one bit per sector indicating whether the block is in use or not. Bitmaps are very compact, so for reasonably sized disks can be stored in memory. Supports contiguous allocation: can easily do a linear search for n contiguous free blocks when allocating a large file.
A linked list: each free block contains a pointer to the next free block. Allocating a large number of blocks at once requires reading all of them, which can be inefficient.
A linked list of sets: a linked list of free blocks as above, but the additional space in the block is used to store pointers to other free blocks. Improves on linked list by allowing many blocks to be allocated at once