Checar a existência de outros tipos de disco
Atualmente, get_disks_info procura apenas por discos SCSI. Não sei se todos os IDE são reconhecidos da mesma forma, se discos de raid apareceriam, nem como funcionaria com um SSD. Além disso, se a máquina não tiver discos, o datasid reporta o usb flash drive usado para boot. Creio que tudo isso pode ser feito com a libudev.
A função usa uma lista e passa por referência, porque retornar uma lista causa uma cópia. Minha ideia era passar a mesma lista por referência para cada função que verifica outro tipo de disco.
libudev carece de boas fontes, então aqui vão alguns links que usei:
Tutorial que ensina a listar usbs com o libudev: http://www.signal11.us/oss/udev/
Comando que mostra properties and attributes de devices: udevadm info --query all --path /sys/block/sdb/sdb1/ --attribute-walk
reference manual: https://www.kernel.org/pub/linux/utils/kernel/hotplug/libudev/libudev-udev-device.html#udev-device-get-parent
Código no github: https://github.com/systemd/systemd/blob/master/src/libudev/libudev-device.c
Some other sort of reference manual: https://www.freedesktop.org/software/systemd/man/udev_enumerate_scan_devices.html
List of all functions provided by systemd: https://www.freedesktop.org/software/systemd/man/
doc que diz que o linux guarda o tamanho em blocos de 512 bytes: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/include/linux/types.h?id=v4.4-rc6#n121
Artigo que descreve a organização do sysfs: http://ftp.cvut.cz/kernel/people/mochel/doc/papers/ols-2005/mochel.pdf
doc que diz que o major de um scsi pode ser outras coisas além de 8: https://www.kernel.org/doc/Documentation/devices.txt
We may have to deal with children eventually: http://stackoverflow.com/questions/25361042/how-to-list-usb-mass-storage-devices-programatically-using-libudev-in-linux