LINUX.ORG.RU
ФорумTalks

[ext4]Delayed Allocation

 


0

0

http://en.wikipedia.org/wiki/Delayed_allocation

Я правильно понимаю что эта радость не гарантирует запись файла при flush() файла и close() файла и реагирует только на системный sync ?

Ведь в статье речь идет о множестве файлов...

Как эта... фича включается и выключается в EXT4 ?


Ведь если это так то это сродни глючным винчестерам у которых нету cache flushes supported и которые говорят что записали свой кеш на блины а реально не записывают - вся логика программы едет...

xtron
() автор топика

Да лан... это фича. Одна польза: я вот промахнулся директорией(не спал давно, да) но оно не успело засрать раздел! Разве не плюсы?

wyldrodney
()

> эта радость не гарантирует запись файла при flush() файла и close() файла и реагирует только на системный sync ?

Использовать Википедию в качестве источника узкотехнической информации - неразумно. Вызова flush не существует. Если верить Теду Тсо, ext4 подчиняется fsync и fdatasync.

tailgunner ★★★★★
()
Ответ на: комментарий от wyldrodney

Ко мне прибегает человек и говорит позвони по номеру XXX-XX-XX, я делаю

echo XXX-XX-XX > number

происходит open(), write(), close(), я говорю что номер записал и позвоню и человек немедленно уезжает в отпуск в тайгу.

Через 20 секунд рубится лепездричество и оказывается что нифига я не записал... Нафига такое надо ? Имхо по flush()/close() данные обязаны записываться иначе вся логика едет :(

xtron
() автор топика
Ответ на: комментарий от tailgunner

>Вызова flush не существует.
Я имею ввиду fsync()/fflush() для open()/fopen()

>Если верить Теду Тсо, ext4 подчиняется fsync и fdatasync.

Выходит и close()/fclose() ? Тогда в чем отличие всего этого от простого write кеша ???

xtron
() автор топика
Ответ на: комментарий от xtron

>Через 20 секунд рубится лепездричество

мне кажется, упсы есть даже у самых нищебродистых нищебродов

geek ★★★
()
Ответ на: комментарий от geek

>мне кажется, упсы есть даже у самых нищебродистых нищебродов

Я понимаю что надежное решение должно включать в себя UPS с обратной связью, однако это не ответ.

xtron
() автор топика
Ответ на: комментарий от xtron

>>Вызова flush не существует.

>Я имею ввиду fsync()/fflush() для open()/fopen()

fflush - это вообще не системный вызов, про fsync я уже сказал.

>>Если верить Теду Тсо, ext4 подчиняется fsync и fdatasync.

>Выходит и close()/fclose()

Не выходит. man 2 close.

> Тогда в чем отличие всего этого от простого write кеша ???

В том, что delalloc используется не для ускорения чтения/записи, а для оптимизации размещения файлов на диске.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

>Не выходит. man 2 close.

Это все придирки. Ок дескриптор close() "является последней копией какого-либо файлового дескриптора". Можно быть уверенным что close() физически запишет данные ?

xtron
() автор топика
Ответ на: комментарий от wyldrodney

>AFAIR, есть соответствующая твоим запросам опция монтирования.

Можно подробней ? Пока не нашел :(

xtron
() автор топика
Ответ на: комментарий от xtron

>> Не выходит. man 2 close.

> Это все придирки.

Придирки начнутся сейчас - читать научись, уже пора: "A successful close does not guarantee that the data has been success fully saved to disk, as the kernel defers writes". И так было _всегда_,

> Можно быть уверенным что close() физически запишет данные ?

close ничего не гарантирует (это зависит от реализации: "It is not common for a filesystem to flush the buffers when the stream is closed").

tailgunner ★★★★★
()
Ответ на: комментарий от xtron

Первое, что пришло в голову - это sync.

Копать мне не хочется, ибо переползаю на Рейзер4. Так что документация поможет ;)

wyldrodney
()
Ответ на: комментарий от tailgunner

>close ничего не гарантирует

Да дейстительно, это что-то новое, а я всю жизнь считал что close() включает в себя fsync()...

Мде... Что-ж теперь всегда буду делать open()/write()/fsync()/close()

xtron
() автор топика
Ответ на: комментарий от tailgunner

Видите принесли мне частичку новых знаний за что вам спасибо !
и не нужно так нервничать, поменьше снобизма :)

xtron
() автор топика
Ответ на: комментарий от xtron

> и не нужно так нервничать, поменьше снобизма

Я что-то пропустил? Цитирование man close уже считается снобизмом? :-)

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от xtron

> Мде... Что-ж теперь всегда буду делать open()/write()/fsync()/close()

Вот бы и всех остальных разработчиков заставить прочитать ман по close(), которому сто лет в обед - и проблема с ext4 окажется исчерпана.

const86 ★★★★★
()
Ответ на: комментарий от xtron

>> Мде... Что-ж теперь всегда буду делать open()/write()/fsync()/close()

Ну и нахрена? Вот из-за таких как ты, гном и тормозит, т.к. в процессе работы он пересохраняет кучу всяких мелких файликов. Если на каждом таком сохранении ждать выполнения fsync - нормальной скорости работы не видать еще очень долго.

Исходить надо из задач.

home_user ★★★
()
Ответ на: комментарий от const86

>Вот бы и всех остальных разработчиков заставить прочитать ман по close(), которому сто лет в обед - и проблема с ext4 окажется исчерпана.

ошибаетесь, их проблема в man rename

xtron
() автор топика
Ответ на: комментарий от home_user

>Ну и нахрена? Вот из-за таких как ты, гном и тормозит, т.к. в процессе работы он пересохраняет кучу всяких мелких файликов.

Что на хрена ? В случае гном вероятно пробелама в:
1) в формате конфигурационных файлов
2) в не использоавнии в man rename
3) в не использовании man fsync

xtron
() автор топика
Ответ на: комментарий от home_user

>Вот из-за таких как ты
я между прочим докапался до сути через снобизм неких личностей и уменьшил энтропию вселенной. а это уже стоит много...

xtron
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.