LINUX.ORG.RU

fuse. Редирект на устройство.

 


0

2

Приветствую!

Есть у меня девайс удаленный с линуксом на борту, там в директории /dev есть некое специальное устройство, в которое можно писать. Я накидал fuse клинета и сделал маунт на рабочую машину. Всю фс девайса я вижу, могу писать файлы, создавать, удалять дирекотрии, делать файлам chmod...но вот в устройство писать у меня не получается по причине ...

$ echo  "test" > /home/wrk/fuse/dev/mycooldevice
An error occurred while redirecting file '/home/wrk/fuse/dev/mycooldevice'
open: Permission denied

* /home/wrk/fuse/ - локальная директория, куда замаплена ФС девайса.

** локально на устройстве эта команда вполне работает

Ах да. Удаленный сервер, который запущен на устройстве, работает под root. И вот как я вижу удаленный файл.

$ ls -la dev/mycooldevice
crw------- 1 root root 245, 0 янв  1  1970 dev/mycooldevice

Проблема в том, что вызов open в клиенте fuse даже не пытается выполниться.

Я как-то, видимо плохо искал, не могу найти сведения о том, что ему еще не хватает. Может сталкивался кто с таким? Какой-то еще метод нужен для возможности записи в нерегулярные файлы?

Вот, кстати, весь кусок лога fuse клиента при исполнении echo.

unique: 179, opcode: LOOKUP (1), nodeid: 1, insize: 44, pid: 16707
LOOKUP /dev
getattr /dev
   NODEID: 2
   unique: 179, success, outsize: 144
unique: 180, opcode: LOOKUP (1), nodeid: 2, insize: 49, pid: 16707
LOOKUP /dev/mycooldevice
getattr /dev/mycooldevice
   NODEID: 3
   unique: 180, success, outsize: 144

то есть все, что он делает, это проверяет атрибуты файла ... :-/

а, да. FUSE_USE_VERSION=25

Не очень понимаю устройство fuse, однако есть несколько гипотез.

По идее файлы устройств достаточно специальные и грубо говоря к какому устройству они относятся решает не ФС на которой они расположены, а само ядро на основе major;minor номеров устройства.

Поэтому если локально fuse представляет нечто ак файл устройства - локальное ядро и пытается его обработать по заданным номерам. А у него таких номеров просто нет.

Если дело именно в этом, то по идее если ваш fuse-сервер будет представлять устройство как обычный файл, в который можно читать/писать - то по крайней мере отркыть его удастся. ioctl работать конечно не будет, а чтение/запись - вполне вероятно.

GPFault ★★
()
Ответ на: комментарий от GPFault

Если дело именно в этом, то по идее если ваш fuse-сервер будет представлять устройство как обычный файл

Идея, кстати. Пойду попробую.

seryoga
() автор топика
Ответ на: комментарий от GPFault

да, способ работает (выставить файлу атрибуты обычного и запретить для его truncate). Спасибо за наводку. Для начала вполне хватит :)

seryoga
() автор топика
Ответ на: комментарий от seryoga

Какой EACCES? cuse позволяет тебе создать файл устройства и роутить сисколлы в твой fuse-процесс.

Изначально у тебя /home/wrk/fuse/dev/mycooldevice каким образом создавался?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.