int iscsi_change_queue_depth(struct scsi_device *sdev, int depth, int reason)
 {
-       if (reason != SCSI_QDEPTH_DEFAULT)
+       switch (reason) {
+       case SCSI_QDEPTH_DEFAULT:
+               scsi_adjust_queue_depth(sdev, scsi_get_tag_type(sdev), depth);
+               break;
+       case SCSI_QDEPTH_QFULL:
+               scsi_track_queue_full(sdev, depth);
+               break;
+       case SCSI_QDEPTH_RAMP_UP:
+               scsi_adjust_queue_depth(sdev, scsi_get_tag_type(sdev), depth);
+               break;
+       default:
                return -EOPNOTSUPP;
-
-       scsi_adjust_queue_depth(sdev, scsi_get_tag_type(sdev), depth);
+       }
        return sdev->queue_depth;
 }
 EXPORT_SYMBOL_GPL(iscsi_change_queue_depth);