anchor.diff:      disk = nil
   
       IO.popen(%w(ssacli controller all show config detail)).each do |line|
  -      if line =~ /^Smart Array (\S+) /
  +      if line =~ /^Smart (?:Array|HBA) (\S+) /
           controller = {
             :id => devices[:controllers].count,
             :model => Regexp.last_match(1),
  
positive.code:         controller[:arrays] << array[:id]
  
          disk = nil
        elsif controller && line =~ /^      physicaldrive (\S+) /
          disks << Regexp.last_match(1)
        elsif array && line =~ /^      physicaldrive (\S+)$/
          disk = {
            :id => devices[:disks].count,
            :controller => controller[:id],
            :arrays => [array[:id]],
            :location => Regexp.last_match(1),
            :smart_device => "cciss,#{disks.find_index(Regexp.last_match(1))}"
          }
  
          devices[:disks] << disk
  
negative.code:     end
  
      controllers.each do |controller|
        slot = controller[:slot]
  
        IO.popen(%W(ssacli controller slot=#{slot} pd all show status)).each do |line|
          if line =~ /^   physicaldrive (\S+) /
            disks << Regexp.last_match(1)
          end
        end
  
        if device = Dir.glob("/sys/bus/pci/devices/#{controller[:pci_slot]}/cciss*").first
          controller[:device] = File.basename(device).sub(/^cciss(\d+)$/, "/dev/cciss/c\\1d0")
        elsif device = Dir.glob("/sys/bus/pci/devices/#{controller[:pci_slot]}/host*/target*:3:0/*:3:0:0/scsi_generic/sg*").first
  