text: #include "tests/filesys/seq-test.h"
  #include <random.h>
  #include <syscall.h>
  #include "tests/lib.h"
  
  void
  seq_test (const char *file_name, void *buf, size_t size, size_t initial_size,
            size_t (*block_size_func) (void),
            void (*check_func) (int fd, long ofs))
  {
    size_t ofs;
    int fd;
  
    random_bytes (buf, size);
    CHECK (create (file_name, initial_size), "create \"%s\"", file_name);
    CHECK ((fd = open (file_name)) > 1, "open \"%s\"", file_name);
  
    ofs = 0;
    msg ("writing \"%s\"", file_name);
    while (ofs < size)
      {
        size_t block_size = block_size_func ();
        if (block_size > size - ofs)
          block_size = size - ofs;
  
        if (write (fd, buf + ofs, block_size) != (int) block_size)
          fail ("write %zu bytes at offset %zu in \"%s\" failed",
                block_size, ofs, file_name);
  
        ofs += block_size;
        if (check_func != NULL)
          check_func (fd, ofs);
      }
    msg ("close \"%s\"", file_name);
    close (fd);
    check_file (file_name, buf, size);
  }
  