[РЕШЕНО] Смена inode директории после монтирования

Модератор: Модераторы разделов

IMB
Сообщения: 2567
ОС: Debian

[РЕШЕНО] Смена inode директории после монтирования

Сообщение IMB »

Доброго дня!
Программа для кодирования видео на основе GStreamer при старте создает директорию для монтирования SD-карты

Код: Выделить всё

# ls -li /tmp/
27991 srwxr-xrwx    1 root     root             0 Jan  1 01:22 camera // управляющий сокет программы
27995 drwxr-xr-x    2 root     root            40 Jan  1 01:22 sd // директория для монтирования SD-карты

После получения команды программа монтирует SD-карту:

Код: Выделить всё

static const char *SD_CARD = "/dev/mmcblk0p1";    /**< SD-карта */
static const char *fs_name[FS_UNKNOWN] = {"vfat", "ext3"};

gboolean mount_sd(const gchar *dir)
{
    unsigned long flag =  MS_NOSUID | MS_NOEXEC | MS_NODEV;

    if (NULL == dir)
        return FALSE;

    if (geteuid())
        return FALSE;

    if (!mount(SD_CARD, dir, fs_name[FS_VFAT], flag, ""))
        return TRUE;

    return !mount(SD_CARD, dir, fs_name[FS_EXT3], flag, "");
}

И используя элемент GStreamer-а multifilesink пишет файлы:

Код: Выделить всё

# ls -l /tmp/sd
-rwxr-xr-x    1 root     root        583078 Jan  1  1980 stream0_000000.avi
-rwxr-xr-x    1 root     root       1033840 Jan  1  1980 stream0_000001.avi
-rwxr-xr-x    1 root     root        688128 Jan  1 01:19 stream0_000002.avi

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

Код: Выделить всё

# ls -li /tmp
27991 srwxr-xrwx    1 root     root             0 Jan  1 01:22 camera
1 drwxr-xr-x    2 root     root         16384 Jan  1 01:22 sd

Вопрос - почему inode директории монтирования изменился после монтирования SD-карты?
Спасибо.
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: [РЕШЕНО] Смена inode директории после монтирования

Сообщение SLEDopit »

IMB писал(а):
25.06.2013 15:41
Вопрос - почему inode директории монтирования изменился после монтирования SD-карты?
Потому что до монтирования директория принадлежит локальной файловой системе, а после - является верхней директорией в иерархии файловой системы sd карты. отсюда и разные inod'ы.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21499
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: [РЕШЕНО] Смена inode директории после монтирования

Сообщение Bizdelnick »

IMB писал(а):
25.06.2013 15:41
почему inode директории монтирования изменился после монтирования SD-карты?

Потому что это уже другой каталог (корень ФС карточки).
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: [РЕШЕНО] Смена inode директории после монтирования

Сообщение IMB »

Теперь бы ещё понять как её размонтировать - Failed umount /tmp/sd directory, errno 16 (Device or resource busy)
И это даже после завершения потока кодирования, удаётся размонтировать только через секунды 3 после завершения программы.

Решено - перед размонтированием выполняю chdir("/").
Спасибо сказали: