LINUX.ORG.RU

можно и не отмонтировать, достаточно сделать sync )
хотя все равно чревато тем, что если открыты какие-то файлы, то программа которая их открыла может упасть

Sylvia ★★★★★
()

1) могут испортится данные из-за свойств файловой системы (не сбросила буфер например)

2) если выдернуть «в процессе», то может и с накопителем что-то случится.

usrnkl
()

<troll>Чтобы пользователи FreeBSD не увидели намертво зависшую систему.</troll> По теме: чтобы убедится, что данные окончательно записались, есть такой баг, когда ГУИ показывают, что файлы скопированы, а на самом деле оказываются «побитыми».

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

Ну так это, я так понимаю, когда файло сбросилось в буфер, но ещё не записалось. Только это не баг ни разу.

Obey-Kun ★★★★★
() автор топика
Ответ на: комментарий от Sylvia

>...если открыты какие-то файлы, то программа которая их открыла может упасть
...
и прищемить чего-нибудь :)

Attila ★★
()

man sync. можно и не отмонтировать

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

> и прищемить чего-нибудь :)

сильви нечего прищемлять, не надо тут!

в общем, во всём виноват буфер записи? а можно монтировать так, чтоб он не использовался?

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

а можно монтировать так, чтоб он не использовался?

да

madgnu ★★★★★
()
Ответ на: комментарий от Obey-Kun

> в общем, во всём виноват буфер записи? а можно монтировать так, чтоб он не использовался?
монтировать с sync

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

> есть такой баг, когда ГУИ показывают, что файлы скопированы, а на самом деле оказываются «побитыми».

это не баг, это фича

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

> если выдернуть «в процессе», то может и с накопителем что-то случится.

Флешкам пофигу, внешние винты сами вроде головки паркуют даже при отрубленном питании.

Nao ★★★★★
()
Ответ на: комментарий от Obey-Kun

> можно монтировать так, чтоб он не использовался?

Вроде можно. Но программа, которая будет горько плакать и вешаться потеряв файл что читала, останется. И что-бы увидеть новый носитель его придётся монтировать, а старый при этом всё равно отмонтировать. Или собирать коллекцию монтированных одна поверх другой файловых систем. С горько плачущими приложениями.

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

>Или собирать коллекцию монтированных одна поверх другой файловых систем

Никогда такого не было, но вот странных каталогов в /media/ иногда набиралось

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

> Нубовопрос - как заставить хал это делать (или чем там кде пользуется)

Не знаю, но знаю что производительность работы с этой фс сильно упадёт.

Nao ★★★★★
()
Ответ на: комментарий от Obey-Kun

>в общем, во всём виноват буфер записи? а можно монтировать так, чтоб он не использовался?

можно man mount, но резко возрастает вероятность тормозов

xtron
()
Ответ на: комментарий от Obey-Kun

>в общем, во всём виноват буфер записи?

Нет. Ты никогда не получал сообщений типа «устройство занято» при попытке отмонтировать диск?

сильви нечего прищемлять, не надо тут!


Ты никогда с девушками в зажимболл не играл?

Attila ★★
()

Разрешаю не отмонтировать

Hokum ☆☆☆☆
()
Ответ на: комментарий от Gary
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
import dbus
import dbus.service
if getattr(dbus, 'version', (0,0,0)) >= (0,41,0):
    import dbus.glib
import gobject
import sys
import os
import syslog
 
class DeviceManager:
    def __init__(self):
        self.bus = dbus.SystemBus()
        self.bus.add_signal_receiver(self.device_added,
                        'DeviceAdded',
                        'org.freedesktop.Hal.Manager',
                        'org.freedesktop.Hal',
                        '/org/freedesktop/Hal/Manager')
 
        self.bus.add_signal_receiver(self.device_removed,
                        'DeviceRemoved',
                        'org.freedesktop.Hal.Manager',
                        'org.freedesktop.Hal',
                        '/org/freedesktop/Hal/Manager')
        self.devices = {}
        syslog.syslog('Started.')
        
    def udi_to_device(self, udi):
        return self.bus.get_object("org.freedesktop.Hal", udi)
 
    def device_added(self, udi):
        device = self.udi_to_device(udi)
        properties = device.GetAllProperties(dbus_interface='org.freedesktop.Hal.Device')
        if properties.get('info.category') == u'volume':
            label, dev = properties.get('volume.label'), properties.get('block.device')
            syslog.syslog('Mounting %s on /media/%s.' %(dev, label))
            self.devices[udi] = dev
            os.system('pmount -u 002 %s /media/%s || pmount -u 002 %s' %(dev, label, dev))
 
    def device_removed(self, udi):
        if self.devices.has_key(udi):
                dev = self.devices[udi]
                syslog.syslog('Unmounting %s.' %(dev))
                os.system('pumount %s || sudo /bin/umount -l %s' %(dev, dev))
                self.devices.__delitem__(dev)
 
if __name__ == '__main__':
    syslog.openlog('hal-automount')
    m = DeviceManager()
    
    mainloop = gobject.MainLoop()
    try:
        mainloop.run()
    except KeyboardInterrupt:
        mainloop.quit()
        syslog.syslog('Exiting...')
        syslog.closelog()
        sys.exit(0)

kmeaw ★★★
()

Ну, если бы модифицировать close() так, чтобы после основного действия он делал fsync(), то тогда можно если на носителе все файлы закрыты, то носитель можно выдергивать без отмонтирования.

no-dashi ★★★★★
()

От блин программеры, а индикатор на флехе нафига? Не на каждой, правда, это да...

ToyShot
()

Чтоб кеш сбросился. При отсутствии кеширования отмонтировать не обязательно.

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

>достаточно сделать sync )

Мне старшеклассники рассказывали что на нынешних ядрах sync бесполезен и ничего не делает, синхронизируется кеш только по усмотрению ведра

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

>Ты никогда с девушками в зажимболл не играл?

Боюсь что муж не поймет

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от Obey-Kun

man половозрелая_женщина, ей прищемлять ровно в 2 раза больше, чем тебе.

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

Подсветка синтаксиса на ЛОРе?

#!/usr/bin/env python 
# -*- encoding: utf-8 -*- 
import dbus 
import dbus.service 
if getattr(dbus, 'version', (0,0,0)) >= (0,41,0): 
    import dbus.glib 
import gobject 
import sys 
import os 

Ура сабжу!

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

>>Почему надо отмонтировать накопители перед извлечением?

Только на линупсе, детка.

На FreeBSD уже можно не делать.



Молчал бы Изен лучше. Udev в линуксе уже давно есть, а демон описанный в статье как раз и занимается монтированием/отмонтированием фс.

А вот тебе еда (из этой же статьи):

Три ложечки дёгтя

1. Необходимость в использовании имени учётной записи пользователя (username), к которому привязывается точка монтирования;

2. Фиксированное название раздела носителя (da0s1) не позволит смонтировать в автоматическом режиме другие носители;

3. Фиксированный тип файловой системы (msdosfs) на монтируемом носителе не позволяет правилом attach смонтировать носитель, с тем же названием раздела, но с отличной от FAT ФС.

Всех этих трёх недостатков udev лишён.

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

> Мне старшеклассники рассказывали что на нынешних ядрах sync бесполезен и ничего не делает, синхронизируется кеш только по усмотрению ведра

Они солгали.

А в макоси да, бесполезная заглушка.

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