>
>>то есть разговора о производительности метаданных не идет ?
>>для решения вопросов о локах - у люстры свой lockd, это один
>>из самых обольших ее кусков.
>
>Из чего вы сделали такой вывод о производительности метаданных? хотя бы из ваших слов о fcntl lock - что они не быстрые, есть такая буква.
И о структуре транзакций.
>
>>так же как и при журналировании данных.
>
>Ога, а кто дожидется, что запись в журнал завершена :)
клиент - для этого есть средства. в Lustre book об этом была помоему глава.
>
>>>Надеюсь, что вы не пишете такой код... Задайте тот же самый вопрос,
>>>если у вас два потока, один делает lseek(), а второй просто
>>>write(). И тоже самое будет с двумя клиентами pohmelfs.
>>
>>судя по вашим словам "статистика не сихнронизиуется" - первый клиент будет иметь
>
>Статистика _пока_ не синхронизируется, это раз.
но ведь это уже названо релизом? скажите что это глубокая альфа - я оставлю свои коментарии :) или что я об этом не думал.
>[оверквотинг удален]
>>i_size = size_old, от первого ls -l (выполнен stat), и будет
>>писать ровно с этой позиции - оно закэшировано в его vfs
>>стеке.
>>
>>второй клиент i_size уже обновил - и писать надо с другой позиции
>>- но без когерентности meta-data - как первый клиент узнает
>>что размер обновился? кто за него сделает этот lseek?
>
>Вы разве не видите огромный race в этом случае для локального VFS
>и двух потоков?
нету там race для локального VFS. оба клиента в этом случае работают с одной struct inode
и i_size будет одинаковый, а в вашем случае это не так. Оба клиента разделены по сети, и i_size у них разный. Нарушение POSIX.
Еще раз подчеркиваю
клиент1: statfs inode, open(O_APPEND); sleep
клиент2: open(,O_APPEND); write, exit;
клиент1: write, exit
по времени эти 2 действия не пересекаются - только i_size обновляется асинхронно.
такая последовательность действий запрещена с точки зрения pohmelfs ?
>Прямо один в один, только потоки локальные. Что будет, если один собрался
>делать write(), а второй lseek()?
>
>Так банально _НЕЛЬЗЯ_ делать, если вы заботитесь о сохранности данных, т.к. другой
>поток может вызвать lseek() и переписать указатель, откуда надо делать write().
>Для этого и изобрели pwrite() и остальных (собственно, они и используются
>в pohmelfs server).
в случае люстры - 2 клиента могут писать в EOF последовательно и это будет работать.
у вас это запрещено - ок, запишем.
Есть еще MPI - где это не запрещено, макс захотят что бы стояли барьеры.
>
>Еще раз повторю, что pohmelfs не будет поддерживать синзхронизацию более строгую, чем
>локальный VFS.
дай бог что бы она поддерживала хотя бы такую как есть в локальном VFS, пока и ее нету.
Я лиш пытаюсь показать подводные камни на этом пути, да и немного - не совсем привычных use case которые тем немеение существуют.