Торвальдс раскритиковал дизайн файловых систем

image

Теги: Торвальдс, ядро Linux

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

В виду последних событий, когда многие люди обнаружили пропадание и обнуление файлов в файловой системе ext4 после краха ОС, создатели ext4 высказались за идею включения в ядро новых системных вызовов, которые бы позволили безопасно работать с файлами.

Линус Торвальдс в списке рассылки ядра жестоко раскритиковал эти предложения и заявил, что большинство программистов никогда не будут этими новыми системными вызовами пользоваться, что они будут нестабильными и плохо оттестированными.

Цитата: "Поэтому вместо того, чтобы придумывать новые системные вызовы, которые никто не будет использовать, разработчики файловых систем должны стараться обеспечить нормальную работу даже плохого кода. Потому что, хотите вы этого или нет, 99% программ именно так и написаны.

Тот неоспоримый факт, что люди не проверяют ошибки, которые возвращает системный вызов close() (закрытие файла и сброс "грязных" данных из кэша на диск) должен означать, что, например, при отложенной записи на диск нужно обязательно проверять ситуацию переполнения диска. Если ваша файловая система возвращает ENOSPC при закрытии файла через вызов close(), а не при записи в него через write(), значит, что вы потеряли обработку ошибок переполнения диска у 90% приложений. Вот так всё просто.

Жаловаться на то, что ошибка в приложении - это всё равно, что жаловаться на скорость света: вы должны иметь дело с реальным миром, а не с тем, каким бы вы хотели его видеть. То же самое относится к идее, что "люди должны писать во временный файл, вызывать функцию fsync для него и переименовывать его вместо оригинала". Вы думаете, что так должно быть, но в реалии программисты пишут open(filename, O_TRUNC | O_CREAT, 0666). Это неправильно, я знаю. Но в конечном итоге, даже разработчики хорошо написанного приложения могут решить, что fsync() не стоит тех потерь в производительности. В git, например, где мы обычно пытаемся быть очень, очень и очень аккуратными, fsync() в объектных файлах по умолчанию выключен.

Почему? Потому что его включение вызывает неприемлемое поведение ext3. Сейчас, надо сказать, дизайн git'a рассчитан на то, что потеря нового БД файла не фатальна, но потенциально это очень беспокоит и смущает - вам, возможно, придётся откатить изменения назад и переделать некоторые операции вручную.

К чему я всё это говорю ? Иногда те разработчики файловых систем, которые говорят "вы должны использовать fsync(), чтобы получить предсказуемые результаты" - это те же люди, которые испортили всё это до такого безобразия, что fsync'ом абсолютно нереально пользоваться.

Теория и практика иногда сталкиваются. Когда это случается, теория проигрывает. Всегда."


или введите имя

CAPTCHA
Страницы: 1  2  3  4  5  6  7  
30-03-2009 15:03:54
Нифига себе скока буковок странных. Я непонял ровным счетом ничего, но Линусу верю как себе! Без него небыло бы такой работоспособной Виндовс )
0 |
Линус Торвальдс
30-03-2009 15:08:06
Линупс ацтой, используйте Виндовс
0 |
Steve Ballmer
30-03-2009 16:23:31
+500 * Powered by comment's enlonger © Microsoft Corp. 2009 *
0 |
Ричии Столман
31-03-2009 07:29:45
Линус, друг мой, не нужно отчаиваться !!! Ну подумаешь у тебя из-за ext4 стеролось 20Gb наработок, над которыми ты работал последние 10 лет - ну это же еще не конец жизни - тебе и твой лечащий врач-психоаналитик то же самое говарил. Так что выздаравливай, поправляй свою нервную систему и возвращзайся к нам. И не нужно больше делать таких поспешных выводов !! Твой друг, риччи. ЗЫ: Я тут о GPLv4.1 думаю...думаю в новой лицензии нужо обязать разрабов платить пользователям за использование их софта..да нужно же как-то повысить популярность опенсорс. Еще раз - выздоравливай !!!
0 |
Андрей
31-03-2009 09:52:55
Если ты хранишь наработки за 10 лет (!) на винчестере, ты видимо играешь в игрушки и сохраняешь сейвы. При таком раскладе дальше можно и не читать.
0 |
31-03-2009 12:03:42
ну и бэкапы никто не отменял -----------------------------
0 |
Планировщик Windows
30-03-2009 16:55:46
Кстати, тема уже почти неделю назад была на ЛОРе. Видимо я глючу.
0 |
12345
30-03-2009 17:35:11
ну так и иди на лор! что мы виноваты, что админ секлаба только сегодня вышел из запоя и запостил
0 |
Ыку
30-03-2009 17:40:54
Какое боянище то запостили. чеёк чеёк чеёк чеёк чеёк чеёк чеёк чеёк чеёк чеёк чеёк чеёк чеёк
0 |
Quake
30-03-2009 15:07:04
Линус как всегда прав. Прочитайте и убедитесь сами. Я его уважаю, он мой БОГ! "Потому что, хотите вы этого или нет, 99% программ именно так и написаны." - да, всё так. Никогда не приходило в голову проверять close()... Файловая система должна быть устойчива к таким ошибкам, пусть даже это не ошибка самой ext4 а именно программы...
0 |
98821
30-03-2009 15:15:06
вод чехо & слэдовала ажыдадь, вердикт - гавно Линух
0 |
Гость
30-03-2009 16:49:00
Не линукс говно, а одни гавноляпы наляпали ковница в ядрышко. (замечу пока еще ext4 не является финальной (стабильной версией)). А торвальд говорит верно, сколько я видел прог ни кто еще close() не проверял, тупо закрыли и все. Сам одно время писал умный класс (довольно обромный получился код почти на 5МБ), клас использовался исключительно разрабами. В класс для статистики вкинул одну вешь, которая соберала какие функции наиболее используемы и еще пару вещей. После пересмотра логов сделал вывод, что сами разрабы в большенстве случаев использовали функции в которых были различные защиты и фильтры от муссора, а ошибок и оссобенно муссора как оказалось валило дофига. Вывод 90% разрабов совсем не парит скорость, надежность и устойчивость программного кода. Главной задачем большенства - написать код и потестить его только поверхносно.
0 |
ZEN
30-03-2009 21:53:14
Неволнуйся) В винде тоже проверки на закрытие не далают.
0 |
39300
31-03-2009 12:11:39
Неволнуйся) В винде тоже проверки на закрытие не далают.Конечно делают. Если я пишу Close #FileNumber То файл именно закрывается. Зачем его проверять. И потом IDE от МС это круто это не какой-то говняный Eclipse потому как там есть автоматическая сборка мусора, и если я где то забыл в коде выгрузить экземпляр класса, для работы с файлом, то она все сделает за меня. И NTFS от этого не в коем случае не падает, даже если этого не произошло. Так что дрочитесь дальше луноходы!!! Капча подтверждает 39300
0 |
31-03-2009 13:03:32
MS добавила сборщик мусора в C++? Расскажите поподробнее.
0 |
ZEN
31-03-2009 18:12:19
Конечно делают. Если я пишу Close #FileNumber То файл именно закрывается. Зачем его проверять. Это ты про C#? Зачем мне подделие, которое уже 10 лет как обещают сделать кроссплатформенным? (а в результате сделали порт совсем другие люди) К тому же можно легко исходник JIT кода просматривать. Поищи в нете прогу reflector.zip. Так даже весь NET.Framework просмотреть можно. А производительность просто жесть. Да и в жизни я еще не видел, что бы C# использовали дальше отрисовки интерфейса программы. Как правило весь остальной код - библиотеками на С++ пишут. И NTFS от этого не в коем случае не падает, даже если этого не произошло. Так что дрочитесь дальше луноходы!!! Да ну? Насмешил))) В моей практике было когда винда не видела раздел NTFS. Но вот парадокс! Линуксовый драйвер NTFS-3G позволил спокойно считывать и записывать данные в тот раздел. Заметь, у разработчиков NTFS-3G небыло исходников Майкрософтской ФС. И что теперь получается? Получается, что индусы б_ы_д_л_о_к_о_д_е_р_ы!!! Так что дрочитесь дальше луноходы!!! Не суди по себе о людях.
0 |
21069
01-04-2009 08:17:35
Идиоты все. Это я про VS2008 Идите учите матчасть, клоуны.
0 |
01-04-2009 11:14:47
Да это ты тут знатный клоун, я смотрю ))))))
0 |
ZEN
01-04-2009 16:24:54
Идиоты все. Это я про VS2008 Идите учите матчасть, клоуны. ггг))) а VS2010 которую обещают сделать в 75ГБ(!!!) объемом уже будет функция пИсать программы с идеальным кодом по щучьему велению
0 |
Служба всемирного поклонения m...
30-03-2009 16:52:26
Нет бога кроме Гейца, и венда - пророк его.
0 |
!Who
30-03-2009 21:09:25
Винда пророк? Ты че то путаешь... Винда продукт жизнидеятельности Гейтца...
0 |
глисты
30-03-2009 21:42:38
Очень хороший этот продукт у Гейтца, нам нравится
0 |
Bugg
30-03-2009 15:41:22
Никогда не приходило в голову проверять close()... Ну и ССЗБ. Читай внимательнее: "твой БОГ" говорит, что проверять нужно. Файловая система должна быть устойчива к таким ошибкам, пусть даже это не ошибка самой ext4 а именно программы...Боже мой, боже мой... Хватит чушь нести, поколение пепси. Закрой браузер, открой книжку, и учись. Научишься - станет стыдно за подобные коменты.
0 |
Quake
30-03-2009 15:52:55
Ну и ССЗБ. Читай внимательнее: "твой БОГ" говорит, что проверять нужно.Раз так велит мне Господь Линус, то я буду проверять close()Боже мой, боже мой... Хватит чушь нести, поколение пепси. Закрой браузер, открой книжку, и учись. Научишься - станет стыдно за подобные коменты.Ага, уже стыдно, придурок ты =) Я даже close() иногда не вызываю, когда запись в файл завершается в конце работы программы и на ext3 и на других ФС это работает стабильно. Стало быть на всех ФС такие нелепые ошибки не должны приводить к проблеме...
0 |
Bugg
30-03-2009 16:34:33
Ага, уже стыдно, придурок ты =)А я и не надеюсь, что уже стыдно. Вот подрастешь, уму-разуму наберешься - тогда станет стыдно. Я даже close() иногда не вызываю, когда запись в файл завершается в конце работы программы и на ext3 и на других ФС это работает стабильно.Что работает стабильно? Ты бы читать научился сначала и понимать написанное, а потом старшим хамил. Оговорка Торвальдса об использовании close() относится к практике программирования вообще, без привязки к какой-либо файловой системе.
0 |
Quake
30-03-2009 17:55:56
Оговорка Торвальдса об использовании close() относится к практике программирования вообще, без привязки к какой-либо файловой системе. Но то что вызов close() с ошибкой приводит к потере данных это я слышу впервые. Никогда не видел чтобы close() возвращало ошибку
0 |
^_^
30-03-2009 18:14:41
Бугага...не ну теоритичемки можно с иметировать такую ошибку...
0 |
Bad-XxX
31-03-2009 10:04:59
Может я чего-то не понимаю, но как close() может возвратить ошибку? Я понимаю массу причин, по которой файл нельзя открыть, но чтоб закрыть... Ок, к примеру нельзя его закрыть, что дальше, если нужно к примеру завершить работу программы?
0 |
Bad-XxX
31-03-2009 10:07:08
Аа, всё, прочитал внимательно в теме, понял. Странно, но ни в одной книге не пишется, что close() нужно проверять.
0 |
31-03-2009 10:50:24
Это наверно потому, что ошибку нехватки места на диске программно обработать затруднительно.
0 |
Bad-XxX
31-03-2009 16:36:28
Типа того. И не только, речь про отложенную запись.
0 |
ZEN
30-03-2009 21:55:12
Оговорка Торвальдса об использовании close() относится к практике программирования вообще, без привязки к какой-либо файловой системе. И к винде тоже!
0 |
гость
30-03-2009 21:18:51
Ну да в NTFS думать ниочем не надо)) 5+ тому кто ее разработал))
0 |
Pro
31-03-2009 11:24:38
Ну да в NTFS думать ниочем не надо)) 5+ тому кто ее разработал))Угу, и она вобще не фрагментируется и не рушится ни разу.
0 |
 
01-04-2009 12:49:01
Угу, и она вобще не фрагментируется и не рушится ни разу.А что, в линуксе есть read-write FS, которые не фрагментируются и которые никогда и ни у кого не крешились?
0 |
ZEN
01-04-2009 16:26:52
после стадии RELEASE - небыло . А бета и альфа версии - было. Но NTFS же не бета и не альфа! :-P
0 |
 
30-03-2009 15:11:30
Artem Tashkinov знатный флеймовод =)
0 |
12345
30-03-2009 15:12:09
драка в рядах линупсоедов! они не знают, как исправить очередной баг в ядре и теперь переводят друг на друга стрелки
0 |
ZEN
30-03-2009 21:59:03
драка в рядах линупсоедов! они не знают, как исправить очередной баг в ядре и теперь переводят друг на друга стрелки ха-ха-ха. Пока одни исправляют баги, что бы у людей всё работало(Линуксоиды) другие возложили поиск багов на тупое стадо овец(виндузятников). Еще раз посмеёмся - ха-ха-ха! Зы А в винде тоже никто не делает проверок на close();
0 |
anonymous
30-03-2009 15:14:41
Иногда он говорит чушь, но сейчас прав и с этим не поспоришь. ............................................................. .............................................................
0 |
Страницы: 1  2  3  4  5  6  7