No meu primeiro artigo sobre e-sata, solid e udisks eu escrevi como “hackear” o udisks para informar ao Solid que um disco rígido conectado a uma determinada porta sata é na verdade um disco removível. O udisks-1.0.3 suporta isso sem que tenhamos que aplicar um patch. Nós ainda precisamos adicionar uma regra no udev para indicar qual porta sata deve ser considerada “não interna do sistema“. A regra do udev é ligeiramente diferente da que eu passei no post anterior:
|
Arquivo /etc/udev/rules.d/99-esata.rules
|
DEVPATH=="/devices/pci0000:00/0000:00:1f.2/host4/*", ENV{UDISKS_SYSTEM_INTERNAL}="0"
|
Mude DEVPATH para o caminho da sua porta e-sata. Você pode encontrá-la usando o comando:
|
Código
|
evolucao ~ # find /sys/devices/ -name sdb
/sys/devices/pci0000:00/0000:00:1f.2/host4/target4:0:0/4:0:0:0/block/sdb
|
Então recarrege as regras do udev depois de criar/editar o arquivo acima: udevadm control –reload-rules
Agora vem a má notícia: o udisks armazena vários atributos do disco, dentre eles o ”
interno do sistema” e “
removível“. Removível significa mídia removível (como discos óticos, leitores de cartões, etc). Interno do sistema significa que o dispositivo é “fixado” ao computador e não pode ser removido sem desligá-lo, como os discos sata. E-sata está entre as duas definições, com certeza ele não é “interno do sistema” e tecnicamente ele não é mídia removível também.
Nós poderíamos usar o comando “detach” (desconectar) do udisks ao invés do comando eject, mas parece que o udisks se recusa a usá-lo com dispositivos que tenham o atributo “removable” configurado para falso, o que é o caso de discos e-sata. De qualquer forma, algumas vezes nós só queremos desmontar a partição e não desligar o disco rígido, neste caso o comando “detach” não é o mais adequado pois você precisa desligar o disco e ligá-lo novamente depois de usá-lo.
Do jeito que as coisas estão eu acho que: 1. O Solid deveria parar de usar o comando eject para partições e-sata (/dev/sdb1, /dev/sdb2, etc) e usar o comando “unmount” (desmontar). 2. Para um disco e-sata (/dev/sdb) devemos usar o comando “detach” do udisks, mas isso só irá funcionar quando 3. alguém corrigir o udisks para permitir executar o comando “detach” em discos marcados como “não internos do sistema” e não somente para discos marcados como removíveis (lembre-se: “removable” no udisks significa mídia removível).
Nós podemos fazer o ítem No 1 já. O No 2 exige uma nova entrada no plasmoid de notificação de dispositivos para o disco inteiro (/dev/sdb) para permitir chamar o comando “detach”. O No 3 é um bug “upstream” (do udisks e não nosso) :-/
Quando eu tiver um tempo eu vou tentar resolver isso, mas por enquanto estou ocupado e com um “dead line” (prazo marcado para terminar um trabalho), então se alguém quiser assumir essa tarefa sinta-se à vontade para fazê-lo.