The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"mmap против mmap2 на 32битной системе"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"mmap против mmap2 на 32битной системе"  +/
Сообщение от mikra on 09-Июн-09, 11:43 
У меня есть две генты с иксами: 32битная и 64битная. Кроме того, есть samba сервер с единственной шарой на полтора терабайта. На шаре лежит текстовый файл.
Открываю текстовый файл редактором gedit, и в 32битной системе он не открывается с ошибкой ENODEV.

В 64битной системе через strace вижу, что используются обычные функции вроде fstat, fcntl, mmap, но с 64 битным параметром типа off_t, который содержит размер, смещение в файле итп. Собственно как и положено в amd64... Все работает, файл открывается.

В 32битной же системе off_t 32битный. Поэтому для работы с большими файлами дополнительно существуют функции mmap2, fstat64, fcntl64 итд. Однако обычные fstat, fcntl и mmap все еще присутствуют. Ошибка ENODEV возвращается функцией
mmap2(NULL, 562, PROT_READ, MAP_PRIVATE, 8, 0) = -1 ENODEV (No such device)

Пример с редактором простой, но та же неприятность есть и с другими программами (в том числе системными типа ldconfig), которые не заменить так же просто, как редактор. Причина снова в mmap2. Вопрос вобщем один - как побороть эту проблему? А если конкретнее то:
1. Как запретить работу с большими файлами (mmap2 итп) локально для определенной точки монтирования и монтируемого девайса? А может произвольного каталога? Или произвольной программы?
2. Как запретить работу с большими файлами глобально для всей системы?
3. Какую сетевую файловую систему взять вместо самбы чтобы расшарить большое хранилище с одного сервера <10 клиентам?

Также интересуют ваши соображения и опыт по этому вопросу относительно любой невиндовой оси и, как вариант, альтернативные способы решения.
Спасибо за внимание :)

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "mmap против mmap2 на 32битной системе"  +/
Сообщение от svn (??) on 09-Июн-09, 12:05 
Разберись почему mmap не работает на smb, и исправь.

Работа с большими файлами давно регулирется макросами glibc.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "mmap против mmap2 на 32битной системе"  +/
Сообщение от mikra on 09-Июн-09, 14:28 
>Разберись почему mmap не работает на smb, и исправь.
>
>Работа с большими файлами давно регулирется макросами glibc.

Легко сказать разберись :)
Написал простейшую прогу, вызывающую mmap, а в strace снова вижу mmap2. Про макросы теперь понятно :) А что где надо объявить чтобы при компиляции проги не выполнялась такая замена?

Я вот для локализации проблемы хочу понять: если самба-сервер на 32битной операционке поддерживает обращения (mmap) из 64битной системы, но не поддерживает из 32битной (mmap2), то виноват самба-клиент или самба-сервер?
А конкретнее - mmap2 это отдельная реализация функции mmap и ее поддержки может не быть в самбе? Или все-таки mmap2 после вычисления вызывает mmap с 64битным off_t? Тогда это была бы проблема на стороне самба-клиента.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "mmap против mmap2 на 32битной системе"  +/
Сообщение от mikra on 09-Июн-09, 14:54 
Оказывается на 64битном клиенте при монтировании шары параметр directio не отключает поддержку mmap, а на 32битном отключает.
Зачем я directio прописал уже не помню, а при переносе fstab с 64 на 32 не обратил на него внимания.

Знатные грабли получились :) А ведь в мануале серым по черному...
Спасибо за участие :)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру