android umount

Phoenix

Можно как-то сделать?
А то копирую бывает что-то на флешке. Вроде всё закончилось. А она мигает. Видать в какой-то буфер скопировалось. OS думает, что всё уже на устройстве, а реально ещё нет.
Пока есть вариант выключить, но он какой-то уже совсем ацкий.
Если в консоле написать

$umount /mnt/usb_storage
failed
$

Планшет нерутованый.

serega1604

sync(1) ?

Phoenix

да он там сам sync делает. Если какое-то время подождать - то синхронизируется.
Но при записи на флешку есть буфер какой-то, и бывает, что приложение думает что всё записало, а флешка ещё 3-4 секунды мигает.
$mount
/dev/block/vold/8:1 /mnt/usb_storage vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0

Если там мигает - всё понятно, но не на всех флешках есть такая мигалка.

serega1604

я нихуя не понял. если sync набрать, что происходит-то?

Phoenix

синхронизируется всё.
Но к тому времени, как это наберёшь, уже и так всё синхронизированно, потому что, насколько я понимаю, смонтировано с опцией dirsync.

serega1604

dirsync - это не о том
т.е. umount /mnt/что-то_там ты успеваешь набрать до того как все синхронизировалось, а sync - нет?

Phoenix

я бы программку написал, которая это делает.
Поясни, плз, разницу между sync и dirsync. Я в линуксах не очень.

serega1604

dirsync - опция монтирования. с ней несколько операций (создание/удаление/переименования) записываются на носитель мгновенно.
sync - опция монтирования, с которой все операции записываются на носитель сразу, а не ждут в буфере. насколько я помню, для vfat в линуксах она сломана, к тому же довольно вредна для флеш-носителей, ибо приводит к быстрому выходу их из строя.
sync(1) - команда, при выполнении которой все буферы скидываются на носители, полезно для вынимания флешек без отмонтирования, например.

Phoenix

ок. спасибо. Тогда sync вполне подойдёт.
Оставить комментарий
Имя или ник:
Комментарий: