Uma partição f2fs no meu telefone Android foi corrompida recentemente. Ainda montará bem; no entanto, perdi completamente o acesso a um diretório ( /data/media/0
), que agora aparece como vazio. No entanto, o espaço em disco não mudou em nada.
Ao executar fsck.f2fs
do terminal, ele se recusa a verificar um sistema de arquivos montado. Não consigo desmontar a partição de dados ou remontá-la como somente leitura. Bem. Após a reinicialização no modo de recuperação, onde a partição não está montada, recebo isso ao executar fsck.f2fs
:
~ # fsck.f2fs /dev/block/mmcblk0p39
Info: sector size = 512
Info: total sectors = 21425920 (in 512bytes)
Assertion failed!
[fsck_chk_dentry_blk: 563] le32_to_cpu(de_blk->dentry[i].hash_code) == hash_code
Por isso, ele ainda se recusa a me ajudar e agora falha com um erro obscuro ... stat
ing o diretório me dá:
root@victara:/ # stat /data/media/0
File: '/data/media/0'
Size: 4096 Blocks: 24 IO Blocks: 4096 directory
Device: 10307h/66311d Inode: 4 Links: 35
Access: (770/drwxrwx---) Uid: (1023/media_rw) Gid: (1023/media_rw)
Access: 2016-04-04 16:55:56.800148001
Modify: 2016-04-05 02:47:44.314999998
Change: 2016-04-05 02:47:44.314999998
O inode (número?) parecia ser bem baixo ... Então eu verifiquei outros diretórios:
root@victara:/ # stat /data/media/
File: '/data/media/'
Size: 4096 Blocks: 16 IO Block: 4096 directory
Device: 10307h/66311d Inode: 4078 Links: 4
Access: (0770/drwxrwx---) Uid: ( 1023/media_rw) Gid: ( 1023/media_rw)
__bionic_open_tzdata: couldn't find any tzdata when looking for localtime!
__bionic_open_tzdata: couldn't find any tzdata when looking for GMT!
__bionic_open_tzdata: couldn't find any tzdata when looking for posixrules!
Access: 2016-04-04 14:48:25.000000000
Modify: 1970-01-01 02:27:21.000000000
Change: 1970-02-07 02:30:36.000000000
root@victara:/ # stat /data/media/obb
File: '/data/media/obb'
Size: 4096 Blocks: 16 IO Blocks: 4096 directory
Device: 10307h/66311d Inode: 4080 Links: 3
Access: (775/drwxrwxr-x) Uid: (1023/media_rw) Gid: (1023/media_rw)
Access: 1970-01-01 03:27:21.519999999
Modify: 2016-03-17 22:38:30.505748550
Change: 2016-04-04 17:42:31.569999988
Parece que o diretório pai ( /data/media
) tem inode 4078, outro filho do pai ( /data/media/obb
) tem inode 4080. Então, logicamente, /data/media/0
deve ter inode 4079, mas stat
me diz tem inode 4.
Portanto, parece que os metadados do sistema de arquivos foram corrompidos. Sem a ajuda de fsck.f2fs
e debugfs
(que infelizmente não existe para f2fs), e em um ambiente Linux minimalista (recuperação Android), existe uma maneira de corrigir o número de inode ou algo mais que eu possa fazer para recuperar o acesso aos meus dados?
Curiosamente, o diretório ainda parece estar ocupando espaço em disco e é considerado "não vazio", portanto não posso removê-lo.
root@victara:/data/media # rm -rf 0
rm: 0: Directory not empty
1|root@victara:/data/media # ls
0 obb
root@victara:/data/media # ls -al 0
total 0
IMPORTANTE: não posso mais testar soluções, pois preciso do telefone e do espaço de armazenamento e reformatei a partição.