Сообщить об ошибках, чтобы предохранитель без трассировки - PullRequest
0 голосов
/ 28 февраля 2020

При реализации readdir для файловой системы python-fuse в основном можно выбрать один из следующих двух шаблонов (это только два шаблона, которые я могу найти в примерах файловых систем):

def readdir (self, path, offset):
    # ...
    # building list_of_directory_entries
    # ...

    if no_error: return list_of_directory_entries
    else: return -error_code

# OR

def readdir (self, path, offset):
    # ...
    # building generator_of_directory_entries
    # ...

    if no_error: yield from generator_of_directory_entries
    else: raise fuse.FuseError(error_code)

Несмотря на то, что оба шаблона, по-видимому, реализуют одно и то же, между ними есть небольшая разница, когда дело доходит до сообщения об ошибках для слияния: если файловая система была смонтирована с опцией -f (передний план) (то есть ./examplefs -f mountpoint) или с Параметр -o debug и некоторая ошибка возникает в readdir, последний шаблон выводит трассировку ошибок в stdout / stderr, тогда как первый шаблон ничего не выводит. Это напрямую приводит меня к моему вопросу. Можно ли, используя схему генератора, сообщать предохранителю об ошибках, но таким образом, что fuse / python не выводит трассировку ошибок в stdout / stderr? Я работаю над предохранителем файловую систему и предпочел бы использовать шаблон генератора, но обратные трассировки мешают системе журналирования, которая у меня есть.

...