Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Ср окт 18, 2017 6:49 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 150 сообщений ]  На страницу Пред. 15 6 7 8 9 10 След.
Автор Сообщение
 Заголовок сообщения: Re: Ошибки файловой системы
СообщениеДобавлено: Чт фев 02, 2017 7:12 pm 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Чт мар 26, 2015 5:16 pm
Сообщения: 1186
Shell копирует кусочками по 4Кб? Ёбаный стыд... Идём на рекорд.


Вернуться к началу
 Заголовок сообщения: Re: Ошибки файловой системы
СообщениеДобавлено: Чт фев 02, 2017 10:45 pm 
Не в сети

Зарегистрирован: Вт мар 08, 2016 11:00 pm
Сообщения: 268
Ну это я потом поправлю (размер буфера шелл), тем более еще нашлось несколько проблемок с шелл.

Но, похоже, что при массовых системных операциях (у меня - файловых, у Акрона - создания кнопок), в системе отваливаются кнопки - старые не реагируют, новые не создаются. И меню рисуется абы как.

Будем воспроизводить.

1я попытка копирования 922Мб файла шелом завершилась провалом на примерно 512Мб - ошибка копирования и вышеописанный песец системы.

2я попытка прошла успешно (сразу после перезагрузки) и без последствий. Заняла в фоне примерно 4ч15 минут, загрузка CPU была 3-5%
Тестирование копии прошло успешно unzip -t file.zip - повреждений нет

Кстати, вот пример скрипта для засечек времени
Спойлер: Показать
#SHS
cd /usbhd0/1/programs
date
echo unzip started
unzip cmake -d/hd0/1/cmt
waitfor
date


Вернуться к началу
 Заголовок сообщения: Re: Ошибки файловой системы
СообщениеДобавлено: Пн фев 06, 2017 3:40 pm 
Не в сети

Зарегистрирован: Вт мар 08, 2016 11:00 pm
Сообщения: 268
Поправленная версия shell копирует тот же файл за 4м:20с

Тем не менее, программы, которые пишут мелкими кусками (unzip etc), будут работать все также медленно, без отложенного кэша записи.


Вернуться к началу
 Заголовок сообщения: Re: Ошибки файловой системы
СообщениеДобавлено: Пн фев 06, 2017 6:09 pm 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Чт мар 26, 2015 5:16 pm
Сообщения: 1186
В 60 раз быстрее. :lol:

Но всё равно медленно. Какой размер буфера?


Вернуться к началу
 Заголовок сообщения: Re: Ошибки файловой системы
СообщениеДобавлено: Пн фев 06, 2017 8:17 pm 
Не в сети

Зарегистрирован: Вт мар 08, 2016 11:00 pm
Сообщения: 268
Буфер 1Mb, но не более половины свободной памяти (уменьшаем при нехватке с шагом :2)

Для виртуалки нормальная скорость - в сравнении KFM примерно одинаково.


Вернуться к началу
 Заголовок сообщения: Re: Ошибки файловой системы
СообщениеДобавлено: Вт фев 07, 2017 9:02 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1069
0CodErr писал(а):
Размер должен возвращаться.
Pathoswithin писал(а):
Ну так я мог бы исправить документацию вместо кода. :wink:
Ну так ты всё же понял для чего это нужно?
Судя по сообщению в чате, похоже понял
Цитата:
Pathoswithin « Пн фев 06, 2017 8:33 pm » В документации написано "Если файлы в папке кончились раньше, чем было прочитано запрошенное количество, то функция прочитает, сколько сможет, после чего вернёт eax=6".


Вернуться к началу
 Заголовок сообщения: Re: Ошибки файловой системы
СообщениеДобавлено: Вт фев 07, 2017 10:47 pm 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Чт мар 26, 2015 5:16 pm
Сообщения: 1186
*facepalm* Там про файл, а там про папку, чему ты это вообще...


Вернуться к началу
 Заголовок сообщения: Re: Ошибки файловой системы
СообщениеДобавлено: Вт фев 07, 2017 11:03 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1069
Мдам.. похоже ты всё-таки не понял :)

С файлом аналогично. Только вместо количества блоков будет количество прочитанных/записанных байтов.


Вернуться к началу
 Заголовок сообщения: Re: Ошибки файловой системы
СообщениеДобавлено: Ср фев 08, 2017 9:17 am 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Чт мар 26, 2015 5:16 pm
Сообщения: 1186
У папки количество блоков находится в БДВК, а в ebx только дублируется. Папка всегда читается полностью, не зависимо от количества запрошенных блоков, потому есть смысл попробовать прочитать какое-то количество наугад. При чтении файла в статический буфер тоже можно так сделать, но обычно сначала нужно узнать его размер. При записи в файл достаточно проверить наличие ошибки.


Вернуться к началу
 Заголовок сообщения: Re: Ошибки файловой системы
СообщениеДобавлено: Ср фев 08, 2017 6:59 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн июл 25, 2011 6:22 pm
Сообщения: 93
Pathoswithin писал(а):
У папки количество блоков находится в БДВК, а в ebx только дублируется. Папка всегда читается полностью, не зависимо от количества запрошенных блоков, потому есть смысл попробовать прочитать какое-то количество наугад. При чтении файла в статический буфер тоже можно так сделать, но обычно сначала нужно узнать его размер. При записи в файл достаточно проверить наличие ошибки.


"При чтении файла в статический буфер тоже можно так сделать, но обычно сначала нужно узнать его размер." - Узнаётся из записи файла в ФС, причём любой ФС.
"При записи в файл достаточно проверить наличие ошибки." - Какой? - Записался/Не дописался/Не записался/...

_________________
Программист не тот, кто постоянно пишет КОД, а тот кто сможет понять чужой КОД!!!


Вернуться к началу
 Заголовок сообщения: Re: Ошибки файловой системы
СообщениеДобавлено: Ср фев 08, 2017 8:02 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1069
Pathoswithin писал(а):
У папки количество блоков находится в БДВК, а в ebx только дублируется.
КЭП? :mrgreen: А вот для файлов оно не дублируется.
Pathoswithin писал(а):
есть смысл попробовать прочитать какое-то количество наугад
:shock:
Pathoswithin писал(а):
сначала нужно узнать его размер
Дополнительный системный вызов?

Ты когда-нибудь занимался обработкой файлов? Вполне типичные примеры:
Код:
While BytesRead > 0 Do ... ;
Код:
Repeat  
  ..............
  ReadFile ... ; 
  ..............
Until (BytesRead < ReadBufferSize); 
Можно читать While Not EOF, EOF будет означать, что прочитан последний кусок, но он не обязан быть равным размеру буфера. Вот в ebx и возвращается BytesRead.


Вернуться к началу
 Заголовок сообщения: Re: Ошибки файловой системы
СообщениеДобавлено: Ср фев 08, 2017 8:32 pm 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Чт мар 26, 2015 5:16 pm
Сообщения: 1186
Ну а при записи в файл достаточно проверить наличие ошибки. Что не так?


Вернуться к началу
 Заголовок сообщения: Re: Ошибки файловой системы
СообщениеДобавлено: Ср фев 08, 2017 9:17 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1069
С одной стороны, насколько знаю, у нас сейчас в KolibriOS или записано всё, или ничего. Будет ли оно так всегда?
Но с другой, вообще попадаются исходники в сети, в которых идёт проверка if bytesWritten < ...
Наткнулся ещё на https://www.linux.org.ru/news/opensource/3591104
Цитата:
Если ваша файловая система возвращает ENOSPC при закрытии файла через вызов close(), а не при записи в него через write() ...
Но у нас сейчас нет дескрипторов. Вроде сейчас такой проблемы в KolibriOS нет?


Вернуться к началу
 Заголовок сообщения: Re: Ошибки файловой системы
СообщениеДобавлено: Ср фев 08, 2017 11:38 pm 
Не в сети

Зарегистрирован: Вт мар 08, 2016 11:00 pm
Сообщения: 268
Что поменялось с работой с путями в нескольких последних ревизиях?

unzip перестал находить файл архива, если я шелл запускаю с флэшки
при этом
pwd
/<сердечко>/usbhd0/1/PROGRAMS - заглавными

если я делаю пару смен каталога - на другой диск и обратно - сердечко и заглавные буквы из pwd пропадают и все работает

похоже, проблема в сердечке, заглавные буквы не влияют

флешка - FAT

но самому шеллу сердечко не мешает


Вернуться к началу
 Заголовок сообщения: Re: Ошибки файловой системы
СообщениеДобавлено: Чт фев 09, 2017 1:21 pm 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Чт мар 26, 2015 5:16 pm
Сообщения: 1186
В последних ревизиях я курочил только ext.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 150 сообщений ]  На страницу Пред. 15 6 7 8 9 10 След.

Часовой пояс: UTC+03:00


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


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

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