All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Bart Van Assche <bvanassche@acm.org>
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev
Subject: Re: [PATCH v3 4/6] scsi: Retry unaligned zoned writes
Date: Wed, 26 Jul 2023 19:23:21 +0800	[thread overview]
Message-ID: <202307261938.3I7MPEJs-lkp@intel.com> (raw)
In-Reply-To: <20230726005742.303865-5-bvanassche@acm.org>

Hi Bart,

kernel test robot noticed the following build errors:

[auto build test ERROR on axboe-block/for-next]
[also build test ERROR on mkp-scsi/for-next jejb-scsi/for-next linus/master v6.5-rc3 next-20230726]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Bart-Van-Assche/block-Introduce-the-flag-REQ_NO_WRITE_LOCK/20230726-085936
base:   https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git for-next
patch link:    https://lore.kernel.org/r/20230726005742.303865-5-bvanassche%40acm.org
patch subject: [PATCH v3 4/6] scsi: Retry unaligned zoned writes
config: s390-randconfig-r044-20230726 (https://download.01.org/0day-ci/archive/20230726/202307261938.3I7MPEJs-lkp@intel.com/config)
compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project.git 4a5ac14ee968ff0ad5d2cc1ffa0299048db4c88a)
reproduce: (https://download.01.org/0day-ci/archive/20230726/202307261938.3I7MPEJs-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202307261938.3I7MPEJs-lkp@intel.com/

All errors (new ones prefixed by >>):

   In file included from drivers/scsi/scsi_error.c:32:
   In file included from include/scsi/scsi.h:10:
   In file included from include/linux/scatterlist.h:9:
   In file included from arch/s390/include/asm/io.h:75:
   include/asm-generic/io.h:547:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     547 |         val = __raw_readb(PCI_IOBASE + addr);
         |                           ~~~~~~~~~~ ^
   include/asm-generic/io.h:560:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     560 |         val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr));
         |                                                         ~~~~~~~~~~ ^
   include/uapi/linux/byteorder/big_endian.h:37:59: note: expanded from macro '__le16_to_cpu'
      37 | #define __le16_to_cpu(x) __swab16((__force __u16)(__le16)(x))
         |                                                           ^
   include/uapi/linux/swab.h:102:54: note: expanded from macro '__swab16'
     102 | #define __swab16(x) (__u16)__builtin_bswap16((__u16)(x))
         |                                                      ^
   In file included from drivers/scsi/scsi_error.c:32:
   In file included from include/scsi/scsi.h:10:
   In file included from include/linux/scatterlist.h:9:
   In file included from arch/s390/include/asm/io.h:75:
   include/asm-generic/io.h:573:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     573 |         val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
         |                                                         ~~~~~~~~~~ ^
   include/uapi/linux/byteorder/big_endian.h:35:59: note: expanded from macro '__le32_to_cpu'
      35 | #define __le32_to_cpu(x) __swab32((__force __u32)(__le32)(x))
         |                                                           ^
   include/uapi/linux/swab.h:115:54: note: expanded from macro '__swab32'
     115 | #define __swab32(x) (__u32)__builtin_bswap32((__u32)(x))
         |                                                      ^
   In file included from drivers/scsi/scsi_error.c:32:
   In file included from include/scsi/scsi.h:10:
   In file included from include/linux/scatterlist.h:9:
   In file included from arch/s390/include/asm/io.h:75:
   include/asm-generic/io.h:584:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     584 |         __raw_writeb(value, PCI_IOBASE + addr);
         |                             ~~~~~~~~~~ ^
   include/asm-generic/io.h:594:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     594 |         __raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr);
         |                                                       ~~~~~~~~~~ ^
   include/asm-generic/io.h:604:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     604 |         __raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr);
         |                                                       ~~~~~~~~~~ ^
   include/asm-generic/io.h:692:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     692 |         readsb(PCI_IOBASE + addr, buffer, count);
         |                ~~~~~~~~~~ ^
   include/asm-generic/io.h:700:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     700 |         readsw(PCI_IOBASE + addr, buffer, count);
         |                ~~~~~~~~~~ ^
   include/asm-generic/io.h:708:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     708 |         readsl(PCI_IOBASE + addr, buffer, count);
         |                ~~~~~~~~~~ ^
   include/asm-generic/io.h:717:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     717 |         writesb(PCI_IOBASE + addr, buffer, count);
         |                 ~~~~~~~~~~ ^
   include/asm-generic/io.h:726:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     726 |         writesw(PCI_IOBASE + addr, buffer, count);
         |                 ~~~~~~~~~~ ^
   include/asm-generic/io.h:735:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     735 |         writesl(PCI_IOBASE + addr, buffer, count);
         |                 ~~~~~~~~~~ ^
>> drivers/scsi/scsi_error.c:709:7: error: call to undeclared function 'blk_queue_no_zone_write_lock'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
     709 |                     blk_queue_no_zone_write_lock(sdev->request_queue) &&
         |                     ^
   drivers/scsi/scsi_error.c:709:7: note: did you mean 'blk_req_zone_write_lock'?
   include/linux/blk-mq.h:1213:20: note: 'blk_req_zone_write_lock' declared here
    1213 | static inline void blk_req_zone_write_lock(struct request *rq)
         |                    ^
   12 warnings and 1 error generated.


vim +/blk_queue_no_zone_write_lock +709 drivers/scsi/scsi_error.c

   526	
   527	/**
   528	 * scsi_check_sense - Examine scsi cmd sense
   529	 * @scmd:	Cmd to have sense checked.
   530	 *
   531	 * Return value:
   532	 *	SUCCESS or FAILED or NEEDS_RETRY or ADD_TO_MLQUEUE
   533	 *
   534	 * Notes:
   535	 *	When a deferred error is detected the current command has
   536	 *	not been executed and needs retrying.
   537	 */
   538	enum scsi_disposition scsi_check_sense(struct scsi_cmnd *scmd)
   539	{
   540		struct request *req = scsi_cmd_to_rq(scmd);
   541		struct scsi_device *sdev = scmd->device;
   542		struct scsi_sense_hdr sshdr;
   543	
   544		if (! scsi_command_normalize_sense(scmd, &sshdr))
   545			return FAILED;	/* no valid sense data */
   546	
   547		scsi_report_sense(sdev, &sshdr);
   548	
   549		if (scsi_sense_is_deferred(&sshdr))
   550			return NEEDS_RETRY;
   551	
   552		if (sdev->handler && sdev->handler->check_sense) {
   553			enum scsi_disposition rc;
   554	
   555			rc = sdev->handler->check_sense(sdev, &sshdr);
   556			if (rc != SCSI_RETURN_NOT_HANDLED)
   557				return rc;
   558			/* handler does not care. Drop down to default handling */
   559		}
   560	
   561		if (scmd->cmnd[0] == TEST_UNIT_READY &&
   562		    scmd->submitter != SUBMITTED_BY_SCSI_ERROR_HANDLER)
   563			/*
   564			 * nasty: for mid-layer issued TURs, we need to return the
   565			 * actual sense data without any recovery attempt.  For eh
   566			 * issued ones, we need to try to recover and interpret
   567			 */
   568			return SUCCESS;
   569	
   570		/*
   571		 * Previous logic looked for FILEMARK, EOM or ILI which are
   572		 * mainly associated with tapes and returned SUCCESS.
   573		 */
   574		if (sshdr.response_code == 0x70) {
   575			/* fixed format */
   576			if (scmd->sense_buffer[2] & 0xe0)
   577				return SUCCESS;
   578		} else {
   579			/*
   580			 * descriptor format: look for "stream commands sense data
   581			 * descriptor" (see SSC-3). Assume single sense data
   582			 * descriptor. Ignore ILI from SBC-2 READ LONG and WRITE LONG.
   583			 */
   584			if ((sshdr.additional_length > 3) &&
   585			    (scmd->sense_buffer[8] == 0x4) &&
   586			    (scmd->sense_buffer[11] & 0xe0))
   587				return SUCCESS;
   588		}
   589	
   590		switch (sshdr.sense_key) {
   591		case NO_SENSE:
   592			return SUCCESS;
   593		case RECOVERED_ERROR:
   594			return /* soft_error */ SUCCESS;
   595	
   596		case ABORTED_COMMAND:
   597			if (sshdr.asc == 0x10) /* DIF */
   598				return SUCCESS;
   599	
   600			/*
   601			 * Check aborts due to command duration limit policy:
   602			 * ABORTED COMMAND additional sense code with the
   603			 * COMMAND TIMEOUT BEFORE PROCESSING or
   604			 * COMMAND TIMEOUT DURING PROCESSING or
   605			 * COMMAND TIMEOUT DURING PROCESSING DUE TO ERROR RECOVERY
   606			 * additional sense code qualifiers.
   607			 */
   608			if (sshdr.asc == 0x2e &&
   609			    sshdr.ascq >= 0x01 && sshdr.ascq <= 0x03) {
   610				set_scsi_ml_byte(scmd, SCSIML_STAT_DL_TIMEOUT);
   611				req->cmd_flags |= REQ_FAILFAST_DEV;
   612				req->rq_flags |= RQF_QUIET;
   613				return SUCCESS;
   614			}
   615	
   616			if (sshdr.asc == 0x44 && sdev->sdev_bflags & BLIST_RETRY_ITF)
   617				return ADD_TO_MLQUEUE;
   618			if (sshdr.asc == 0xc1 && sshdr.ascq == 0x01 &&
   619			    sdev->sdev_bflags & BLIST_RETRY_ASC_C1)
   620				return ADD_TO_MLQUEUE;
   621	
   622			return NEEDS_RETRY;
   623		case NOT_READY:
   624		case UNIT_ATTENTION:
   625			/*
   626			 * if we are expecting a cc/ua because of a bus reset that we
   627			 * performed, treat this just as a retry.  otherwise this is
   628			 * information that we should pass up to the upper-level driver
   629			 * so that we can deal with it there.
   630			 */
   631			if (scmd->device->expecting_cc_ua) {
   632				/*
   633				 * Because some device does not queue unit
   634				 * attentions correctly, we carefully check
   635				 * additional sense code and qualifier so as
   636				 * not to squash media change unit attention.
   637				 */
   638				if (sshdr.asc != 0x28 || sshdr.ascq != 0x00) {
   639					scmd->device->expecting_cc_ua = 0;
   640					return NEEDS_RETRY;
   641				}
   642			}
   643			/*
   644			 * we might also expect a cc/ua if another LUN on the target
   645			 * reported a UA with an ASC/ASCQ of 3F 0E -
   646			 * REPORTED LUNS DATA HAS CHANGED.
   647			 */
   648			if (scmd->device->sdev_target->expecting_lun_change &&
   649			    sshdr.asc == 0x3f && sshdr.ascq == 0x0e)
   650				return NEEDS_RETRY;
   651			/*
   652			 * if the device is in the process of becoming ready, we
   653			 * should retry.
   654			 */
   655			if ((sshdr.asc == 0x04) && (sshdr.ascq == 0x01))
   656				return NEEDS_RETRY;
   657			/*
   658			 * if the device is not started, we need to wake
   659			 * the error handler to start the motor
   660			 */
   661			if (scmd->device->allow_restart &&
   662			    (sshdr.asc == 0x04) && (sshdr.ascq == 0x02))
   663				return FAILED;
   664			/*
   665			 * Pass the UA upwards for a determination in the completion
   666			 * functions.
   667			 */
   668			return SUCCESS;
   669	
   670			/* these are not supported */
   671		case DATA_PROTECT:
   672			if (sshdr.asc == 0x27 && sshdr.ascq == 0x07) {
   673				/* Thin provisioning hard threshold reached */
   674				set_scsi_ml_byte(scmd, SCSIML_STAT_NOSPC);
   675				return SUCCESS;
   676			}
   677			fallthrough;
   678		case COPY_ABORTED:
   679		case VOLUME_OVERFLOW:
   680		case MISCOMPARE:
   681		case BLANK_CHECK:
   682			set_scsi_ml_byte(scmd, SCSIML_STAT_TGT_FAILURE);
   683			return SUCCESS;
   684	
   685		case MEDIUM_ERROR:
   686			if (sshdr.asc == 0x11 || /* UNRECOVERED READ ERR */
   687			    sshdr.asc == 0x13 || /* AMNF DATA FIELD */
   688			    sshdr.asc == 0x14) { /* RECORD NOT FOUND */
   689				set_scsi_ml_byte(scmd, SCSIML_STAT_MED_ERROR);
   690				return SUCCESS;
   691			}
   692			return NEEDS_RETRY;
   693	
   694		case HARDWARE_ERROR:
   695			if (scmd->device->retry_hwerror)
   696				return ADD_TO_MLQUEUE;
   697			else
   698				set_scsi_ml_byte(scmd, SCSIML_STAT_TGT_FAILURE);
   699			fallthrough;
   700	
   701		case ILLEGAL_REQUEST:
   702			/*
   703			 * Unaligned write command. This indicates that zoned writes
   704			 * have been received by the device in the wrong order. If zone
   705			 * write locking is disabled, retry after all pending commands
   706			 * have completed.
   707			 */
   708			if (sshdr.asc == 0x21 && sshdr.ascq == 0x04 &&
 > 709			    blk_queue_no_zone_write_lock(sdev->request_queue) &&
   710			    !scsi_noretry_cmd(scmd) && scsi_cmd_retry_allowed(scmd))
   711				return NEEDS_DELAYED_RETRY;
   712	
   713			if (sshdr.asc == 0x20 || /* Invalid command operation code */
   714			    sshdr.asc == 0x21 || /* Logical block address out of range */
   715			    sshdr.asc == 0x22 || /* Invalid function */
   716			    sshdr.asc == 0x24 || /* Invalid field in cdb */
   717			    sshdr.asc == 0x26 || /* Parameter value invalid */
   718			    sshdr.asc == 0x27) { /* Write protected */
   719				set_scsi_ml_byte(scmd, SCSIML_STAT_TGT_FAILURE);
   720			}
   721			return SUCCESS;
   722	
   723		case COMPLETED:
   724			if (sshdr.asc == 0x55 && sshdr.ascq == 0x0a) {
   725				set_scsi_ml_byte(scmd, SCSIML_STAT_DL_TIMEOUT);
   726				req->cmd_flags |= REQ_FAILFAST_DEV;
   727				req->rq_flags |= RQF_QUIET;
   728			}
   729			return SUCCESS;
   730	
   731		default:
   732			return SUCCESS;
   733		}
   734	}
   735	EXPORT_SYMBOL_GPL(scsi_check_sense);
   736	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

  parent reply	other threads:[~2023-07-26 11:24 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-26  0:57 [PATCH v3 0/6] Improve the performance of F2FS on zoned UFS Bart Van Assche
2023-07-26  0:57 ` [PATCH v3 1/6] block: Introduce the flag REQ_NO_WRITE_LOCK Bart Van Assche
2023-07-26  8:37   ` Damien Le Moal
2023-07-26 14:58     ` Bart Van Assche
2023-07-26  0:57 ` [PATCH v3 2/6] block/mq-deadline: Only use zone locking if necessary Bart Van Assche
2023-07-26  8:41   ` Damien Le Moal
2023-07-26 10:32   ` kernel test robot
2023-07-26  0:57 ` [PATCH v3 3/6] block/null_blk: Support disabling zone write locking Bart Van Assche
2023-07-26  8:43   ` Damien Le Moal
2023-07-26  0:57 ` [PATCH v3 4/6] scsi: Retry unaligned zoned writes Bart Van Assche
2023-07-26  8:47   ` Damien Le Moal
2023-07-26 15:02     ` Bart Van Assche
2023-07-26 23:46       ` Damien Le Moal
2023-07-26 11:23   ` kernel test robot [this message]
2023-07-26  0:57 ` [PATCH v3 5/6] scsi: ufs: Disable zone write locking Bart Van Assche
2023-07-26 12:04   ` kernel test robot
2023-07-26  0:57 ` [PATCH v3 6/6] fs/f2fs: " Bart Van Assche

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202307261938.3I7MPEJs-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=bvanassche@acm.org \
    --cc=llvm@lists.linux.dev \
    --cc=oe-kbuild-all@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.