• Tejun Heo's avatar
    libata: clear dev->ering in smarter way · 99cf610a
    Tejun Heo authored
    dev->ering used to be cleared together with the rest of ata_device in
    ata_dev_init() which is called whenever a probing event occurs.
    dev->ering is about to be used to track probing failures so it needs
    to remain persistent over multiple porbing events.  This patch
    achieves this by doing the following.
    
    * Instead of CLEAR_OFFSET, define CLEAR_BEGIN and CLEAR_END and only
      clear between BEGIN and END.  ering is moved after END.  The split
      of persistent area is to allow hotter items remain at the head.
    
    * ering is explicitly cleared on ata_dev_disable() and when device
      attach succeeds.  So, ering is persistent throug a device's life
      time (unless explicitly cleared of course) and also through periods
      inbetween disablement of an attached device and successful detection
      of the next one.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
    99cf610a
libata-core.c 170 KB