Определите, используется ли неформатированный сектор диска - PullRequest
0 голосов
/ 11 мая 2011

Я пытаюсь написать обнулитель свободного пространства, используя open(2), lssek[64](2) и write(2). Я пытаюсь определить, используется ли сектор диска.

Я посмотрел на dd(1) от coreutils, но утилита не выполняет подобные проверки. В мире Windows я мог бы вызвать DeviceIoControl с FSCTL_GET_VOLUME_BITMAP .

Учитывая необработанный сектор, существует ли системный вызов, который позволяет мне определить, используется ли сектор?

1 Ответ

3 голосов
/ 11 мая 2011

Традиционный способ сделать это (поскольку ваш метод зависит от условий гонки, приводящих к повреждению файловой системы ), это создать гигантский файл, обнулить его, а затем удалить файл. Фактически, вы можете сделать это напрямую с помощью sh, файл не нужен:

# dd will run until disk space is exhausted
dd if=/dev/zero of=__somefile.bin bs=1M conv=noerror; rm __somefile.bin
...