[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