I have a Sony Xperia Z5 Compact, and I was finding strange that the storage manager showed that the system was filling 20GB of the 32GB internal storage, so I went to dig a little further into this.
I found that the data partition is p42 in the internal rom using TWRP's fdisk, which correctly reports it as having 23GB (I haven't found how to get the TWRP terminal output here, though). However, using fdisk with the device fully booted up, via ADB shell, I get this:
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
not showing the full partition table...
However, when I try to read the partition, it gives no errors:
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)
Reading the entire storage also gives no errors:
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)
But when mounted, either booted or inside TWRP (I also mounted it manually) it shows only a 8GB size:
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
I'm using LineageOS, but in the stock Sony rom I had the same issue, only didn't have the tools to check this further.
Anyone had this issue before or can help me with this?
Edit: I just found about 'blockdev' command:
suzuran:/ # blockdev --getsize64 /dev/block/bootdevice/by-name/userdata
24763170816
which gives the correct size of the partition. What's happening with the 'mount' command? Could this be kernel related? If so, why does it happen in TWRP too?