BSDPORTAL.RU

На этом сайте обсуждаются вопросы использования ОС FreeBSD
 Портал  •  Статьи  •  Форум  •  Wiki  •  Поиск  •  FAQ  •  Обои  •   Официальная документация  •  Новые темы 

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Нужен ли такой патч?
Опрос закончился Вс 15 июл, 2007 4:27 pm
Конечно, нужен 65%  65%  [ 11 ]
Нет, таких проблем в FreeBSD нет 12%  12%  [ 2 ]
Бесполезный патч 0%  0%  [ 0 ]
Это прогон. Какой-то анонимус.. 24%  24%  [ 4 ]
Всего голосов : 17
Автор Сообщение
 Заголовок сообщения: Патч FreeBSD 6.2
СообщениеДобавлено: Ср 16 май, 2007 4:27 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Чт 25 май, 2006 2:27 pm
Сообщения: 120
Некий Анонимус написал здесь следующее:
Цитата:
Привет всем программистам.

Написал небольшой патч для ядра FreeBSD, подсистемы VFS.
Исправляет панику при синхронизации с потеряным устройством, тобишь не отмонтировали флешку, вытащили и словили дамп)))
В общем проблемы была в функции bufobj_invalbuf, исравил правкой флагов (наибольший эффект наименьшими средствами), попутно поправил реализацию msdosfs, не было проверки на нулевой указатель и ядро падало в панику с page fault. Так же изменению подверглась функция dounmount поскольку не уничтожала точку монтирования при отрицательном резельтате синхронизации.

Вопрос к вам товарисчи, куда мне все это деть, это вообще нужно кому нибудь???)))
Какой Русский коммитер может это заценить, английский знаю плохо))) поэтому в списки рассылки не суюсь)))

:shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт 17 май, 2007 2:20 am 
Не в сети

Зарегистрирован: Вс 03 июл, 2005 6:53 am
Сообщения: 140
Откуда: Хабаровск
А где собственно сам патч? О чем разговор то?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт 17 май, 2007 2:37 am 
Не в сети

Зарегистрирован: Ср 12 янв, 2005 7:14 am
Сообщения: 1419
Откуда: Murmansk
Такой патч безусловно нужен! Только SYS уже его сделал.

Меня только одно смущает -- если все так просто -- почему уже столько лет его не внесут?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт 17 май, 2007 12:50 pm 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: Вт 24 дек, 2002 3:55 pm
Сообщения: 3961
Откуда: Россия, Ростов-на-Дону
inspirra писал(а):
Такой патч безусловно нужен! Только SYS уже его сделал.

Меня только одно смущает -- если все так просто -- почему уже столько лет его не внесут?

Мой патч далек от того что б его использовать в продакшен, там отключен вызов паники и все.
А патч увидеть действительно надо, заодно и проверить.
Отправить патч можно Ruslan Ermilov <ru@FreeBSD.org>, это очень достойный разработчик из наших.


Последний раз редактировалось sys Пт 18 май, 2007 12:26 pm, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт 18 май, 2007 1:56 am 
Не в сети
Аватара пользователя

Зарегистрирован: Вс 10 сен, 2006 10:54 am
Сообщения: 474
Откуда: POSIX
или я неудачник или в 64битном варианте такой проблемы нема


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт 18 май, 2007 3:31 am 
Не в сети
Аватара пользователя

Зарегистрирован: Чт 25 май, 2006 2:27 pm
Сообщения: 120
Azathoth писал(а):
А где собственно сам патч? О чем разговор то?

Извини, я неудачно ссылку дал. Здесь. Это 3BEPb оказывается был. И как всегда респект. Разговор там (по ссылке выше) интересный, а пост с патчем следующий, цитирую:

Цитата:
Все досконально объяснять не буду слишком много печатать, поверхностно поясняю)))
Проблема была в синхронизации грязных буферов vnode, с устройством. Ну разумеется суперблок тоже не мог записаться.
Исправлению подверглась функция bufobj_invalbuf, причем минимально. Паника возникала от того что при попытке отмонтировать флеш карту вызывалась функция vflush, и от того что демон синхронизации пытался записать на это устройство. Функция делала попытку завершить все опереции ввода выводы с буферами внодов, но число этих буферов не уменьшалось, хобя поток geom g_up ошибку сразу не возвращал, просто число не завершенных операций было бльше нуля, но это не повод для паники в принципе, просто необходимо было очистить списки буфуров bufobj внода без флага V_SAFE, вот патч

--- /home/arch_kern_files_2/vfs_subr.c Mon Dec 4 17:47:53 2006
+++ /sys/kern/vfs_subr.c Thu May 17 11:46:32 2007
@@ -1029,8 +1029,10 @@
* enabled under INVARIANTS
*/
BO_LOCK(bo);
- if (bo->bo_numoutput > 0 || bo->bo_dirty.bv_cnt > 0)
- panic("vinvalbuf: dirty bufs");
+ if (bo->bo_numoutput > 0 || bo->bo_dirty.bv_cnt > 0) {
+ printf("bufobj_invalbuf: warning panic not run, error=%d\n", error);
+ flags = 0;
+ }
}
}
/*


следующая проблема в процедурах unmount файловых систем, причем все они реализованы по разному и ведут себя совершенно не предсказуемо с точки зрения возвращения ошибок, если ufs возвращало код глобальной ошибки после попытки синхронизации с процедуры dounmount, то msdosfs этого не делало, в общем ufs не трогал а msdosfs поправил немножко
патчи

--- /home/arch_kern_files_2/msdosfs_vfsops.c Wed Dec 20 12:05:30 2006
+++ /sys/fs/msdosfs/msdosfs_vfsops.c Wed May 16 21:24:03 2007
@@ -766,8 +766,10 @@
/* If the volume was mounted read/write, mark it clean now. */
if ((pmp->pm_flags & MSDOSFSMNT_RONLY) == 0) {
error = markvoldirty(pmp, 0);
- if (error && (flags & FORCECLOSE) == 0)
+ if (error && (flags & FORCECLOSE) == 0 && (error & ENXIO) == 0)
return (error);
+ if (error & ENXIO)
+ error = 0;
}
#ifdef MSDOSFS_DEBUG
{


также в msdos была ошибка при выводе информации о не записанных секторах патч

--- /home/arch_kern_files_2/msdosfs_vnops.c Mon Mar 13 12:05:13 2006
+++ /sys/fs/msdosfs/msdosfs_vnops.c Thu May 17 11:44:23 2007
@@ -1834,7 +1834,9 @@

printf("\tstartcluster %lu, dircluster %lu, diroffset %lu, ",
dep->de_StartCluster, dep->de_dirclust, dep->de_diroffset);
- printf("on dev %s\n", devtoname(dep->de_dev));
+ if (dep->de_dev != NULL) {
+ printf("on dev %s\n", devtoname(dep->de_dev));
+ }
return (0);
}

НУ и процедура dounmount тоже немного поменялась, ПРИЧЕМ ПОДЧЕРКИВАЮ ЭТО НЕ ТУПАЯ ПОПЫТКА ИЗБЕЖАТЬ ПАНИКИ это все делалось с тонким расчетом и желанием как можно меньше менять в ядре
патч

--- /home/arch_kern_files_2/vfs_mount.c Wed Oct 25 01:02:39 2006
+++ /sys/kern/vfs_mount.c Thu May 17 11:48:49 2007
@@ -1194,6 +1194,10 @@
(flags & MNT_FORCE)) {
error = VFS_UNMOUNT(mp, flags, td);
}
+ if (error & ENXIO) {
+ printf("dounmount: error=%d\n", error);
+ error = VFS_UNMOUNT(mp, 0, td);
+ }
vn_finished_write(mp);
if (error) {
/* Undo cdir/rdir and rootvnode changes made above. */

Ориентировался я по номерам глобальных ошибок которые возвращались после операции io

Заценивайте...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт 18 май, 2007 12:56 pm 
Не в сети

Зарегистрирован: Чт 17 май, 2007 1:00 pm
Сообщения: 3
Товарищи, вы хоть отпишите, кто попробовал, никаких проблем нету???


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн 21 май, 2007 3:35 am 
Не в сети

Зарегистрирован: Чт 17 май, 2007 1:00 pm
Сообщения: 3
При синхронизации стабильного дерева исходных кодов с тестовым, выяснилось что не все исправления выложил, для msdosfs решение проблемы правильное, а для ufs и других файловых систем(rw in FreeBSD), к сожалению, чтобы они правильно освобождали ресурсы, тоже приходится вносить изменения, вечером выложу патч.

--- /sys/ufs/ffs/ffs_vfsops.c Mon May 21 22:06:40 2007
+++ ffs_vfsops.c Mon May 21 22:07:35 2007
@@ -979,10 +979,12 @@
if (fs->fs_ronly == 0) {
fs->fs_clean = fs->fs_flags & (FS_UNCLEAN|FS_NEEDSFSCK) ? 0 : 1;
error = ffs_sbupdate(ump, MNT_WAIT, 0);
- if (error) {
+ if (error && (error & ENXIO) == 0) {
fs->fs_clean = 0;
return (error);
}
+ if (error & ENXIO)
+ error = 0;
}
DROP_GIANT();
g_topology_lock();


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт 13 июл, 2007 10:09 pm 
Не в сети

Зарегистрирован: Вт 29 май, 2007 2:30 pm
Сообщения: 147
Откуда: Сибирь, Томск, Северск...
sys писал(а):
inspirra писал(а):
Такой патч безусловно нужен! Только SYS уже его сделал.

Меня только одно смущает -- если все так просто -- почему уже столько лет его не внесут?

Мой патч далек от того что б его использовать в продакшен, там отключен вызов паники и все.
А патч увидеть действительно надо, заодно и проверить.
Отправить патч можно Ruslan Ermilov <ru@FreeBSD.org>, это очень достойный разработчик из наших.


спасибо за контакты разработчиков, понимающих русский язык. я уже несколько писем писал на моя криваст англеске по поводу железа во фре.. интересно в 7.0 будет поддержка 955, 965 и 975 чипсета полностью, ато етот Attansic не могу завести... прошу прощения за оффтоп.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср 18 июл, 2007 5:52 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн 19 мар, 2007 10:04 pm
Сообщения: 9
3bepb писал(а):
Товарищи, вы хоть отпишите, кто попробовал, никаких проблем нету???

Пропатчил, пока полёт нормальный. Спасибо )))
Только если при операциях I/O вытащить флешку
продолжаются попытки чтения пока её не отмонтируешь.
На запись не проверял, боюсь. =D
Код:
g_vfs_done():da0[READ(offset=90624, length=4096)]error = 6
g_vfs_done():da0[READ(offset=187340288, length=4096)]error = 6

Вот эти сообщения повторяются без остановки до umount'а.
Нет ли какого-нибудь способа лока I/O на это время (если bip->bio-error == 6)? =/


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Зарегистрированные пользователи: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB
Яндекс.Метрика