Вы должны реализовать utimens
и getattr
. Не все системные вызовы обязательно отображаются непосредственно на вызовы C, которые вы могли ожидать. Многие из них используются FUSE для проверки вашей файловой системы и навигации по ней, в зависимости от того, какие параметры FUSE установлены.
Я полагаю, что в вашем случае FUSE предшествует интерпретации от utimesat
до utimens
с проверкой getattr
для проверки наличия запрошенного файла и наличия ожидаемых атрибутов.
Update0
Это большое совпадение. Ниже приведен комментарий о том, что проблема нравится тем, что FUSE не поддерживает utimensat
. Это не дело. У меня была та же трассировка, которую вы предоставили при использовании fuse-python в Ubuntu 10.04. Я немного покопался, может показаться, что привязки fuse-python 0.2 предназначены для FUSE 2.6, возможно, небольшое изменение внесло эту ошибку (FUSE теперь в версии 2.8). Мое решение состояло в том, чтобы прекратить использовать fuse-python (код - ужасный беспорядок), и я нашел альтернативную привязку fusepy . Я не оглядывался назад и не испытывал никаких проблем с тех пор.
Я настоятельно рекомендую вам взглянуть, ваш код инициализации будет чище, и для адаптации к новой привязке требуются минимальные изменения. Лучше всего, это всего один модуль, и его легко читать.