From nobody Sat May 30 17:44:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1778641245; cv=none; d=zohomail.com; s=zohoarc; b=JW1Oj9KAE5O0lg5MjvcAYevzxsuZabqRRtM2I8rD/7EIEUjQ15sQz3o9m15fT38n44Z9w8iHL93KDrMUs7FJQogDJ7ylBRhtyFcog9Nt5tdcvyRBh74v0q0VZSWjjzzAig2M1Ldc1r8oOKDw1o41YyKu5s8hJl/3Fzy9HMP2VKc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778641245; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=BsKfxtfhvVTo9azkTYFUxJ+Ku720aZxPEKW9ZSZUolo=; b=VFTLIDrTxB603XBKxy2/pCnS47gAt/cRI7oG/mB4zkYDZQTMZhfBbOLKlPJqjrvXtJ/2jUBoTwXaqod8EiF2f9W00hdPfOrXS4nOjXFdOgOvWf5bcij6G4puqVqv5MMCoCmT8+5vOkJweCuCB3pXmMFRTnrAAmZqM0ScF+s/B1g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1778641245558705.1388950957179; Tue, 12 May 2026 20:00:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wMzpf-0002bC-BO; Tue, 12 May 2026 23:00:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wMzpT-0002W9-RT for qemu-devel@nongnu.org; Tue, 12 May 2026 23:00:12 -0400 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wMzpO-0000uT-Bg for qemu-devel@nongnu.org; Tue, 12 May 2026 23:00:10 -0400 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-4891c00e7aeso52776275e9.2 for ; Tue, 12 May 2026 20:00:01 -0700 (PDT) Received: from fedora ([197.211.52.69]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48e8f447166sm30308275e9.30.2026.05.12.19.59.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 May 2026 19:59:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778641200; x=1779246000; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=BsKfxtfhvVTo9azkTYFUxJ+Ku720aZxPEKW9ZSZUolo=; b=AKxriJWidGwIMYDSdgpxwT5ai4lX8zUSFn7pPdnn97VQ16xniokAKT+DwGJFLRu8Bv nsMJCKWP/6+xMdLAO076FpNtQI4WMtJ2yXVGSHBnjmhZ8kwSluPh2gtForLeNtxUnb2R wFZxNZo7tNUjFwFbk+5Xd7PPpYUQCGjttwPUMfvTPQunnM4F3jtt8b/iF6DaDnmUd52P GWMEA4D4ct4OK8dZEx1qK3kqnzpmNU6oCsmIfFLR5OjksiDFoMab9q1c86sS+foLy3LQ oLoEAmxvdLX5OWtIS2bhCknsZOF0q5/vGI4FpyUJ9tfd7CNYOnU6Zk6Ve+QtobW0VPB5 mQyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778641200; x=1779246000; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=BsKfxtfhvVTo9azkTYFUxJ+Ku720aZxPEKW9ZSZUolo=; b=XDqGUXFk73CLoGQA/af8w3t3CTXi4MffE/RtK1lqDlvzkTTldSwpOrP1SEoy8b6Mai /u/YY6OnAyfCY/LVKtX0bKdgLdHzxWAOBUMhIfuGOIV5MdJ54JFbt9fm/siaaF1ZEfrq z9T+uXA0UX0z5fpZ63vkmC+cVatB5WMUfAAoX/TNYnUIxc38aPFCSD5GRWll+7ZEIo9U z8+G7s8dvcTM1mbear7/iXGgOmbHY2ZMkbOBNIQsof976hsb5880/hwccU65Dyx8+vvZ G/boSDd1V8+Z3iCSMSar5wqVByRkNtFsat6ApqOyKoAF1e/suLsrSaykOnhMXWX8ERGS SCUw== X-Gm-Message-State: AOJu0Yxz9yTYT2JSj4JS3y+8rcyrrfxe5refaEIznXwAvxhKSCoeLQnq UiEkDXV0p1WXGnjq8QQXCCdD+zCNSDrJ/cMgsPS822N6ywdsh8mjqUxMv/vawgSwtFW5ng== X-Gm-Gg: Acq92OEowDrerLIcPjtPytqVM8a6oqKqtv6QMDScrON5dpCMfMMuA8CbFC1oaytitk1 r6b+b6O6YIUoqlDwO+w4YH46gLtNJHLijT12aDJHxqhjn4N4X86IY7xjhsuNT3zxaLSzybJ9+cM TziduSB0iNT79W5OPv8g+h2Esohti+hsHEDVWMRoCs6xnaQEpCXNoKOWLbY7g8cf40C38VQ1eNB jrNjbiu56HT39+FCxqJaaJ0bZqz5GSZX6WZ8Nz7J1ZU89FIlQ/SJTcwBwTjTy5J+wsnUd/Slnhf s3tu9WKMtftz8cC2I5F/xdlWHwjCyevbuzyjVYuSQIgXGoz8Qop0xh0GehWve62jQIZ5To6HRLM bcA3fJgBryYiancvQ2Q/CTvWemxvYcVzhTrv58O+Cp/hiUdJBM2vNxEmyE0gQ7NN6ZVMtTQe3/d 2NdAx8JC0aCySCHDBMjxRyxC5EpuHilgGUkqaZMA== X-Received: by 2002:a05:600c:45cd:b0:48e:8741:fd3d with SMTP id 5b1f17b1804b1-48fc9a2ca5amr14806745e9.14.1778641200187; Tue, 12 May 2026 20:00:00 -0700 (PDT) From: Emmanuel Ugwu To: qemu-devel@nongnu.org Cc: fam@euphon.net, deller@gmx.de, kantnero Subject: [PATCH 1/1] hw/scsi: add initial SCSI tape device emulation Date: Wed, 13 May 2026 03:58:54 +0100 Message-ID: <20260513025854.76594-2-emmanuelugwu121@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260513025854.76594-1-emmanuelugwu121@gmail.com> References: <20260513025854.76594-1-emmanuelugwu121@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32c; envelope-from=emmanuelugwu121@gmail.com; helo=mail-wm1-x32c.google.com X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_SBL=0.141, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1778641249480154100 Content-Type: text/plain; charset="utf-8" From: kantnero Add a new scsi-tape device that attaches to a VirtIO SCSI bus. Implements realize and unrealize lifecycle only. SCSI command handling will follow in subsequent patches. Signed-off-by: Emmanuel Ugwu Signed-off-by: kantnero --- hw/scsi/meson.build | 1 + hw/scsi/scsi-tape.c | 221 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 222 insertions(+) create mode 100644 hw/scsi/scsi-tape.c diff --git a/hw/scsi/meson.build b/hw/scsi/meson.build index 69fde0cf84..1699b6e591 100644 --- a/hw/scsi/meson.build +++ b/hw/scsi/meson.build @@ -7,6 +7,7 @@ scsi_ss.add(files( 'scsi-bus.c', 'scsi-disk.c', 'scsi-generic.c', + 'scsi-tape.c', )) scsi_ss.add(when: 'CONFIG_ESP', if_true: files('esp.c')) scsi_ss.add(when: 'CONFIG_ESP_PCI', if_true: files('esp-pci.c')) diff --git a/hw/scsi/scsi-tape.c b/hw/scsi/scsi-tape.c new file mode 100644 index 0000000000..650f75471f --- /dev/null +++ b/hw/scsi/scsi-tape.c @@ -0,0 +1,221 @@ +/* + * SCSI Tape Device Emulation + * + * Copyright (c) Emmanuel Ugwu + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "qemu/units.h" +#include "qapi/error.h" +#include "qemu/error-report.h" +#include "hw/scsi/scsi.h" +#include "qemu/hw-version.h" +#include "qemu/memalign.h" +#include "scsi/constants.h" +#include "hw/core/qdev-properties.h" +#include "hw/core/qdev-properties-system.h" +#include "system/block-backend.h" +#include "qemu/cutils.h" +#include "qom/object.h" + + + +#define MAX_SERIAL_LEN 36 +#define MAX_SERIAL_LEN_FOR_DEVID 20 +#define TYPE_SCSI_TAPE_BASE "scsi-tape" + +OBJECT_DECLARE_TYPE(SCSITapeState, SCSITapeClass, SCSI_TAPE_BASE) + +typedef struct SCSITapeClass { + SCSIDeviceClass parent_class; +} SCSITapeClass; + + +typedef struct SCSITapeReq { + SCSIRequest req; + struct iovec iov; + uint32_t buflen; + QEMUIOVector qiov; + BlockAcctCookie acct; +} SCSITapeReq; + +typedef struct SCSITapeState { + SCSIDevice qdev; + uint32_t position; + bool at_filemark; + bool eof; + bool bot; + bool eot; + char *vendor; + char *version; + char *serial; + char *product; + char *device_id; +} SCSITapeState; + + + +/* + * scsi_free_request() will be enabled once scsi_init_iovec() is + * implemented. It frees the buffer allocated by qemu_memalign(). + * static void scsi_free_request(SCSIRequest *req) + * { + * SCSITapeReq *r =3D DO_UPCAST(SCSITapeReq, req, req); + * static void scsi_free_request(SCSIRequest *req) + * { + * SCSITapeReq *r =3D DO_UPCAST(SCSITapeReq, req, req); + * qemu_vfree(r->iov.iov_base); + * } + */ + +/* TODO: finish implementation for testing realize function for now */ +static int32_t scsi_tape_send_command(SCSIRequest *req, uint8_t *buf) +{ + scsi_req_complete(req, GOOD); + return 0; +} + +/*TODO: Add elements when commands are implemented*/ +static const SCSIReqOps *const scsi_tape_reqops_dispatch[256] =3D { + +}; +static const SCSIReqOps scsi_tape_emulate_reqops =3D { + .size =3D sizeof(SCSITapeReq), + /* required to test if tape is detected by QEMU*/ + .send_command =3D scsi_tape_send_command +}; + + +static SCSIRequest *scsi_tape_new_request(SCSIDevice *dev, uint32_t tag, + uint32_t lun, uint8_t *buf, + void *hba_private) +{ + SCSITapeState *s =3D DO_UPCAST(SCSITapeState, qdev, dev); + SCSIRequest *req; + const SCSIReqOps *ops =3D scsi_tape_reqops_dispatch[buf[0]]; + if (!ops) { + ops =3D &scsi_tape_emulate_reqops; + } + req =3D scsi_req_alloc(ops, &s->qdev, tag, lun, hba_private); + + return req; +} + +static void scsi_tape_init(SCSITapeState *s) +{ + s->position =3D 0; + s->at_filemark =3D false; + s->eof =3D false; + s->bot =3D true; + s->eot =3D false; +} + + + +static void scsi_tape_realize(SCSIDevice *dev, Error **errp) +{ + SCSITapeState *s =3D DO_UPCAST(SCSITapeState, qdev, dev); + + s->qdev.type =3D TYPE_TAPE; + + if (!s->qdev.conf.blk) { + error_setg(errp, "drive property not set"); + return; + } + + if (!blk_attach_dev(s->qdev.conf.blk, &dev->qdev)) { + error_setg(errp, "failed to attach block backend"); + return; + } + + if (!s->vendor) { + s->vendor =3D g_strdup("QEMU TAPE"); + } + if (!s->version) { + s->version =3D g_strdup(QEMU_HW_VERSION); + } + + if (s->serial && strlen(s->serial) > MAX_SERIAL_LEN) { + error_setg(errp, "The serial number can't be longer than %d charac= ters", + MAX_SERIAL_LEN); + goto fail; + } + + if (!s->device_id) { + if (s->serial) { + if (strlen(s->serial) > MAX_SERIAL_LEN_FOR_DEVID) { + error_setg(errp, "The serial number can't be longer than %= d " + "characters when it is also used as the default= for " + "device_id", MAX_SERIAL_LEN_FOR_DEVID); + goto fail; + } + s->device_id =3D g_strdup(s->serial); + } + } + + scsi_tape_init(s); + return; + +fail: + g_free(s->vendor); + s->vendor =3D NULL; + g_free(s->version); + s->version =3D NULL; + blk_detach_dev(s->qdev.conf.blk, &dev->qdev); +} + +static void scsi_tape_unrealize(SCSIDevice *dev) +{ + SCSITapeState *s =3D DO_UPCAST(SCSITapeState, qdev, dev); + + g_free(s->vendor); + g_free(s->serial); + g_free(s->product); + g_free(s->device_id); + g_free(s->version); + if (s->qdev.conf.blk) { + blk_detach_dev(s->qdev.conf.blk, &dev->qdev); + } +} + +#define DEFINE_SCSI_TAPE_PROPERTIES() \ + DEFINE_PROP_DRIVE_IOTHREAD("drive", SCSITapeState, qdev.conf.blk), \ + DEFINE_BLOCK_PROPERTIES_BASE(SCSITapeState, qdev.conf), \ + DEFINE_BLOCK_ERROR_PROPERTIES(SCSITapeState, qdev.conf), \ + DEFINE_PROP_STRING("ver", SCSITapeState, version), \ + DEFINE_PROP_STRING("serial", SCSITapeState, serial), \ + DEFINE_PROP_STRING("vendor", SCSITapeState, vendor), \ + DEFINE_PROP_STRING("product", SCSITapeState, product), \ + DEFINE_PROP_STRING("device_id", SCSITapeState, device_id) + +static const Property scsi_tape_properties[] =3D { + DEFINE_SCSI_TAPE_PROPERTIES(), +}; +static void scsi_tape_class_init(ObjectClass *klass, const void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + SCSIDeviceClass *sc =3D SCSI_DEVICE_CLASS(klass); + + sc->realize =3D scsi_tape_realize; + sc->unrealize =3D scsi_tape_unrealize; + sc->alloc_req =3D scsi_tape_new_request; + dc->desc =3D "virtual SCSI tape"; + device_class_set_props(dc, scsi_tape_properties); +} +static const TypeInfo scsi_tape_info =3D { + .name =3D TYPE_SCSI_TAPE_BASE, + .parent =3D TYPE_SCSI_DEVICE, + .instance_size =3D sizeof(SCSITapeState), + .class_size =3D sizeof(SCSITapeClass), + .class_init =3D scsi_tape_class_init, +}; + +static void scsi_tape_register_types(void) +{ + type_register_static(&scsi_tape_info); +} + +type_init(scsi_tape_register_types) + --=20 2.54.0 From nobody Sat May 30 17:44:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1779470995; cv=none; d=zohomail.com; s=zohoarc; b=WcPrRuClF4qlRGp5hyWDxvfxIWsPKTqESjy8yUyy2vHJRS62ux3mXJ1JQY1wIwqvy/paAN/MWoy9rIeSLH6KuwW+b2zdgDuf54wW/vl1PpjmQDEU6yXzIJjIS8Q+miylEdZbMn9Edd/sKfxYdEtvZT38M+6GGgp8rFUMLfB40JU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779470995; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=qjaYtSgqR7wY7A2y0laIyTjZiB4G1HR2dnJ0XIgGQt4=; b=mjSfH+H1vFP3jR5OhbiV/8hKRcgU1HJ4QUAFhb9ZlEC3kr613HNK4JC5bodxdH5LlQILwWEdh2+M/vCNV5gymFgeGRjM5gGSZUjscQ0+EwttuCPVlPmiu3VtjwiM4YzIfKg9jTve7MDVnmSBEcpuwCzcS/MfhtodU4M/WRm2kF4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779470995465637.6779713892317; Fri, 22 May 2026 10:29:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wQTgY-0001K1-Ud; Fri, 22 May 2026 13:29:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQTgX-0001Jr-Jl for qemu-devel@nongnu.org; Fri, 22 May 2026 13:29:21 -0400 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wQTgV-00031I-O5 for qemu-devel@nongnu.org; Fri, 22 May 2026 13:29:21 -0400 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-490426d72f7so10349415e9.3 for ; Fri, 22 May 2026 10:29:18 -0700 (PDT) Received: from fedora ([197.211.52.69]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49045284855sm49407775e9.0.2026.05.22.10.29.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 May 2026 10:29:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779470957; x=1780075757; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=qjaYtSgqR7wY7A2y0laIyTjZiB4G1HR2dnJ0XIgGQt4=; b=H7E5Hfsyw8BnOWImEC4XtoQJh8l6iKTr02avbEyP/bgC/AaUFugWuQlbem9lSD7wYp NToh2H6CNI50oJrr4u5BXzmVMjRIEGsr4pcKCgMMQIMlK30BK7ksMv+B7/fFIZK8pGt/ x7XOuvVM1zHZfGVaOdegk6yvTVOMZDXiz+AEoA/27Im+5ugVv+jSZMO1F7rnKPnGIceW M5H8LXtg5SIxcvaoAnmp4+bDBS9NMO5yuYCgiL8J8xDgnjGx5aoDYXYQsYoNbYpC6r+P Un3LWAE6iLB7DkVKb3JZiNClcBC+20Fn54y7VEyL4/mrrq3LSaTTi/Fa1CvKXossuE7E nypg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779470957; x=1780075757; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=qjaYtSgqR7wY7A2y0laIyTjZiB4G1HR2dnJ0XIgGQt4=; b=ku1O/fSXFdfK00yixXd7YVQv6c7rhiEuYa9aKGFGkCqRgNdJhMWtJ6hHZ5X17G5m/7 5t2Jbv176DFBf1U1oTAIt1KShOAWLzVO+iLK9v0gv3nIx9evFDfKuBfnCKGUCpdi2hbK hD13NGGR9FAwCRwFFvpgN/A/SpD3sWwU6R1O4skvSB2pkphdzm8WNc4EjtZ695fEzWR1 u+fM7z2drkWDq+0YbEOJMaQOBjA3niJK2M25fBDSG3DlHFMitotoSbjGRYwNyqNA2sOL 9dVTwqsccH7RQ/bwzJFVIDFaE9K0y53LbhIRbx2aqfXOEp6IP0ur4ZMOznejiOJ8pCmQ wBbw== X-Gm-Message-State: AOJu0YwEk/9VQ+FALTDCiWGP0fb2g2S/EFWJoKzLdwrMX1eL/n3qdH+e ddAicMrV+hxhhimOm530zdSqvT/JdqrTuSW3snz45wrTbie4tOnwHGCR/Uaib/tOljX8WQ== X-Gm-Gg: Acq92OF48lXynQD9Ah0G4kgksJx4qPRYypRNss1zqbvDMpU+S7Sj3gNmycwqPKbgbQU 01JyGIY658KklBYk9JXlx8l9l5K6mYziXw3mHgw8NRDTcyN8uQsY7SQKlK4sCUELBH+lZwTq0dB oiyQgq9HqB8Sj81f+exXSRFuwQASylNKPy+/8PogBXHyTylnoNZcv+Hn4UcfQuPU0/FIRAOBXjT hRXY61ve56+v4fnXFx9WupFxY5PxrXn/etds2dnMDAEARc0dVqlLUWAYIcOOpKiS37Tqh0gqjTu 1AQyrXZWxUbj9Nq5N9lZ4dZpvjcdTwO+ELhvB442mPoxOXFiv7ze+vS5G6cMc2KMuXLlVXFjN9R +2/vn/BL6Xvi7lG+Idp4S3YN0KUEd+mEE+kFXfVUlxQgeHA/eCq1rb6sg6op/zFx78Er2jf2Z5R PSxDfuiu4CFz7u2ZA6nojibTSMWZk= X-Received: by 2002:a05:600c:1392:b0:490:46bf:17ab with SMTP id 5b1f17b1804b1-49046ce6026mr49620665e9.29.1779470956763; Fri, 22 May 2026 10:29:16 -0700 (PDT) From: Emmanuel Ugwu To: qemu-devel@nongnu.org Cc: pbonzini@redhat.com, fam@euphon.net, deller@gmx.de, stefanha@redhat.com, Emmanuel Ugwu Subject: [PATCH v2] hw/scsi: add scsi-tape device emulation support for QEMU Date: Fri, 22 May 2026 18:22:05 +0100 Message-ID: <20260522172205.76871-1-emmanuelugwu121@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260513025854.76594-1-emmanuelugwu121@gmail.com> References: <20260513025854.76594-1-emmanuelugwu121@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::330; envelope-from=emmanuelugwu121@gmail.com; helo=mail-wm1-x330.google.com X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_SBL=0.141, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1779470997887154100 Content-Type: text/plain; charset="utf-8" Add copyright year to header v2: - Add copyright year. - Split into 5 patches for easier review. Signed-off-by: Emmanuel Ugwu --- hw/scsi/scsi-tape.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/scsi/scsi-tape.c b/hw/scsi/scsi-tape.c index 650f75471f..17d9ce4e7b 100644 --- a/hw/scsi/scsi-tape.c +++ b/hw/scsi/scsi-tape.c @@ -1,7 +1,7 @@ /* * SCSI Tape Device Emulation * - * Copyright (c) Emmanuel Ugwu + * Copyright (c) 2026 - Emmanuel Ugwu * * SPDX-License-Identifier: GPL-2.0-or-later */ --=20 2.54.0