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/fdsão movidos para/, por exemplo,/mnt/tmp/outputse 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.