Desmontar o dispositivo HTC demora para sempre

5

Não tenho certeza se devo postar isso em Android SE porque não acho que isso esteja diretamente relacionado ao sistema operacional Android. No meu sistema eu manualmente mount e umount meu dispositivo HTC com essas opções em /etc/fstab :

UUID=3465-3762 /mnt/htc auto gid=100,umask=002,noauto,user,rw,exec 0 0

Isso funciona bem ao modificar pequenas quantidades de dados no cartão SD, mas sempre que eu copiar, e. um par de álbuns de música codificados em FLAC de outro dispositivo - a desmontagem do cartão SD parece demorar uma eternidade:

$ time umount /mnt/htc/
real    1m17.195s
user    0m0.000s
sys     0m0.237s

Este tempo é proporcional à quantidade de dados modificados? Será que demoraria tanto para desmontá-lo assim mesmo?

    
por Community 14.01.2012 / 17:42

1 resposta

6

Isso tem a ver com o kernel fazendo muito buffer, incluindo gravação em buffer no seu dispositivo.

Se você emitir:

cp large_file /mnt/htc/

cp retornará assim que tiver terminado write os dados, mas (para dispositivos / conexões razoavelmente "lentos") bem antes que os dados tenham sido gravados. (A menos que cp ou a ferramenta que você usa em si emite fsync ou chamadas semelhantes para esperar que os dados reais atinjam a unidade - alguns gerenciadores de arquivos gráficos fazem isso, algumas ferramentas têm opções que você pode usar para controlar se não.)

unmount libera os buffers de gravação antes de "desconectar" o dispositivo para que você não perca dados. Pode levar muito tempo se o kernel armazenar muitos dados e as gravações reais forem lentas.

Tente executar algo como iostat 2 (parte do sysstat ) em um terminal enquanto você faz a cópia e o unmount , você verá write I / O até o ponto unmount retornar.

    
por 14.01.2012 / 18:08