anchor.diff:      controllers.each do |controller|
         if device = Dir.glob("/sys/bus/pci/devices/#{controller[:pci_slot]}/host*/target*:2:0/*/scsi_generic/sg*").first
           controller[:device] = "/dev/#{File.basename(device)}"
  +      end
  +    end
  +
  +    disks.each do |disk|
  +      controller = devices[:controllers][disk[:controller]]
  +      id = disk.delete(:device_id)
  +
  +      if device = Dir.glob("/sys/bus/pci/devices/#{controller[:pci_slot]}/host*/target0:0:#{id}/0:0:#{id}:0/block/sd*").first
  +        disk[:device] = "/dev/#{File.basename(device)}"
  +      else
  +        disk[:smart_device] = "megaraid,#{id}"
         end
       end
     end
  
positive.code:         end
        elsif disk && line =~ /^(\S.*\S)\s*:\s+(\S.*)$/
          case Regexp.last_match(1)
          when "Device Id" then disk[:smart_device] = "megaraid,#{Regexp.last_match(2)}"
          when "PD Type" then disk[:interface] = Regexp.last_match(2)
          when "Raw Size" then disk[:size] = memory_to_disk_size(Regexp.last_match(2).sub(/\s*\[.*\]$/, ""))
          when "Inquiry Data" then disk[:vendor], disk[:model], disk[:serial_number] = Regexp.last_match(2).split
  
negative.code:   def find_megaraid_disks(devices)
      controllers = []
      arrays = []
      disks = []
  
      controller = nil
      array = nil
  