Eu acho que blockdev --setro
funciona de forma semelhante a chmod
: afeta apenas as futuras aberturas do objeto.
Mas posso oferecer uma solução alternativa para seu problema de detecção:
- O valor
/proc/$PID/cwd
é alterado para/
após a desmontagem lenta. - Os caminhos dos arquivos abertos do processo mostrados em
/proc/$PID/fd
são movidos para/
, por exemplo,/mnt/tmp/output
se torna/output
.
Portanto, você pode primeiro filtrar todos os processos com cmd /
. Pode haver falsos positivos entre eles, mas isso é muito rápido. A próxima etapa (não necessariamente completa, mas provavelmente mais rápida) é verificar /proc/$PID/fd
de todos esses processos para arquivos que não existem nos caminhos mostrados.
A verificação completa, mas provavelmente não tão rápida, é executar stat
para todos os arquivos em /proc/$PID/fd
. Mostra o dispositivo original. Então você pode verificar esse valor antes do umount para facilitar as coisas.