Bug 17118 - неправильно отмонтируются сменные носители при init 6
: неправильно отмонтируются сменные носители при init 6
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/service)
: unstable
: all Linux
: P2 normal
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2008-09-13 13:13 by
Modified: 2012-01-27 01:31 (History)


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


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2008-09-13 13:13:55
Если не вынуть флешку - то при останове/перезагрузке системы наблюдаем
многократную ругань типа: 

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

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

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

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

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

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

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

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

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

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

Всенепременно.

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

Спасибо, я не совсем был уверен, на что именно вешать. 
------- Comment #6 From 2008-10-28 02:34:15 -------
(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 From 2008-10-28 13:06:12 -------
(In reply to comment #6)

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

А чем плох `echo -en ` ?
------- Comment #8 From 2008-10-28 13:14:22 -------
(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 From 2008-10-29 00:38:03 -------
Created an attachment (id=3024) [details]
sh/gawk decode_name()

Вот такой скрипт у меня работает. Из примера видно, что лишнего не меняет.
------- Comment #10 From 2010-11-17 04:08:49 -------
Как дела?
------- Comment #11 From 2010-11-17 18:47:28 -------
(В ответ на комментарий №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 From 2012-01-26 02:16:11 -------
(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 From 2012-01-27 01:31:09 -------
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).