From nobody Fri May 3 00:16:03 2024 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4VVrtq4cg1z5KJwp; Fri, 3 May 2024 00:16:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4VVrtq1z6Yz4Qqh; Fri, 3 May 2024 00:16:03 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1714695363; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=UZCh9mFw/05x9aR/T37V8E0VgatAx+napBLA8e8YOz0=; b=iy6vVn1KEe9aQGo9YmdcVgdbgzZ1eLMmXi4jPa1Uym6OWQ8N+fO8lSUFHG9XWx8HZ0d3l0 g551rdHDtcLedHhLatfBfA2/AqBwp2e4dtj8lE1FVo3kU3i4nH7Eb8snC1KCbgGeLhOAmH vBqDVEZMEjxtOtmlXBQWQUSpaog3/GbciRtwdStDjZKuvFwhy8PoW8c++7matpBbr2FmfR CkNMLFwKpSVMtx9Umzlh1leThCMd3JwZB4tuVqdTwMPbrBnhdiRNjHMrhSgnsISqB6Ds3a eUHKb4Po0wIiDNkXjHOvBC/uE9MPT4rH9BXoq/gHwhUcVvR4mpsPsS9z3iC7Uw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1714695363; a=rsa-sha256; cv=none; b=dExOX7uauWVbLSNx19hNZUxzhx1pHf6z92pFlnQW5Yf2nr9y4miCEtUT5kZQqfuYUD2hbl yJC9T2SjeyXm0w2v/nToWcyfqUPeqyFJgImBryucjLut/BGzFyhhmP35xpjI8+qlW5S9MB 1Ev+cfPxgNTF7/I9arhEbFAwsojypTjs6M2SYEJbmbeZ1cZUFRgJ8daGO4EuUqafs0X9Tr LRe1JCUwL7HP2fDXDdVfk8j2urmex2Sf1/1wsuUZERs3Q1Ac9SR5+BFz4d712jsDJ34ri/ Npv+9UFGZWL3m/l48kytvrCqv3BjuQ6NXraZ75rIvfddOVRPxc6LQ7Eh0elHNQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1714695363; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=UZCh9mFw/05x9aR/T37V8E0VgatAx+napBLA8e8YOz0=; b=duJApS5onOxAM0D0434/+VbaM/onV3BmYN6QtK240ipj4ae+GTd4hgWn3NK4HCiZXQ2gnU 5EIXIRYt7hKa4VvEN/VH/wwEFjhFOTyvUUaS9DxXI705xMtJp25WqfelKndzkrXhl91fQW MFIW/LmogbKEnG8tKJNuLr3gudNAhCQNpM2BSkGhbxaRB0r3pxIaszCC8H9PGEXhxPPMAg +P3PaIFFScL6fOlSUy0p27LiDgLtJv4cU/9QqijRU0O2G9IMtJnbKYdrZF0UKQIPuioqD1 NSmnT/YkaKi4RMkJ7CefiQqJ37IrTbKvYpgP8bR5CuOzs6JnJrKKnklET0XAHQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4VVrtq1b4BzNcw; Fri, 3 May 2024 00:16:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 4430G3xZ079855; Fri, 3 May 2024 00:16:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 4430G3mt079852; Fri, 3 May 2024 00:16:03 GMT (envelope-from git) Date: Fri, 3 May 2024 00:16:03 GMT Message-Id: <202405030016.4430G3mt079852@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: ccaaee460717 - main - ctl_backend_ramdisk: Prepare for NVMe support List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ccaaee4607170e167114ace059ce6408a2c465d1 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=ccaaee4607170e167114ace059ce6408a2c465d1 commit ccaaee4607170e167114ace059ce6408a2c465d1 Author: John Baldwin AuthorDate: 2024-05-02 23:32:58 +0000 Commit: John Baldwin CommitDate: 2024-05-02 23:38:30 +0000 ctl_backend_ramdisk: Prepare for NVMe support - Use wrapper routines for access to shared fields between SCSI and NVMe I/O requests. - Use protocol-agnostic wrapper routines for I/O completion status. Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D44849 --- sys/cam/ctl/ctl_backend_ramdisk.c | 53 +++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 30 deletions(-) diff --git a/sys/cam/ctl/ctl_backend_ramdisk.c b/sys/cam/ctl/ctl_backend_ramdisk.c index ecb0caae89b1..1fe239b47293 100644 --- a/sys/cam/ctl/ctl_backend_ramdisk.c +++ b/sys/cam/ctl/ctl_backend_ramdisk.c @@ -365,11 +365,10 @@ ctl_backend_ramdisk_cmp(union ctl_io *io) struct ctl_be_lun *cbe_lun = CTL_BACKEND_LUN(io); struct ctl_be_ramdisk_lun *be_lun = (struct ctl_be_ramdisk_lun *)cbe_lun; uint8_t *page; - uint8_t info[8]; uint64_t lba; u_int lbaoff, lbas, res, off; - lbas = io->scsiio.kern_data_len / cbe_lun->blocksize; + lbas = ctl_kern_data_len(io) / cbe_lun->blocksize; lba = ARGS(io)->lba + PRIV(io)->len - lbas; off = 0; for (; lbas > 0; lbas--, lba++) { @@ -377,7 +376,7 @@ ctl_backend_ramdisk_cmp(union ctl_io *io) lba >> cbe_lun->pblockexp, GP_READ); lbaoff = lba & ~(UINT_MAX << cbe_lun->pblockexp); page += lbaoff * cbe_lun->blocksize; - res = cmp(io->scsiio.kern_data_ptr + off, page, + res = cmp(ctl_kern_data_ptr(io) + off, page, cbe_lun->blocksize); off += res; if (res < cbe_lun->blocksize) @@ -385,14 +384,8 @@ ctl_backend_ramdisk_cmp(union ctl_io *io) } free(io->scsiio.kern_data_ptr, M_RAMDISK); if (lbas > 0) { - off += io->scsiio.kern_rel_offset - io->scsiio.kern_data_len; - scsi_u64to8b(off, info); - ctl_set_sense(&io->scsiio, /*current_error*/ 1, - /*sense_key*/ SSD_KEY_MISCOMPARE, - /*asc*/ 0x1D, /*ascq*/ 0x00, - /*type*/ SSD_ELEM_INFO, - /*size*/ sizeof(info), /*data*/ &info, - /*type*/ SSD_ELEM_NONE); + off += ctl_kern_rel_offset(io) - ctl_kern_data_len(io); + ctl_io_set_compare_failure(io, off); return (1); } return (0); @@ -405,9 +398,9 @@ ctl_backend_ramdisk_move_done(union ctl_io *io, bool samethr) (struct ctl_be_ramdisk_lun *)CTL_BACKEND_LUN(io); CTL_DEBUG_PRINT(("ctl_backend_ramdisk_move_done\n")); - if (io->scsiio.kern_sg_entries > 0) - free(io->scsiio.kern_data_ptr, M_RAMDISK); - io->scsiio.kern_rel_offset += io->scsiio.kern_data_len; + if (ctl_kern_sg_entries(io) > 0) + free(ctl_kern_data_ptr(io), M_RAMDISK); + ctl_add_kern_rel_offset(io, ctl_kern_data_len(io)); if ((io->io_hdr.flags & CTL_FLAG_ABORT) == 0 && (io->io_hdr.status & CTL_STATUS_MASK) == CTL_STATUS_NONE) { if (ARGS(io)->flags & CTL_LLF_COMPARE) { @@ -424,7 +417,7 @@ ctl_backend_ramdisk_move_done(union ctl_io *io, bool samethr) &be_lun->io_task); return (0); } - ctl_set_success(&io->scsiio); + ctl_io_set_success(io); } done: ctl_data_submit_done(io); @@ -441,10 +434,10 @@ ctl_backend_ramdisk_compare(union ctl_io *io) lbas = MIN(lbas, 131072 / cbe_lun->blocksize); len = lbas * cbe_lun->blocksize; - io->scsiio.be_move_done = ctl_backend_ramdisk_move_done; - io->scsiio.kern_data_ptr = malloc(len, M_RAMDISK, M_WAITOK); - io->scsiio.kern_data_len = len; - io->scsiio.kern_sg_entries = 0; + ctl_set_be_move_done(io, ctl_backend_ramdisk_move_done); + ctl_set_kern_data_ptr(io, malloc(len, M_RAMDISK, M_WAITOK)); + ctl_set_kern_data_len(io, len); + ctl_set_kern_sg_entries(io, 0); io->io_hdr.flags |= CTL_FLAG_ALLOCATED; PRIV(io)->len += lbas; ctl_datamove(io); @@ -469,17 +462,17 @@ ctl_backend_ramdisk_rw(union ctl_io *io) off = lbaoff * cbe_lun->blocksize; op = (ARGS(io)->flags & CTL_LLF_WRITE) ? GP_WRITE : GP_READ; if (sgs > 1) { - io->scsiio.kern_data_ptr = malloc(sizeof(struct ctl_sg_entry) * - sgs, M_RAMDISK, M_WAITOK); - sg_entries = (struct ctl_sg_entry *)io->scsiio.kern_data_ptr; + sg_entries = malloc(sizeof(struct ctl_sg_entry) * sgs, + M_RAMDISK, M_WAITOK); + ctl_set_kern_data_ptr(io, sg_entries); len = lbas * cbe_lun->blocksize; for (i = 0; i < sgs; i++) { page = ctl_backend_ramdisk_getpage(be_lun, (lba >> cbe_lun->pblockexp) + i, op); if (page == P_UNMAPPED || page == P_ANCHORED) { - free(io->scsiio.kern_data_ptr, M_RAMDISK); + free(sg_entries, M_RAMDISK); nospc: - ctl_set_space_alloc_fail(&io->scsiio); + ctl_io_set_space_alloc_fail(io); ctl_data_submit_done(io); return; } @@ -494,17 +487,17 @@ nospc: if (page == P_UNMAPPED || page == P_ANCHORED) goto nospc; sgs = 0; - io->scsiio.kern_data_ptr = page + off; + ctl_set_kern_data_ptr(io, page + off); } - io->scsiio.be_move_done = ctl_backend_ramdisk_move_done; - io->scsiio.kern_data_len = lbas * cbe_lun->blocksize; - io->scsiio.kern_sg_entries = sgs; + ctl_set_be_move_done(io, ctl_backend_ramdisk_move_done); + ctl_set_kern_data_len(io, lbas * cbe_lun->blocksize); + ctl_set_kern_sg_entries(io, sgs); io->io_hdr.flags |= CTL_FLAG_ALLOCATED; PRIV(io)->len += lbas; if ((ARGS(io)->flags & CTL_LLF_READ) && ARGS(io)->len <= PRIV(io)->len) { - ctl_set_success(&io->scsiio); + ctl_io_set_success(io); if (cbe_lun->serseq >= CTL_LUN_SERSEQ_SOFT) ctl_serseq_done(io); } @@ -517,7 +510,7 @@ ctl_backend_ramdisk_submit(union ctl_io *io) struct ctl_lba_len_flags *lbalen = ARGS(io); if (lbalen->flags & CTL_LLF_VERIFY) { - ctl_set_success(&io->scsiio); + ctl_io_set_success(io); ctl_data_submit_done(io); return (CTL_RETVAL_COMPLETE); }