let df p =
  let rec iter n block pos =
    if block = 0 then n else
    let buffer = read_block p block in
    let next = read_int buffer 0 in
    let n = n + pos + 1 in
    iter n next (p.block_word_size - 1)

  in
  let offset = p.free_block_nb mod p.block_word_size in
  iter 0 p.free_block_list offset