flushdisk.c 520 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #ifdef linux
  2. /*
  3. * flushdisk() - linux block cache clearing
  4. */
  5. #include <stdio.h>
  6. #include <sys/types.h>
  7. #include <fcntl.h>
  8. #include <unistd.h>
  9. #include <stdlib.h>
  10. #include <sys/ioctl.h>
  11. #include <linux/fs.h>
  12. int
  13. flushdisk(int fd)
  14. {
  15. int ret = ioctl(fd, BLKFLSBUF, 0);
  16. usleep(100000);
  17. return (ret);
  18. }
  19. #endif
  20. #ifdef MAIN
  21. int
  22. main(int ac, char **av)
  23. {
  24. #ifdef linux
  25. int fd;
  26. int i;
  27. for (i = 1; i < ac; ++i) {
  28. fd = open(av[i], 0);
  29. if (flushdisk(fd)) {
  30. exit(1);
  31. }
  32. close(fd);
  33. }
  34. #endif
  35. exit(0);
  36. }
  37. #endif