Bug 17118 - неправильно отмонтируются сменные носители при init 6
Summary: неправильно отмонтируются сменные носители при init 6
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: service (show other bugs)
Version: unstable
Hardware: all Linux
: P2 normal
Assignee: placeholder@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-09-13 13:13 MSD by Yura Kalinichenko
Modified: 2012-01-27 01:31 MSK (History)
8 users (show)

See Also:


Attachments
sh/gawk decode_name() (325 bytes, application/octet-stream)
2008-10-29 00:38 MSK, Yura Kalinichenko
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Yura Kalinichenko 2008-09-13 13:13:55 MSD
Если не вынуть флешку - то при останове/перезагрузке системы наблюдаем многократную ругань типа: 

Cannot stat /media/USB\040DISK: no such file or directory

Понятно, что ничего страшного, но очень некрасиво.

PS. hal-mount-subfs-0.1.7-alt1 сбэкпорченный на 4.0
Comment 1 Michael A. Kangin 2008-09-20 21:59:56 MSD
Казалось бы, при чём тут hal-mount-subfs.
Пользователь радостно делает метку диска с пробелом, ядро радостно рисует в /proc/mounts вместо пробела \040, функция UnmountFilesystems из /etc/init.d/functions радостно не озабачивается заменять \040 взад на пробел, а umount совершенно радостно обламывается найти точку монтирования с \040 вместо пробела.
А виноват в этой радостной вакханалии, конечно же, hal-mount-subfs.

Хотите, оторву возможность делать пробелы в маунтпойнтах?
Comment 2 Mikhail Gusarov 2008-09-20 22:03:24 MSD
Нервы надо лечить.

[root@hsh40 /]# rpm -qf /etc/init.d/functions
service-0.5.14-alt1

Вот туда и перевешаем, раз уж майнтайнер не умеет пользоваться кнопкой "переназначить на другой компонент".
Comment 3 Yura Kalinichenko 2008-09-20 22:29:28 MSD
(In reply to comment #1)
> Казалось бы, при чём тут hal-mount-subfs.
> Пользователь радостно делает метку диска с пробелом, ядро радостно рисует в
> /proc/mounts вместо пробела \040, функция UnmountFilesystems из /etc/init.d/functions радостно не
> озабачивается заменять \040 взад на пробел, а umount совершенно радостно
> обламывается найти точку монтирования с \040 вместо пробела.
> А виноват в этой радостной вакханалии, конечно же, hal-mount-subfs.

Ну на чем увидел - на то и повесил, глубоко не копал. Метку сам не делал - такой флешку наградил производитель.

> 
> Хотите, оторву возможность делать пробелы в маунтпойнтах?
> 
Возможно, при конструировании маунтпоинта имеет смысл заменять пробелы на '_' ?
Comment 4 Mikhail Gusarov 2008-09-20 22:30:52 MSD
(In reply to comment #3)

> > Хотите, оторву возможность делать пробелы в маунтпойнтах?
> Возможно, при конструировании маунтпоинта имеет смысл заменять пробелы на
> '_' ?

Не надо городить workaround'ы.
Comment 5 Michael A. Kangin 2008-09-20 23:05:15 MSD
(In reply to comment #2)
> Нервы надо лечить.

Всенепременно.
 
> [root@hsh40 /]# rpm -qf /etc/init.d/functions
> service-0.5.14-alt1
> 
> Вот туда и перевешаем, раз уж майнтайнер не умеет пользоваться кнопкой
> "переназначить на другой компонент".

Спасибо, я не совсем был уверен, на что именно вешать. 

Comment 6 Dmitry V. Levin 2008-10-28 02:34:15 MSK
(In reply to comment #1)
> Казалось бы, при чём тут hal-mount-subfs.
> Пользователь радостно делает метку диска с пробелом, ядро радостно рисует в
> /proc/mounts вместо пробела \040, функция UnmountFilesystems из /etc/init.d/functions радостно не
> озабачивается заменять \040 взад на пробел, а umount совершенно радостно
> обламывается найти точку монтирования с \040 вместо пробела.

В glibc/misc/mntent_r.c есть специальная функция decode_name,
которая обучена заменять \040, \011, \012, \134 и \\ на соответствующие расквоченные символы.

Ищутся добровольцы, которые портируют её с C на awk.
Comment 7 Yura Kalinichenko 2008-10-28 13:06:12 MSK
(In reply to comment #6)

> В glibc/misc/mntent_r.c есть специальная функция decode_name,
> которая обучена заменять \040, \011, \012, \134 и \\ на соответствующие расквоченные
> символы.
> 
> Ищутся добровольцы, которые портируют её с C на awk.
> 

А чем плох `echo -en ` ?
Comment 8 Dmitry V. Levin 2008-10-28 13:14:22 MSK
(In reply to comment #7)
> (In reply to comment #6)
> 
> > В glibc/misc/mntent_r.c есть специальная функция decode_name,
> > которая обучена заменять \040, \011, \012, \134 и \\ на соответствующие расквоченные
> > символы.
> > 
> > Ищутся добровольцы, которые портируют её с C на awk.

Или на sed. :)

> А чем плох `echo -en ` ?

Тем, что он может заменить больше, чем это делает getmntent(3).
Comment 9 Yura Kalinichenko 2008-10-29 00:38:03 MSK
Created attachment 3024 [details]
sh/gawk decode_name()

Вот такой скрипт у меня работает. Из примера видно, что лишнего не меняет.
Comment 10 Evgenii Terechkov 2010-11-17 04:08:49 MSK
Как дела?
Comment 11 Michael A. Kangin 2010-11-17 18:47:28 MSK
(В ответ на комментарий №7)
> (In reply to comment #6)
> 
> > В glibc/misc/mntent_r.c есть специальная функция decode_name,
> > которая обучена заменять \040, \011, \012, \134 и \\ на соответствующие расквоченные
> > символы.
> > 
> > Ищутся добровольцы, которые портируют её с C на awk.
> > 
> 
> А чем плох `echo -en ` ?

Свежепопавшееся:
$ echo -e "/media/ALT\040Linux\0405.9.9\040Centaurus\040beta\040(" |xxd
0000000: 2f6d 6564 6961 2f41 4c54 204c 696e 7578  /media/ALT Linux
0000010: 052e 392e 3920 4365 6e74 6175 7275 7320  ..9.9 Centaurus
0000020: 6265 7461 2028 0a

printf такое декодирует нормально вроде. Есть ли подводные камушки?
Comment 12 Dmitry V. Levin 2012-01-26 02:16:11 MSK
(In reply to comment #8)
> (In reply to comment #7)
> > (In reply to comment #6)
> > 
> > > В glibc/misc/mntent_r.c есть специальная функция decode_name,
> > > которая обучена заменять \040, \011, \012, \134 и \\ на соответствующие расквоченные
> > > символы.
> > > 
> > > Ищутся добровольцы, которые портируют её с C на awk.
> 
> Или на sed. :)

sed -e 's/\\040/ /g' -e 's/\\011/\t/g' -e 's/\\012/\n/g' -e 's/\\134/\\/g' -e 's/\\\\/\\/g'
Comment 13 Repository Robot 2012-01-27 01:31:09 MSK
service-0.5.22-alt1 -> sisyphus:

* Thu Jan 26 2012 Dmitry V. Levin <ldv@altlinux> 0.5.22-alt1
- start-stop-daemon: implemented support of /proc/%d/exe pointing
  to names with " (deleted)" prefix.
- minilogd: changed to create /dev/log socket world writable
  (closes: #12564).
- init.d/functions (UnmountFilesystems): implemented mountpoints
  decoding to match getmntent(3) behaviour (closes: #17118).
- init.d/functions (start_daemon):
  + added --background option (closes: #26529);
  + added --check option.
- service.8: imported from Fedora (closes: #22166).