On 13.06.19 15:16, Vladimir Sementsov-Ogievskiy wrote: > 13.06.2019 1:09, Max Reitz wrote: >> bdrv_is_encrypted() should not only check the BDS's backing child, but >> any filtered child: If a filter's child is encrypted, the filter node >> itself naturally is encrypted, too. Furthermore, we need to recurse >> down the chain. >> >> (CAF means child access function.) > > Hmm, so, if only one node in the backing chain is encrypted, all overlays, > filters or not are considered encrypted too? Even if all the data is in top > node and is not encrypted? > > Checked that the function is used only for reporting through > bdrv_query_image_info, which is called from bdrv_block_device_info() (which > loops through backings), and from collect_image_info_list(), which loops through > backings if @chain=true. > > And collect_image_info_list() is used only in img_info(), @chain is a mirrored > --backing-chain parameter.. > > So, isn't it more correct to return exactly bs->encrypted in this function? It will > give more correct and informative results for queries for the whole chain. Hm. Maybe? :-) I personally feel more comfortable to report more devices as being reported than less. The description of @encrypted in @BlockDeviceInfo is vague enough that we can just “make it more precise”. You’re right, it does sound more useful. Max