[devel] Re: хм... umount и hal
Sergey Vlasov
=?iso-8859-1?q?vsu_=CE=C1_altlinux=2Eru?=
Вт Авг 30 17:19:33 MSD 2005
On Tue, Aug 30, 2005 at 04:30:30PM +0400, Anton Farygin wrote:
> On Tue, 30 Aug 2005 15:15:22 +0400, Alexey I. Froloff wrote:
>
> > Наблюл сегодня такую картину:
> >
> > 1. Монтируем флэшку без -o sync 2. Копируем
> > туда файл большого размера 3. Сразу
> > отмонтируем
> >
> > В п.3 umount/pumount ждут, пока все буфера
> > сбросятся на устройство, но HAL рассылает
> > сообщения про property modified (volume.is_mounted и
> > volume.mount_point) не дожидаясь пока буфера
> > собсно запишутся... Таким образом вся
> > индикация записалось/не записалось
> > вместе с гипотетической командой
> > "извлечь усттройство" идёт лесом...
> >
> > Бага?
>
> Только вот где ?
>
> Собственно hal получает сигнал от ядра.
Как именно - через netlink?
void kill_block_super(struct super_block *sb)
{
struct block_device *bdev = sb->s_bdev;
bdev_uevent(bdev, KOBJ_UMOUNT);
generic_shutdown_super(sb);
sync_blockdev(bdev);
close_bdev_excl(bdev);
}
При этом generic_shutdown_super() вызывает функции ФС, обрабатывающие
umount, затем sync_blockdev() дописывает блоки, о которых эти функции явно
не позаботились.
С одной стороны, это вроде бы правильно, поскольку файловая система уже
недоступна, да и в /proc/mounts её не видно. (Кстати, отсутствие записи в
/proc/mounts ни о чём не говорит, поскольку этих /proc/mounts потенциально
столько же, сколько и процессов в системе - у каждого процесса может быть
отдельный namespace, и смонтированные в таком namespace файловые системы
за его пределами не видны.) С другой стороны, событие KOBJ_UMOUNT
относится не к файловой системе, а к самому устройству - тогда логичнее
было бы выдавать его, когда устройство уже свободно.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20050830/62594877/attachment-0001.bin>
Подробная информация о списке рассылки Devel