• Tejun Heo's avatar
    libata: remiplement ata_hpa_resize() · 05027adc
    Tejun Heo authored
    This patch reimplement ata_hpa_resize() such that...
    
    * All HPA related decisions are made inside ata_hpa_resize() proper.
      ata_hpa_resize() returns 0 if configuration can proceed, -errno if
      device needs to be reset and reconfigured.
    
    * All errors are handled properly.  If HPA unlocking isn't requested,
      HPA handling is disabled automatically to avoid unnecessary device
      detection failure.
    
    * Messages are trimmed.  HPA detection message is printed only during
      initial configuration.  HPA unlocked message is printed only during
      initial configuration or unlocking results in different size.
    
    * Instead of using sectors returned in TF of SET_MAX, re-read IDENTIFY
      data as that's the value the device is going to use.
    
    * It's called early during ata_dev_configure() as IDENTIFY data might
      change after resizing.
    Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
    Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
    05027adc
libata-core.c 177 KB