Optimize loop device creation

There are total three optimizations.

* PartitionParent now reads /sys/class/block/{name} to find its parent,
  rather than listing /sys and calling stat.
* BlockdevName now reads /sys/dev/block/{major}.{minor} to find its
  device, rather than listing /sys and calling stat.
* BlockDeviceQueueDepth caches results, because there are very few
  parent devices as of now.

On cuttlefish, 88 calls to BlockDeviceQueueDepth take about 200~400ms.
After this patch, it becomes less than 100ms.

Bug: 401463117
Test: run cuttlefish and see "OnStart done"
Change-Id: I60c7addbd82ed83acb801f225ae77b5a41c37edf
1 file changed