question: protected void suggestExportMasksForPlacement ( StorageSystem storage , BlockStorageDevice device , List < Initiator > initiators , ExportMaskPlacementDescriptor descriptor ) { descriptor . setPlacementHint ( ExportMaskPlacementDescriptor . PlacementHint . VOLUMES_TO_SINGLE_MASK ) ; Map < URI , ExportMask > matchingMasks = readExistingExportMasks ( storage , device , initiators ) ; descriptor . setMasks ( matchingMasks ) ; for ( URI exportMaskURI : matchingMasks . keySet ( ) ) { descriptor . placeVolumes ( exportMaskURI , descriptor . getVolumesToPlace ( ) ) ; } }
target:  Searches the storage device for any ExportMask (e.g., MaskingView) that contains any of the initiators. For any ExportMasks that it finds, it will map the set of Volumes that are appropriate for the ExportMask. Placement of the volume to an ExportMask will be array dependent. It is up to the client to determine if one or more of the ExportMasks are preferable for the actual volume placement. The default implementation will map all the volumes into each matched ExportMask, but give a PlacementHint that only a single ExportMask should take all the volumes. This puts the onus on the caller of suggestExportMasksForPlacement to look at the hint to determine if one or more ExportMasks are appropriate for the Volumes.