Раздел данных с 23 ГБ показывает только 8 ГБ при подключении

У меня Sony Xperia Z5 Compact, и мне показалось странным, что диспетчер памяти показал, что система заполняет 20 ГБ внутренней памяти объемом 32 ГБ, поэтому я углубился в это.

Я обнаружил, что раздел данных - это p42 во внутреннем ПЗУ, используя fdisk TWRP, который правильно сообщает, что он имеет 23 ГБ (однако я не нашел, как получить здесь вывод терминала TWRP). Однако, используя fdisk с полностью загруженным устройством через оболочку ADB, я получаю следующее:

suzuran:/ # fdisk -l /dev/block/mmcblk0                                        

Disk /dev/block/mmcblk0: 31.2 GB, 31272730624 bytes  
255 heads, 63 sectors/track, 3802 cylinders  
Units = cylinders of 16065 * 512 = 8225280 bytes  

               Device Boot      Start         End      Blocks  Id System  
/dev/block/mmcblk0p1               1        3803    30539775+ ee EFI GPT  

не показывает полную таблицу разделов...

Однако, когда я пытаюсь прочитать раздел, он не выдает ошибок:

suzuran:/ # dd if=/dev/block/mmcblk0p42 of=/dev/null                           
48365568+0 records in  
48365568+0 records out  
24763170816 bytes transferred in 246.927 secs (100285391 bytes/sec)  

Чтение всего хранилища также не дает ошибок:

suzuran:/ # dd if=/dev/block/mmcblk0 of=/dev/null                              
61079552+0 records in
61079552+0 records out
31272730624 bytes transferred in 365.211 secs (85629213 bytes/sec)

Но при монтировании, либо при загрузке, либо внутри TWRP (я его тоже монтировал вручную) показывает только размер 8GB:

suzuran:/ # df
Filesystem                    1K-blocks     Used Available Use% Mounted on
[ other skipped mounts ]
/dev/block/mmcblk0p43           5215496  1188900   4026596  23% /system
/dev/block/mmcblk0p42           8641912  6071544   2570368  71% /data
/dev/block/mmcblk0p41            197472      188    197284   1% /cache
/dev/block/mmcblk0p3              81872    57808     24064  71% /firmware
/dev/block/mmcblk0p31             28144      164     27980   1% /persist
/dev/block/mmcblk0p39             14327      160     14167   2% /idd
/dev/block/loop0                  92656      980     91676   2% /su

Я использую LineageOS, но в стандартной версии Sony у меня была та же проблема, только у меня не было инструментов, чтобы проверить это дальше.

У кого-нибудь была эта проблема раньше или может помочь мне с этим?


Изменить: я только что нашел команду «blockdev»:

suzuran:/ # blockdev --getsize64 /dev/block/bootdevice/by-name/userdata        
24763170816

который дает правильный размер раздела. Что происходит с командой mount? Может ли это быть связано с ядром? Если да, то почему это происходит и в TWRP?

Ответы (1)

Немного «поиграв» с устройством, мне удалось отследить проблему до данных раздела ext4. Загрузился в TWRP, терминал, сделал резервную копию файлов в разделе, размонтировал, затем:

mke2fs -t ext4 /dev/block/bootdevice/by-name/userdata

И вуаля! Доступно 23 ГБ для хранения данных. Восстановил резервные копии файлов в новую файловую систему ext4, и теперь все работает, хотя я чувствую, что это немного медленнее. Тем не менее, это решаемо.