Author: mav
Date: Thu Apr 25 15:51:00 2019
New Revision: 346679
URL: https://svnweb.freebsd.org/changeset/base/346679

Log:
  MFC r339009 (by allanjude):
  Avoid panic when adjusting priority of a read in the face of an IO error
  
  PR:             231516
  Reported by:    sbruno
  Approved by:    re (rgrimes)
  Obtained from:  ZFS-on-Linux
  X-MFC-with:     334844
  Sponsored by:   Klara Systems
  
  MFV/ZoL:        Fix zio->io_priority failed (7 < 6) assert
  
  commit c26cf0966d131b722c32f8ccecfe5791a789d975
  Author: Tony Hutter <[email protected]>
  Date:   Tue May 29 18:13:48 2018 -0700
  
    Fix zio->io_priority failed (7 < 6) assert
  
    This fixes an assert in vdev_queue_change_io_priority():
  
      VERIFY3(zio->io_priority < ZIO_PRIORITY_NUM_QUEUEABLE) failed (7 < 6)
      PANIC at vdev_queue.c:832:vdev_queue_change_io_priority()
  
    Reviewed-by: Tom Caputi <[email protected]>
    Reviewed-by: George Melikov <[email protected]>
    Reviewed-by: Brian Behlendorf <[email protected]>
    Signed-off-by: Tony Hutter <[email protected]>

Modified:
  stable/11/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c
==============================================================================
--- stable/11/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c       
Thu Apr 25 15:48:23 2019        (r346678)
+++ stable/11/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c       
Thu Apr 25 15:51:00 2019        (r346679)
@@ -982,6 +982,15 @@ vdev_queue_change_io_priority(zio_t *zio, zio_priority
        vdev_queue_t *vq = &zio->io_vd->vdev_queue;
        avl_tree_t *tree;
 
+       /*
+        * ZIO_PRIORITY_NOW is used by the vdev cache code and the aggregate zio
+        * code to issue IOs without adding them to the vdev queue. In this
+        * case, the zio is already going to be issued as quickly as possible
+        * and so it doesn't need any reprioitization to help.
+        */
+       if (zio->io_priority == ZIO_PRIORITY_NOW)
+               return;
+
        ASSERT3U(zio->io_priority, <, ZIO_PRIORITY_NUM_QUEUEABLE);
        ASSERT3U(priority, <, ZIO_PRIORITY_NUM_QUEUEABLE);
 
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to