• Dan Williams's avatar
    block: fix blk_queue_end_tag() · f2b20d43
    Dan Williams authored
    Commit 5e081591 "block: warn if tag is greater than real_max_depth"
    cleaned up blk_queue_end_tag() to warn when the tag is truly invalid
    (greater than real_max_depth).  However, it changed behavior in the tag <
    max_depth case to not end the request.  Leading to triggering of
    BUG_ON(blk_queued_rq(rq)) in the request completion path:
    
      http://marc.info/?l=linux-kernel&m=132204370518629&w=2
    
    
    
    In order to allow blk_queue_resize_tags() to shrink the tag space
    blk_queue_end_tag() must always complete tags with a value less than
    real_max_depth regardless of the current max_depth.  The comment about
    "handling the shrink case" seems to be what prompted changes in this
    space, so remove it and BUG on all invalid tags (made even simpler by
    Matthew's suggestion to use an unsigned compare).
    Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    Cc: Tao Ma <boyu.mt@taobao.com>
    Cc: Matthew Wilcox <matthew@wil.cx>
    Reported-by: default avatarMeelis Roos <mroos@ut.ee>
    Reported-by: Ed Nadolski <edmund.nadol...
    f2b20d43
blk-tag.c 9.77 KB