2015-08-11 4 views
0

Я использую FUSE для создания файловой системы наложения, где каталоги дополняются виртуальными объектами. Я устанавливаю размер файлов этих объектов равным 0, потому что у меня нет возможности узнать - впереди их читать, что особенно дорого в моем случае - какими они должны быть.Размер файла виртуального файла

Однако, кажется, что существует очевидная оптимизация, поскольку файлы с нулевой длиной не несут никакого звонка read (только open и release).

Мой вопрос, таким образом, просто, что я должен установить размер файла? Я знаю, что символические ссылки имеют размер их длины имени файла; будет ли эта работа, учитывая, что это не символическая ссылка? В противном случае лучшее, что я могу сделать, это обеспечить нижнюю границу для размера ... Если read имеет только дескриптор файла, размер и смещение файла, предположительно, он читает «til EOF», а не то, что stat может это сказать.

ответ

1

Размер файла должен быть правильным. Из этой информации зависит много кода, вы не можете просто опустить ее.

Это означает, что вам необходимо выяснить эффективный способ кэширования/предварительной подсчета этой информации.

Посмотрите на источники cmdfs, которые запускают команду для всех файлов в файловой системе. Linux Magazine has an overview article.

+0

На каком уровне находится этот зависимый код? На уровне системного вызова он появляется (хотя, вероятно, я ошибаюсь!), Как будто это не важно; на уровне приложения, я знаю, что единственное программное обеспечение, которое читает этот тип файла, не зависит от размера файла ... Я могу дать оценку, если это лучше, на основе нижней границы. – Xophmeister

+0

ОС использует это значение, чтобы определить, когда отправлять EOF. Так что буквально каждый, кто читает данные из файла, нуждается в этом. –

+0

Невозможно поднять этот сигнал самостоятельно? – Xophmeister

Смежные вопросы