LINUX.ORG.RU

Ни udiskie ни devmon не размонитируют извлеченный CDROM


0

1

В общем, попробовал выпилить hal из моей системы и столкнулся с тем, что без него работать невозможно. В частности, автомонтировщики udiskie и devmon не размонтируют диски ни при их извлечении, ни по команде eject, ни даже если вставить другой диск. Eject вообще не работает, диск не выдвигается.

★★★★★

Последнее исправление: Nxx (всего исправлений: 2)
Ответ на: комментарий от Nxx

>теперь eject стал ругаться - говорит, только с hal'ом работает

Хм, openSUSE? Не третьекеды ли случайно?

А в Генте всего-то надо было бы пересобрать пакеты с USE="-hal -udev".

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

У вас всё же сейчас диски монтируются автоматом или нет? Вы написали что: «Так что теперь сидюк вообще не размонтируешь без рута». Я понял что вы добились автомонтирования cd приводов.

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

А, понял, почему ругается. Это мелочь.

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

> У вас всё же сейчас диски монтируются автоматом или нет? Вы написали что: «Так что теперь сидюк вообще не размонтируешь без рута». Я понял что вы добились автомонтирования cd приводов.

У меня сейчас свистопляска: если использовать devmon, чтобы примонтировать надо вставить диск/флешку, и после этого создать рутом какой-нибудь (все равно, каой) файл в папке /media. Чтобы отмонтировать надо жать на eject в контекстном меню, вынимание диска просто так не срабатывает, и диск остается примонтированным навечно (по нему даже можно ходить и смотреть файлы, которые сохранились в кеше).

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

У меня все нормально монтируется и размонтируется, если хотите выложу бинарный пакет с udisks из моего дистрибутива. Почему у вас не монтируется не ясно, но скорее всего виной всё же ваша чехарда с разными моунтерами.

По поводу опций по-умолчанию, udisks все же это программа на C и вот строки, описывающие опции для iso9660 / udf:

/* ---------------------- iso9660 -------------------- */

static const char *iso9660_defaults[] = { "uid=", "gid=", "iocharset=utf8", "mode=0400", "dmode=0500", NULL };
static const char *iso9660_allow[] = { "norock", "nojoliet", "iocharset=", "mode=", "dmode=", NULL };
static const char *iso9660_allow_uid_self[] = { "uid=", NULL };
static const char *iso9660_allow_gid_self[] = { "gid=", NULL };

/* ---------------------- udf -------------------- */

static const char *udf_defaults[] = { "uid=", "gid=", "iocharset=utf8", "umask=0077", NULL };
static const char *udf_allow[] = { "iocharset=", "umask=", NULL };
static const char *udf_allow_uid_self[] = { "uid=", NULL };
static const char *udf_allow_gid_self[] = { "gid=", NULL };

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

Вроде, разобрался. Добавил секундную паузу, теперь монтирует автоматом. А вот при вынимании так и не размонтирует.

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

Хм, куда. Покажите конфигурационный файл, который редактировали, ради интереса. Вы все используете devmon?

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

Хм, куда. Покажите конфигурационный файл, который редактировали, ради интереса.

В исходник...

Вот один из кусков:

@@ -119,8 +119,9 @@
  
 void FstabBackend::slotDirty(const QString &path)
 {
-   if (path==MTAB)
+   if (path=="/media")
    {
+       sleep(1);
        handleMtabChange();
    }
    else if (path==FSTAB)
@@ -136,8 +137,11 @@
      || mount->mountType() == "sysfs"
      || mount->mountType() == "fdescfs"
      || mount->mountType() == "kernfs"
+     || mount->mountType() == "devtmpfs"
+     || mount->mountType() == "rootfs"
      || mount->mountType() == "usbfs"
      || mount->mountType().contains( "proc" )
+     || mount->mountType().contains( "gvfs" )
      || mount->mountType() == "unknown"
      || mount->mountType() == "none"
      || mount->mountType() == "sunrpc"
@@ -145,6 +149,7 @@
      || mount->mountedFrom() == "tmpfs"
      || mount->mountedFrom().find("shm") != -1
      || mount->mountPoint() == "/dev/swap"
+     || mount->mountPoint() == "/dev"
      || mount->mountPoint() == "/dev/pts"
      || mount->mountPoint().find("/proc") == 0
      || mount->mountPoint().find("/sys") == 0
@@ -187,10 +192,12 @@
           nothing has changed, do not stat the mount point. Avoids
           hang if network shares are stalling */
        QString mtabEntry = dev + "*" + mp + "*" + fs;
+#if 0
        if(m_mtabEntries.contains(mtabEntry)) {
                new_mtabIds += m_mtabEntries[mtabEntry];
            continue;
        }
+#endif
  
        QString id = generateId(dev, mp);
        new_mtabIds+=id;
@@ -203,7 +210,6 @@
            m_mediaList.changeMediumState(id, true, false,
                                          mime, icon, label);
        }
-#if 0
        else if ( !m_mtabIds.contains(id) )
        {
            QString name = generateName(dev, fs);
@@ -219,9 +225,8 @@
            m->setIconName(icon);
            m->setLabel(label);
  
-           m_mediaList.addMedium(m, notificationAllowed);
+           m_mediaList.addMedium(m, allowNotification);
        }
-#endif
    }
  
    QStringList::iterator it2 = m_mtabIds.begin();
@@ -247,12 +252,10 @@
            m_mediaList.changeMediumState(*it2, false, false,
                                          mime, icon, label);
        }
-#if 0
        else if ( !new_mtabIds.contains(*it2) )
        {
            m_mediaList.removeMedium(*it2, allowNotification);
        }
-#endif
    }
  
    m_mtabIds = new_mtabIds;

А сам патч здоровенный вышел...

Вы все используете devmon?

На данный момент, да. Udiskie мне не понравился тем, что свою нотификацию норовил высунуть при монтировании.

Nxx ★★★★★
() автор топика

а autofs уже не кошерно для CD-Rom использовать? или у тебя имя устройства cdrom меняется по 100500 раз на день?

Pinkbyte ★★★★★
()

ТС ковыряет труп под именем KDE3 и ещё на что-то жалуется.

Будь мужиком, обновись до четвёртых. Ну или скрипты напиши.

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