Как минимум, вам необходимо указать длину передачи в дополнение к другим аргументам:
sg_write_same --32 --lba=2468 --in=sg_modes.c --xferlen=512 /dev/sda
Вы также можете обнаружить, что ваше устройство не поддерживает WRITE SAME (32).Попробуйте варианты --16 или --10, если похоже, что они не работают.
WRITE_SAME записывает количество копий входных данных.В приведенном выше примере записывается только одна копия первого логического блока (512 байт).При запуске команды существует неявное (по умолчанию) --num=1
.Если вы хотите, чтобы он записал весь файл, вам нужно указать --xferlen
, равный размеру исходного файла, а затем разделить на 512, чтобы получить значение для --num
.Однако маловероятно, что он делится поровну на 512, поэтому вам придется немного поцарапать голову.
Например, вы можете написать 8 копий первых 512 байт файла, начиная с lba2468, например:
sg_write_same -v --32 --lba=2468 --num=8 --xferlen=512 --in=sg_modes.c /dev/sda
Тогда вы сможете наблюдать начало файла при чтении на LBA 2468, 2469, 2470 и т. Д.
Если, однако,Ваше намерение состоит в том, чтобы просто написать файл один раз, возможно, вы просто хотите использовать обычный старый SCSI WRITE (16).