|
2.10, Dvorkin (??), 08:45, 30/12/2006 [^] [^^] [^^^] [ответить]
| +/– |
Как выразился Линус, теперь этот race стал tiny tiny... у вас есть идеи? | |
|
1.5, fi (?), 21:18, 29/12/2006 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Можно поздравить Линуса с находкой такой редкой, но тем ни менее зловредной, ошибкой. Отдельное спасибо сетям p2p - они сумели поймать баг :) Если бы NTFS так же тщательно тестировали, а затем исправляли :).
| |
1.7, Дмитрий Ю. Карпов (?), 22:37, 29/12/2006 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Что-то я при первом "наезде" не смог понять, в чём была ошибка. Похоже, речь идёт об отложенной записи страниц на диск, но дальше я увяз. | |
|
2.11, hvv (?), 11:41, 30/12/2006 [^] [^^] [^^^] [ответить]
| +/– |
'The VM layer asked the filesystem to do the write, but the filesystem just didn't do it. I personally think it's because some buffer-head BH_dirty bit got scrogged, but it could be some event that makes the filesystem simply not do the IO because it thinks the "disk queues are too full", so it just says "IO completed", without actually doing anything at all.' (c) Linus. Я так понял, пачтик именно фиксит возможность легко протерять dirty бит из-за race condition, а от этого бита зависит, будет ли страница записана на диск. | |
|
1.12, Аноним (-), 12:18, 30/12/2006 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Как понял из треда на LORе, баг касается только ext3, смонтированной по дефолту с data=ordered. Хотелось бы уточнить, читать тред на lkml влом :) | |
1.13, pavlinux (??), 13:38, 30/12/2006 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Ну незнаю как на ext3, а вот если корневая стоит xfs, то при загрузке она отказывается проверятся, орёт мол unable to run fsck: cannot load shared object libsepol.so все либы от SELinux: на месте. Да и вообще, до этого патча работало же.!!!
| |
|
2.15, pavlinux (??), 21:20, 30/12/2006 [^] [^^] [^^^] [ответить]
| +/– |
Копируешь этот исходный код в пустой файл, скажем race_fix.diff, сохраняешь.
Копируешь в директорию с исходниками ядра, например /usr/src/linux
# cp race_fix.diff /usr/src/linux
# cd /usr/src/linux
# patch -p1 < race_fix.txt
# make V=1
Всё!
| |
2.17, D3V1L (?), 20:11, 31/12/2006 [^] [^^] [^^^] [ответить]
| +/– |
Сохраняешь код патча в race_fix.diff, копируешь в директорию с исходниками, на всякий случай очищаешь директорию сборки от предыдущих билдов, патчишь, и запускаешь сборку:
# cp race_fix.diff /usr/src/linux
# cd /usr/src/linux
# patch -p1 < race_fix.txt
# make V=1 | |
|
1.16, pavlinux (??), 00:21, 31/12/2006 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Короче, этот патч для старых ядер... вот переделал под 2.6.19.х
=== кусь ===
--- b/mm/page-writeback.c 1970-01-01 00:00:00.000000000 +0300
+++ a/mm/page-writeback.c 2006-12-30 23:53:04.124975836 +0300
@@ -893,16 +893,16 @@
{
struct address_space *mapping = page_mapping(page);
- if (mapping) {
- if (TestClearPageDirty(page)) {
- if (mapping_cap_account_dirty(mapping)) {
- page_mkclean(page);
- dec_zone_page_state(page, NR_FILE_DIRTY);
- }
- return 1;
- }
- return 0;
- }
+ if (mapping && mapping_cap_account_dirty(mapping)) {
+ if (page_mkclean(page))
+ set_page_dirty(page);
+ if (TestClearPageDirty(page))
+ {
+ dec_zone_page_state(page, NR_FILE_DIRTY);
+ return 1;
+ }
+ return 0;
+ }
return TestClearPageDirty(page);
}
EXPORT_SYMBOL(clear_page_dirty_for_io);
=== кусь ===
| |
|