Linux C ext2fs_write_inode_full не удалось записать - PullRequest
0 голосов
/ 27 марта 2020

после успешного чтения файла inode с этим:

retval = ext2fs_read_inode_full(current_fs, inode, inode_buf, EXT2_INODE_SIZE(current_fs->super));
if (retval) {
    fprintf(stderr, "Failed to read inode\n");
    free(fs);
    free(inode_buf);
    return retval;
}

(На данный момент я убедился, что inode содержит правильные данные рассматриваемого файла)

Я немедленно пытаюсь напишите его так:

  retval = ext2fs_write_inode_full(current_fs, inode, inode_buf, EXT2_INODE_SIZE(current_fs->super));
  if (retval) {
      fprintf(stderr, "Failed to write inode %d\n", retval);
  }

(Конечно, я собираюсь изменить некоторые значения даты в inode перед обратной записью)

Но ext2fs_write_inode_full возвращает значение ошибки 2133571349.

Программа выполняется с привилегией root!

1 Ответ

0 голосов
/ 30 марта 2020

Проблема оказалась в том, что crtime открывал ФС с помощью ext2fs_open.

Мне нужно было передать флаг EXT2_FLAG_RW, иначе открытие по умолчанию доступно только для чтения.

...