Иногда, изменяя размер или иным образом копаясь в разделах на диске, cfdisk скажет:
Wrote partition table, but re-read table failed. Reboot to update table.
(Это также происходит с другими инструментами разбиения, поэтому я думаю, что это проблема Linux, а не проблема cfdisk.) Почему это происходит, и почему это происходит только иногда , и что я могу сделать, чтобы избежать этого?
Примечание: Пожалуйста, предположите, что ни один из разделов, которые я редактирую, не открыт, не смонтирован и не используется иным образом.
Обновить:
cfdisk использует ioctl(fd, BLKRRPART, NULL)
Linux для перечитывания таблицы разделов. Два других рекомендованных инструмента ( hdparm -z
DEVICE
, sfdisk -R
DEVICE
) делают то же самое. Команда partprobe
DEVICE
, с другой стороны, похоже, использует новый ioctl под названием BLKPG, который может быть лучше; Я не знаю. (Он также возвращается к BLKRRPART в случае сбоя BLKPG.)
Похоже, что BLKPG - это операция «этот раздел изменился; вот новый размер», и она выглядела так, как будто partprobe
она вызывалась индивидуально на всех переданных разделах устройства, поэтому она должна работать, если отдельные разделы не используются. Однако у меня не было возможности попробовать это.
man sfdisk
говорит:Since version 2.26 sfdisk no longer provides the -R or --re-read option to force the kernel to reread the partition table. Use blockdev --rereadpt instead.