From nobody Mon Feb 2 05:58:32 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass(p=none dis=none) header.from=nutanix.com ARC-Seal: i=2; a=rsa-sha256; t=1768388330; cv=pass; d=zohomail.com; s=zohoarc; b=F7CCGZIwrBMWDbNh2VrAD1PyRINvJQ/lqx3kFeyJHUSrW1Y+o9XnysflvKi4j3AxD+lpBb3b0Yk2+ovqL52J8sukNK0OU7E6te3yWkjQPjVsdZ2lVwnvWzu4Ekz6GnXdBtoFmsFiVkxGLFYY1bqNg31NUM00lcVvH0xbRsWo8zE= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768388330; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=CUkBLXVhnyFhxNhiQ68jo3gRWLK4WnnKTt5qamNa8UI=; b=fSzcfBKjtg0INGnJvCwXYNVmyHl1/+cQTLxR9AOV6JjwfYtpwTYK3zpu6nNVZuWhSSAOj5iHeeTp0p4jxcAo1F9I/7gjQtATn/bHZgL+7Q7i4XevyLJMAKL3hThD3TxkMTL0hj6lX9LKDGR0h09sJKlsKGoV32HWeOiMhkK4H0M= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 17683883309481012.3926944680927; Wed, 14 Jan 2026 02:58:50 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id F24873F36A; Wed, 14 Jan 2026 05:58:49 -0500 (EST) Received: from [172.19.199.83] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id B15F5418DB; Wed, 14 Jan 2026 05:58:07 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 19543418B4; Wed, 14 Jan 2026 05:57:58 -0500 (EST) Received: from mx0a-002c1b01.pphosted.com (mx0a-002c1b01.pphosted.com [148.163.151.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id A9EC641A24 for ; Wed, 14 Jan 2026 05:56:34 -0500 (EST) Received: from pps.filterd (m0127838.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60E8fcni3670517 for ; Wed, 14 Jan 2026 02:42:24 -0800 Received: from bl0pr03cu003.outbound.protection.outlook.com (mail-eastusazon11022085.outbound.protection.outlook.com [52.101.53.85]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 4bnxm6sqdv-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT) for ; Wed, 14 Jan 2026 02:42:23 -0800 (PST) Received: from MW6PR02MB9817.namprd02.prod.outlook.com (2603:10b6:303:23b::15) by SA3PR02MB10162.namprd02.prod.outlook.com (2603:10b6:806:396::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9520.5; Wed, 14 Jan 2026 10:42:21 +0000 Received: from MW6PR02MB9817.namprd02.prod.outlook.com ([fe80::86e5:3449:a3f7:ee4c]) by MW6PR02MB9817.namprd02.prod.outlook.com ([fe80::86e5:3449:a3f7:ee4c%5]) with mapi id 15.20.9499.005; Wed, 14 Jan 2026 10:42:21 +0000 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.7 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_LOW, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= proofpoint20171006; bh=CUkBLXVhnyFhxNhiQ68jo3gRWLK4WnnKTt5qamNa8 UI=; b=qy7k9RhUHm9+RQylQs4MclJKhBwX2L6mx6qM/5WFyLwHggddUZO2JjjtW Ncn7yOnj15uBhXAxpbmBnVjP5NloR3vGRr75eQ9QacsGdyu0QLgA3uIz39le7LE0 n0aRrOwivuA7gTsVcOChvgFfydh2FrdP+bWbr9UQfChgedaUvUpkoemk4gc2K5No ZlYKHO4zOisgMMLuo/4se19QTET7Vofsvtu+mJ9/36Gm3CaNjnlbXewSaMs9j7xZ pnVMhR87RZUH+cXSUZ4fKLZU2C7Htvc2Rj60CJI/oIVmiz9pTyLEIC+GEzOgyVBB MISnBlGIiy9mw33DiEcngoQnPK1Cw== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PMwsKe24q7zD7R5Ruhjg2g3QuqfpveDLtK2bszDatgB6qPCufOszV5vk7CmzATl6zXbXagM1OCBVvHK8g/e31dHENLfEMknAM93TRdvHjk/+ifNksrlekRqOJabxM/C5ycOPzgUKfsMvOiKzbJOWwik+zWCdXpKM41Lt3QLQ6Pjcntcfvl9Holaz+CnKEqkJRKWSpPdrBQAYchHQiazbGo67kjqyU4BvlrhP25t0pRKSF6HwYY/qjubHjCoHBjtmkv9aMpZOSM16TFlMqidmn6WBko+jZ7/tZMnSVoflBfrjqHuVCm5QkTWykWabdgKSR2SHue6CpTkQ4mM3AdcKfA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=CUkBLXVhnyFhxNhiQ68jo3gRWLK4WnnKTt5qamNa8UI=; b=U+Y/pjTYYP3TzbbwfiPsPf4VP1N1QOlIqhI3+FM3MNYhWtXcLZwKNyZS1dGQ7DiZnwje6uGCF38QA4XWorksFuJN8SBayo/Ipx3CYYt68eVcSwo4Y0JAJ0Bve2HCVWhXEvtTtfM0OU74TAEm0lZS2Ep2gC29OQS2CFlrEaAOpSLjJrioMSovOfbdH+sG8VDgYLfamqIrRn6wqCKKzZwRlcsZZv1K2vTlxs0KWvJCpwB2KXr3+vFHsfll7PQ9kndU1FzqlJ6FNk0stYG197JIW+SIysZcGIKZWpBqapx8wysRXtOgT4pWAdj3U3JPRvfMvXu2xe7x9wWDm2uo/P/ObQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=CUkBLXVhnyFhxNhiQ68jo3gRWLK4WnnKTt5qamNa8UI=; b=WVk+x9ftLH1BUUpwv//NcwQ5npVP7rETUBmhgPEVK3SWq25Cjjl2Z1ev6pVOj4z8bNvlCr+lrZ/ZdnV691QahAqXFib+cLE9eZjoPaJcn0xoI8qTe4yzIPbhXFfvSEHloD74CXMEhkWWyi3757uSDBrzwzs7Q4+aQBbuRvFF9COKJ0uTcHmQkmGivFk0S0xk+xNqTiuk7gNESFik5u/N0dg300W3cN/AurhtzfhqvuRJuD3YzlSXlylJ+THK5rl7cqEJRBtHZb0qElrglPWkY1hihM9yI5Pt7EPRa8XLTVfPra+1p9rH3YsqxKEM81ylZ7VKbHJDKtUCXJLJsWaSWg== From: Tejus GK To: devel@lists.libvirt.org Subject: [PATCH v1 1/4] qemu: fd: introduce qemuFDTuple for FD storage Date: Wed, 14 Jan 2026 10:42:01 +0000 Message-ID: <20260114104204.4071940-2-tejus.gk@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260114104204.4071940-1-tejus.gk@nutanix.com> References: <20260114104204.4071940-1-tejus.gk@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7P220CA0047.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:32b::6) To MW6PR02MB9817.namprd02.prod.outlook.com (2603:10b6:303:23b::15) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MW6PR02MB9817:EE_|SA3PR02MB10162:EE_ X-MS-Office365-Filtering-Correlation-Id: 31a11d90-392c-499f-f2a3-08de535998ee x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|52116014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?vwK+SpYYBOhr1tyVwM+BMdc01/mi2h67Gt2cPASn+2RZVBi7/aSx8RV7dH9k?= =?us-ascii?Q?VmNJjYgPF1O86q4wAY8hOc6U7843sr3nYTcX9cR1TQnsSW1p0EJoHscOnzIP?= =?us-ascii?Q?6qXZvroBEQpoqRTBw7y0h6SaQZTFKdn9y0YDcsdEkUXjJ9w1qPtEJ73IuAVb?= =?us-ascii?Q?IbjFbESXTOctDSOF8RxVuhq7vfYcLu/2/rPTI4iFh4mQnFo4Y17LhrsAQlDH?= =?us-ascii?Q?ZtGHlX/8H9tswgeKDXnvymxwgbgbcNN//LbuHRhMFW8a050IfyyWds0yZlDk?= =?us-ascii?Q?nPB7ctDkuk/H1gmXuXu3kGout1+3A1AYiJcO6283HsoXyEQdKS5NgajkI3Po?= =?us-ascii?Q?WH4KnNB4fvauzOGIr2kcK+LpJXEoFr++vYEfPVgvEgqGzidMm5kKWSZipjxn?= =?us-ascii?Q?b5pg+cUriLZLF3byv3Q/VqBbIFu+fIly2QA/KQRExCdy82xDy6FkSXmYNp++?= =?us-ascii?Q?XTgXl8+9eTQSJ5R+EAbzEmL2/F4Op/k5hWH0UFrxvf68DNRncMOUMhkht3gE?= =?us-ascii?Q?8MXPYw/9s2IqNvLi7YuhnJJUzjM6jXXYuJQJWD3tK53QLVLD271oYp4RTVQg?= =?us-ascii?Q?blSpbPa1G5PEjenVTWJHC7NAWfFu3wM7K+vFlG4fcqeAeYdJsxI2ZiEx5eTD?= =?us-ascii?Q?7lW2f2NOjQZfXfp8HfQyMlj8u26Mc/AjTjK8pzXxEBPZPoaz5L9MrM3erl61?= =?us-ascii?Q?scbIlE7uk9bf9AXTGK/n8x533IOnE9igcM/jslLX4Vmp3B58yasXoHGoJZbY?= =?us-ascii?Q?zE52gnP2IzqJp3ao0fInUz8jUmg/5/+SVxt8xTKqQ8FiG2iEXT2NEVuc1Vta?= =?us-ascii?Q?4FK5jv24LAnJlFyPSGI9GtNM2O8sEc2d9YIYJ/+K/9EYBXVYSBIoz5/pZ7aO?= =?us-ascii?Q?DktHZS9VupSWEVRRp9zYPfoulmuJcK9BQznSJQ1I0gdGdypQWQxqSU1oSRZc?= =?us-ascii?Q?mTxFj/Zc132DNu3s7374J6iQUkKHWO64nrOHnR8qS/pzaqKZbZ3jHCBgy6IT?= =?us-ascii?Q?XsRMYGqnfCSKOiRyQ9EU4bMs0gl8Ivt/Ek7gZnmBq9MUPC5kv0VF+HITiVvM?= =?us-ascii?Q?YDhgAqb2Wyin9xdDw3AbOor1rwUnqJ8GCyb+HAFTgMnFNPwqqjnerC96svoo?= =?us-ascii?Q?0RK/JC1wIFN4C06DV/oYBsFDne9h7WITBD17s7yKeBaIhTopfgdiv4452z3y?= =?us-ascii?Q?hzxuLKg3KmHqW0w4r13U7OGZsTTlvOeXwgrC15jW5bkY5Songm8WNQMYRZce?= =?us-ascii?Q?wiHqepynAPEc6LM8yBzoCOHtX120V2Gg43+F+umFv8m2h/83flNqOrx+sVvJ?= =?us-ascii?Q?7OSmrHcPw7HAO/tcBK5yEaDxt4mhdwyh5y7qTptKkuY2OBAMB0kQAAIx+T2m?= =?us-ascii?Q?ra1lqHot2rfoZr7qrDdQCgrQ0aVaJT1CFAqjyBgfuYTJwY3+LSSizwA/FRRO?= =?us-ascii?Q?jn6c+Ynfjteh7vXsibiVbMmvvCHoac1/lH2mnNw7L4qORwyJHY0mkP7bpdO0?= =?us-ascii?Q?fJx2TKCBrGPLfRxme10VN2Fz2di/cCvC9GZkuDDtfG+4yYdl/AxpPFhDHWls?= =?us-ascii?Q?4hOV1QNi/NwHVB9pmmIBSBBi3cp7nXjoCm6QmpbfFCMwzryMVSn1whfISzyX?= =?us-ascii?Q?RnUqp6ji3pu+AY69Br582xQ=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW6PR02MB9817.namprd02.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(52116014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?7dt7M6OZqvIXccu0EEE7CrlWeuAnAclCejqdPRrvOlbJvTW2PRJ9/w+Y/nRN?= =?us-ascii?Q?g0D0MWEjK0Mlbr6Is104XBrX8H+4pNyJ1F8ASl79Pmr3nh8SXLAiguKHoueE?= =?us-ascii?Q?byuSm9u3infKugHCrADnMakNoXdjxA4JlXafOVdL1CQAKTxXMQHdZp1UnqI6?= =?us-ascii?Q?Va0XhhmEEpnt3WaRgwGamjQo55Oib97q7Mlx5TZxskXO9wIUUeNA5IBVpQd3?= =?us-ascii?Q?LKrQx/rbSHsy551D5JbYZ52tnqlJl1tefIt0mjmDUemALcmfBuVTmrxrpsGz?= =?us-ascii?Q?oJUyx+AD5GBF/nnZIO/nukfc34cetbDFgbbsmrTkssbdiTnXbK7r2HVcq2LX?= =?us-ascii?Q?h7ELGUeDsS4bxwiXk9kKtP+swpC+nNMVm6iVurssqwKKF5HjUMYNL+LrTxgW?= =?us-ascii?Q?2KZTsV4BKEh9+H06weXzkoHsjiBaIPhc7+dPGfrn5qSF2HfaSHazkpXTgi3Y?= =?us-ascii?Q?VVAefPy3odHda5jpsie21mtO9VyOR4Fmw2eiuE/rdh3H+5Td10sUlHy5TYCU?= =?us-ascii?Q?xsrUSs5dWqosy79Dfz4Vk1yu8/9xR4IW3fHdyAjIu7mr89ISsf5CKbJ+aHcE?= =?us-ascii?Q?7DcZK4POWXdqCPxQ/STAfBM7aD9SrQfouO41UuMX75W1+xDszKK8QzaJ2qvo?= =?us-ascii?Q?dlPrelTtk4jE+yPPSQlEsKzybrqnoyVJkWK/ikrJEqGnwLuqBdH5Wcp8PEc+?= =?us-ascii?Q?PvRfEYWQ+x83FJZd42IvT4jlyNFvYekCVGHGuxRp3zxh2xp0YYITHwe6jJHo?= =?us-ascii?Q?Xe3wIrHeq20CNInGSDA+f2cQwn2dxJz1+pmgM59Lq5KOx7xoH0C2cHVdlHVE?= =?us-ascii?Q?4NgBDg0+WAtsNC2NWBoPrmSq6G+GZI3pemrIwlEohVu9QinqJDZ2C/xsGI56?= =?us-ascii?Q?A1f+Sb+4Fq4Knf+j8xDIoEVgYtNnjHcduYlovP7Xr4iFzM46L5jIMFpZFXA9?= =?us-ascii?Q?PZXqYG8Agyp3LjuzxWdgSecAkBkEx4nyDRPPU0BZRn9SDHSL1hYndoUjgHE7?= =?us-ascii?Q?F3r4r3kEkXxU272ae9+O7jK9dYk3+Ae+KNv3XufzOwfhsInkAi9Q5CWyNHMB?= =?us-ascii?Q?7y/BdGBOlInewhP6SPv7DA4a8Gj187LQlpNDHA25dMUROBS5ONV80s4wRZdW?= =?us-ascii?Q?BBGSiers1NxCq0Kjum8nyeJzgxhYk8dpuWOn+9JeodTYb4eiIcIrWyy9CoHZ?= =?us-ascii?Q?O+ewvViJ+2aZWysWtejaaxhpQVsjYwEu6dH2N2kJ67BeC8CptRQZlDgfapnz?= =?us-ascii?Q?kWBz7763EFR8nZy3hVpl00h5ZzciqDwACK50azVgGf/H5zXM6PftNzcZUeZ+?= =?us-ascii?Q?wg9uGnlaQaLBOGcKCexdABXi7YgMPGhtmmz8WLiogQ9cBfu6LawD6/2/1zLQ?= =?us-ascii?Q?d/qp/zZnS9ZYrDbhGsqErkB7kkqDH/22toa8ybus5KueQ/v0ScgepaTceVlf?= =?us-ascii?Q?ZwbHDiIMGUELYzCy2HhyMkC+oekKKZ3v07xN2H9s73MbRQNKTpefTAxRdL6I?= =?us-ascii?Q?74YCJu69JvoXn2XsBrg1qDhKjM6MaTSq8UnscfE2F/TxQ9DbDUlndxgdzXAi?= =?us-ascii?Q?89mdlpubEdF8E7IeZ6LXBa8/f10o7np2pqR/yfuw47zlMV6JwRC3jMZeqGXQ?= =?us-ascii?Q?0xWASnTrwlvaZxu6ijv6Cv9RlPdnEm3Zx82iGQ45qEVLrKi4wO6TavOG8K1e?= =?us-ascii?Q?DmT2LqKAeVDtlM5ZdLTenYVPkAFGIiB0skdQ4vhdYZxquf5clZYOm3WclfON?= =?us-ascii?Q?zJ2aS6aOCw=3D=3D?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 31a11d90-392c-499f-f2a3-08de535998ee X-MS-Exchange-CrossTenant-AuthSource: MW6PR02MB9817.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Jan 2026 10:42:21.7237 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: a1DV+A9+0oMSBESiyU8RFNnanr9B/BVYxFsjUOZ2T2xFG1LA2JMvaWtQw9jHREq0sO+9XHO6sC1Cg9zFziV7BQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR02MB10162 X-Authority-Analysis: v=2.4 cv=FIQWBuos c=1 sm=1 tr=0 ts=69677310 cx=c_pps a=jgSDuZMfJWq5ef40Xplyjg==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=vUbySO9Y5rIA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=64Cc0HZtAAAA:8 a=2l0bY8T91AuumU7jI4EA:9 X-Proofpoint-GUID: aNLIvKaAXlic4-l16oFx-Rof8GTZx5Bm X-Proofpoint-ORIG-GUID: aNLIvKaAXlic4-l16oFx-Rof8GTZx5Bm X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTE0MDA4OCBTYWx0ZWRfX3GOUmSJFihs2 dHzMiJ/N2WdAbacemGyHNeFR9PSj9JF7vN2mKJ8ueiCNSc7mO9lX/9pp3UEXhx1W6ecVQQQIy9h ChwLImbGWYAHIaQMf4ovJTg69hgC6Nlu2XNWe9g6rBEkJwvYWfwy68adQdqqXo1tAvtgSnKv8Cw DOtmtBsETw+vIBR5qjkgqAZaDlIOUpIvOcFyJhOLndHJjJNj2k/B9XJIZArlBuj6FonxmuKnYHG 2mFbo3NEl0LGHAaUkUU5Et8CQXyhCY/ZL/6LDeDYrZ3i1viIXSEFz39DmRdyckriwZR0NxkbpIi j4nsUoKnwB0kUY6gnfDbB6fsCIIqcbmwc8VfkoCOpCkQBgCBcm0QAUw+hfGHTvTk7rvzyRlTBoo ZfazuDFqfc3hO2O5YZjnOOIuBnWth7Ph7//X+bjIqV9cxHgymfa66aQngvkJo0TKeu5qo8RlvBj nHB1i8KzXvXxyoQ7qCA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-14_03,2026-01-09_02,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Message-ID-Hash: PPUD24MIYMO42TWSQDJP4GIA2ENOUIIL X-Message-ID-Hash: PPUD24MIYMO42TWSQDJP4GIA2ENOUIIL X-MailFrom: tejus.gk@nutanix.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Tejus GK X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1768388332139158500 Content-Type: text/plain; charset="utf-8" Introduce a simple struct to store an array of file descriptors. This is loosely based on how virStorageSourceFDTuple is implemented. This will be used later on to store FDs for FD based live migrations of qemu domains. Signed-off-by: Tejus GK --- src/qemu/qemu_fd.c | 23 +++++++++++++++++++++++ src/qemu/qemu_fd.h | 14 ++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/src/qemu/qemu_fd.c b/src/qemu/qemu_fd.c index ef0a8d8127..2bfaac500c 100644 --- a/src/qemu/qemu_fd.c +++ b/src/qemu/qemu_fd.c @@ -509,3 +509,26 @@ qemuFDPassDirectGetPath(qemuFDPassDirect *fdpass) =20 return fdpass->name; } + + +void +qemuFDTupleFree(qemuFDTuple *tuple) +{ + size_t i; + + if (!tuple) + return; + + for (i =3D 0; i < tuple->nfds; i++) + VIR_FORCE_CLOSE(tuple->fds[i]); + + g_free(tuple->fds); + g_free(tuple); +} + + +qemuFDTuple * +qemuFDTupleNew(void) +{ + return g_new0(qemuFDTuple, 1); +} diff --git a/src/qemu/qemu_fd.h b/src/qemu/qemu_fd.h index d873e110a8..396ff946cb 100644 --- a/src/qemu/qemu_fd.h +++ b/src/qemu/qemu_fd.h @@ -83,3 +83,17 @@ qemuFDPassDirectTransferMonitorRollback(qemuFDPassDirect= *fdpass, qemuMonitor *mon); const char * qemuFDPassDirectGetPath(qemuFDPassDirect *fdpass); + + +typedef struct _qemuFDTuple qemuFDTuple; +struct _qemuFDTuple { + int *fds; + size_t nfds; +}; + +void +qemuFDTupleFree(qemuFDTuple *tuple); +G_DEFINE_AUTOPTR_CLEANUP_FUNC(qemuFDTuple, qemuFDTupleFree); + +qemuFDTuple * +qemuFDTupleNew(void); --=20 2.43.7 From nobody Mon Feb 2 05:58:32 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass(p=none dis=none) header.from=nutanix.com ARC-Seal: i=2; a=rsa-sha256; t=1768388264; cv=pass; d=zohomail.com; s=zohoarc; b=eX3Z5PDbgzoXKRTRe6GZQmeUkw0SPGH4IKNYD8rkXJaz0QOEPN0KRpKcPBH1jv9gVwCcVpyBmxeY74yD7xBC6UiCZ9r0QDwfJsqV7t+vO1fadkTIjnu+bvFb+Nqc2UTXGo2EmJVGwIOiniqa3XYUlugPjB8ntXznyT0WFiLf0PY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768388264; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=oUdRNwzFBWCeCvo0fQSzxiDM8Zs45mwBOWAoswWzgHI=; b=KW+vPmWbLkJxJCHLFaGy8d1Lgb7pPBxxfobMHPwnI2nN1HZC7e0eaQQF7sL+rm9z3BpXl31MMR+8Cw5eO5hC/YCh44AfBkEhVt3bBQU1Xm6B77sJN/nOylBa/IvA19pNNd6NR6If8gw4OFUZH5GvGV+FhmID0sQci84E/yR9mLk= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1768388264600722.0898173646617; Wed, 14 Jan 2026 02:57:44 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 9921B418E1; Wed, 14 Jan 2026 05:57:43 -0500 (EST) Received: from [172.19.199.83] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id E242641B6C; Wed, 14 Jan 2026 05:54:56 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 43116419E8; Wed, 14 Jan 2026 05:54:48 -0500 (EST) Received: from mx0b-002c1b01.pphosted.com (mx0b-002c1b01.pphosted.com [148.163.155.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 71DDA41A52 for ; Wed, 14 Jan 2026 05:54:23 -0500 (EST) Received: from pps.filterd (m0127844.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60E7pPX62984126 for ; Wed, 14 Jan 2026 02:42:25 -0800 Received: from bl0pr03cu003.outbound.protection.outlook.com (mail-eastusazon11022114.outbound.protection.outlook.com [52.101.53.114]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 4bnq4qu7y3-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT) for ; Wed, 14 Jan 2026 02:42:25 -0800 (PST) Received: from MW6PR02MB9817.namprd02.prod.outlook.com (2603:10b6:303:23b::15) by SA3PR02MB10162.namprd02.prod.outlook.com (2603:10b6:806:396::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9520.5; Wed, 14 Jan 2026 10:42:23 +0000 Received: from MW6PR02MB9817.namprd02.prod.outlook.com ([fe80::86e5:3449:a3f7:ee4c]) by MW6PR02MB9817.namprd02.prod.outlook.com ([fe80::86e5:3449:a3f7:ee4c%5]) with mapi id 15.20.9499.005; Wed, 14 Jan 2026 10:42:23 +0000 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.7 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_LOW, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 X-Greylist: delayed 717 seconds by postgrey-1.37 at lists.libvirt.org; Wed, 14 Jan 2026 05:54:23 EST DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= proofpoint20171006; bh=oUdRNwzFBWCeCvo0fQSzxiDM8Zs45mwBOWAoswWzg HI=; b=iR5yaTHjaUgBZ8Z7Y4naeqyXVTnqnDnlfgvjUW+RYbGAlsXpMFXHLoecs J1PFjYzrrOHr2007ssVePo2bLgZyjoEmx7SI/APg1Qc0UO2Pkqu5IT6UPMglTFnG aTmhb+nGqQTiLNit53tDn+lmjgmiRNJkkzuM1EAZkK02KeiAsvOuZbXzLGrr1zf7 f1PMH+WFfqCf2sYBJTBcA4I4te5VhODdmsExsI0y9HtXLvasRQCa9Tbd+/sSPaL5 zI4GiV340VFn6YvONlZoPPJ9zWr0Sl3rZsXIwUjk/ydCzjJY+iZGZQR8kNSirTgf 02bh8MJcOorvXzBGuClyWV2CxsMqw== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vDRTdZzs56NoWTgld66+HN+GEN/KaZx1XDgoChsE+BMGgGbfjExZ/nBHG7OR1tix9EWu1okJrW9AtvKG8iFeDED2Ijfd4/iq5s+wenvgXpZYrifgPgBeH+SZT1RLfNOvdO/pVIMGxZhyOq9KmXl8zpAiAEcoGLngkbUTbdFUTJYbh7grsN77+ql7aj/Ip50P210n5vs67XewV66FdRcKlnnN0TF6X9aZCzKZsRjTRG+TzvZmffE5ZL5jKRAeV6MF0KwhN9vxtl6j2q8ZmWs5dmJ8lw0+Pf2ehIJy7Hy9B0aaupUTo1hHte7rdhRY3sGupj/Miv8elT9EIUuozca7XA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=oUdRNwzFBWCeCvo0fQSzxiDM8Zs45mwBOWAoswWzgHI=; b=KZtCdd3GMAknKN8MCElZhOHTL6EaC9KBlHQubLjYEpTIuBwBUU3LwssM09D5nGiKhjwyzwYUxJ0K0nW8ZPZwyhNuVGc79BWqfeB6PCe1NJr1XkwwyNR5ArgsndDNyBl+hDIUymjNrZKfwezdRHvWS7iOYM6hLIYDkJMSCeh/auBl/xbJb9fMLAydgGDc9grJl+I8W631tCkUc4WPBxn8GMjBa0897zR6fZx/pzIyO5tYa5wtGq8cmbw6je/9eFEHX73FhfE11V5iUoJtHmSGTxVWv+FI+JidW0SXNoT0SdTjjNDar+58SU2QKs7RTHCqi4P4LHpviVjK1HkPiZERKQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=oUdRNwzFBWCeCvo0fQSzxiDM8Zs45mwBOWAoswWzgHI=; b=pyNTTCTXuVQpwDx3yqhFwhwNHc68ZHVNMEzdKts5grczUkLEpBZdJbULfRndntqBGvFx4kzLBeojKQ9IR3NmDrXVkwc45+u/YqqyaBkmvEktFK53fOsZ7jBzdFi4Oyy7wX5cM4dP1910yf++K+hdm1vBcPO71/1U7ucLsDrpvLgl6oAq8h8RV6T9SVE03HAOji5O9R03dkzfuoew+25beWVN2o6lkUEdNnEutXiqUjruj6m6332jtZk9m4xrlflIxVDR13V/Vjpj+pD7D4vqNPmnCa1/69r0UeJYSOZxkdWsw/IPD9LYICzHFsj3qcB2Sm8OAYdgdAp3GOWyXp13qw== From: Tejus GK To: devel@lists.libvirt.org Subject: [PATCH v1 2/4] lib: introduce virDomainFDStore API Date: Wed, 14 Jan 2026 10:42:02 +0000 Message-ID: <20260114104204.4071940-3-tejus.gk@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260114104204.4071940-1-tejus.gk@nutanix.com> References: <20260114104204.4071940-1-tejus.gk@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7P220CA0047.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:32b::6) To MW6PR02MB9817.namprd02.prod.outlook.com (2603:10b6:303:23b::15) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MW6PR02MB9817:EE_|SA3PR02MB10162:EE_ X-MS-Office365-Filtering-Correlation-Id: 8d1186ad-2b5e-4321-0716-08de53599a19 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|52116014|1800799024|366016|38350700014|7142099003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?ihHMt9ijM5dpTMfAyOEN1qjSUKkTVTEZOTnAL+uSqEMFW7gRgM5n1E4U60Rt?= =?us-ascii?Q?jN0Idz4sLuLxT7WaAabmsT07BpC2NZg3jBRbxDqz69/7NPJLuZFGbqWDXA+2?= =?us-ascii?Q?Ev80qpP24GfoT/1LLjdolZWKF0x43Fm/f1o8I3jT0a+3O+VSiAxoRNGf8UJ6?= =?us-ascii?Q?xA/76AQEZkOQZQqPqRLcZBraM9smpWJOBEIbNKOkI1ew2zYP5l2TFkDKNVsG?= =?us-ascii?Q?1m2e0p9aYCbEtIbZAOUVmATXH3yApfJNrqnClf7CO4ZxD9g406QCV8hU8fnY?= =?us-ascii?Q?Ng0xf2W40JkLmKKuIVndgAsdHckvQv3QG9Tr/UyXZIM+PViQAIGXcx+4f1FL?= =?us-ascii?Q?WG/7d5Wr4qkwiwn+/0wWj81ItWC5xBWGLolFzmozinEbrMVFsSBLcuGAjG6b?= =?us-ascii?Q?TRu6dB+nqRQooxMmotC3UvGKF3XHzgCkF+nM3PdF/n2mTTIbaivaNgIsr4vO?= =?us-ascii?Q?k93dS1S6vBoV69RUoTD/X9y3Dq450RXXCMc2itSPZXhLXlGzDuFlUMnptZVK?= =?us-ascii?Q?bhlSib9EU41KDkF4C6+NEIITR4Sdvb+OoIR1vgRpSSLOI7ZSRGUmwj4Pk0pw?= =?us-ascii?Q?mrrxWGQv0ScEUuzUZ293Z1I2PNE1l/8bcQh8AO06Wpz5yNk0iCBLVbFDVSRV?= =?us-ascii?Q?P8O3Su1bYgIjzQGZAX2d/fAHT6hGsC7zQMmLfJg9JtdkP0J9us414ASSxJUr?= =?us-ascii?Q?jxo1mOFt4Gq8WrJ80EwYeA9yGInkQ6s0XbIG6waLUo8GmNwHPwtvQCFqTWvn?= =?us-ascii?Q?iro4+9XemcP8btyRW4In/7ITe/MRv9PuZeIeU77BeipLmh4oDRgmpn423iBr?= =?us-ascii?Q?m6WtaUEBHA12oTzSWYYle0Fi6ITqTfa9zhWbQpASFz/IYv2QvUNqWEdFpfCK?= =?us-ascii?Q?92eg4c/9bHEWtt+bnULrNqDM7NPwkGprIerxMhCo1KWUlIuMYdZ45Say3Odw?= =?us-ascii?Q?HDrvX34OVSxmzlSqyDxUgvtqPRDv0df+r5OZIvdLkIi8ByvFzZ1l+Kfv+lK7?= =?us-ascii?Q?ODKn7qCR+jCtMGOPORvMALIRMfaGtMqV2NRFSgAvJ3FaVIkpYkeoMS/WbdR9?= =?us-ascii?Q?scDhksVRsjvRC87PhbWIHNPHcUAtOEcVa9z5Zfm1sQfXXrZHpgy9+KcEYEeo?= =?us-ascii?Q?MC8DNd7pTS3OPnOQUahPiNoYoUyRLIcG4V31aCrcIw6XXibxlK1IS1C1gbya?= =?us-ascii?Q?jc5YCai1dm9NN8JJOo2zLuvYkNYJn2/B97klDhqlekLKgt8iVO4nqzaMgOvV?= =?us-ascii?Q?pCaaRViu82cPFI4YEfQEvDIBWJEQaYOJ+hIxPwL6CUAi3/NDJUdLhAV9P95E?= =?us-ascii?Q?Gtg7Hz27DuTxtnLAYQYDLUamM5Ao+ey3xPOTDLvZtqhV3F2PjGpnWyvUklD3?= =?us-ascii?Q?km68F3FtACkze2cOEBZ2TsMlXloq/yXG91a1sUftjQdNHoi5jvRE1TwenghM?= =?us-ascii?Q?5jkF6iZ9V+RLdMglgIxUb2GwVGMVJn2oaKFE9/1knto8NBukl6xXLORm8ExH?= =?us-ascii?Q?FX7uUdUkQH+FgwhL3geayeczyxdSvU3/bgfwyJMBy1itzkH9bl+50XshoVyT?= =?us-ascii?Q?jMaIGcq6KIASn6LuLHQbQUOGsQHktkHx3lkyzM+vn7yIpXLCp0cK0jRksuZc?= =?us-ascii?Q?6ZgvpvDsuZzYrs2KmbqGwi4=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW6PR02MB9817.namprd02.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(52116014)(1800799024)(366016)(38350700014)(7142099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?RxLVVXTrcJmSPQbqjnO1U+O+VQby/ckm1C/muGQkamm0gzwgdfJQuWyb93JN?= =?us-ascii?Q?bC3HCPFhObeyMieA44BUY4CrHJmaXv/sbv61Fe8kQO59hS/yiy34Rca7whVb?= =?us-ascii?Q?aPAgFFhrJ8S2uNVwwR8i8jxxTbw6OglD4Y6QrN2bXuOPRirIEjQ22c31UF3z?= =?us-ascii?Q?f2NEkcCXDbOHSVutKqhZI8dC/UW9BMQioMPZWVw/t8fiQkBY3jUDMx7Oig8u?= =?us-ascii?Q?RKeJcr2hLiNTdsFR8AlYl136tcf4VjI+ebtcqF1rLzXKIWUKD5VCtAJrNRUv?= =?us-ascii?Q?GWv/YXpa13LTY88czodb9jH2z6LoFheXwU0L5zuxLD9ve3bcvFPsZ8AaluYs?= =?us-ascii?Q?77FOjTq4DKJ5SinufbS0w0ES0bB39dHNYsUOif8aT9T9jVB0hpckSZ1rW1zu?= =?us-ascii?Q?MgP3j+6G/GN3rFdJYMtiV8nLnpIELMz71avmUwSPF2wjZnxqSCpLVYjuGBKV?= =?us-ascii?Q?z8rOowTkJf051fjeAi7WFBuzJuqxHqLNbZzKSI8Qu/zNNepAc7f2x6kfOF6v?= =?us-ascii?Q?0D2NgpJK4nlkSBJn80StAg9Dy3hV8PziXHOfiVIBlfzlSWnCLEoo69H9pq2n?= =?us-ascii?Q?GuNUPOX0UBGhSmX+LyuNMAU85BsM2C4j9b1E7iyx1wI5lgdBDuwXLSZcXYu0?= =?us-ascii?Q?+SKUoE+5DZV9TomVkFlyjZ7Yc/q/8k5E76g6SrVhAGouRpCWq5PvXYRxjCIh?= =?us-ascii?Q?OcxLzt+V/jJRhh5s82lMobzqked+Z63Qt0SYbOK4fCO/rBNfRRy/E6Qi42XV?= =?us-ascii?Q?XzUUMoeMV+50h8nZ8WQikT6ON7e/czOUkaWoCXJyXUK1xgeqnjQYd6UctFHn?= =?us-ascii?Q?6wiYl3lIcGiK3VqoT6bzEIKoeuu5NHfLi//4QLAiQVhpsvzIxmTgWdCoFiSq?= =?us-ascii?Q?mxZlXmcTD+5GYCgsoT/HUsKbxZdkCCaeutXhXqXQqkWfnXdU0kOgbVtzGpgg?= =?us-ascii?Q?nsPBUP+Gywjpu3T3UA0X4l3HE+7xF2qAtYVnVBBG6KdmbmIjKLtCLa0U3F58?= =?us-ascii?Q?9/6C/Fbxm3fkYzf7mRqfkXscNlb7eJHpo8rujfa4yH//cF97bnsv8jDN9NhQ?= =?us-ascii?Q?YngjkwjFg3z3BTp4RvSaYlBJwdv+ON0EjXelty5ouRxI1i2nQLYskvmHAVID?= =?us-ascii?Q?bnLYryYLJ83SPhP/LSWnigjl718WXmog95xe4/KBjqQo1vWsZ9uBC6vaFOPx?= =?us-ascii?Q?Ir6M+JCUIhhH9pIE7+H52bTU4UggbZUXgMpkigrZudKEFitlHwKKCyuPFiFn?= =?us-ascii?Q?Q0ELRHP+Yzns+AoiatXbFJB0R35PszHZ4KH2gN4pc4khYXyc9u4NLthUjVCi?= =?us-ascii?Q?epid1Ut5hWsc5MAUyeNlB69tyrSEnltEayaVMtfTrU0ebqRNbmU5WlePUXse?= =?us-ascii?Q?kehk6fqlezlFpkhQta7WdTIyqhpBQHcy6xPXrvVkOeZIo1OERuCa8OENIIK8?= =?us-ascii?Q?ZFGy/uB2joSUveOkADY4FvnJoyd5o1HvvXnTjbqCFhHv97GEE4I2nbBGsZfb?= =?us-ascii?Q?bJK9m+VgUS7tRPK+CqLsGZG9996NsR//WviZbOroGs3YijdaUqqSMfjAA7nV?= =?us-ascii?Q?nfjbZ4cE9y8Y3xrRy5cTE7L/GnEjzoJXnVByRHvt0IwSr5Iqxl8YqVjI6KE8?= =?us-ascii?Q?9p8ip6l1zSrzMW6LqghnOsnOA4WCD042qPfMZ74V9febezNPraDbdGUeMTNe?= =?us-ascii?Q?BbVbJh44KzntuZDyn/JMUeslssTYbYlgikHSad8rxPjSAcpqDDe9bc7HclL3?= =?us-ascii?Q?5Hz+FYEnWQ=3D=3D?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8d1186ad-2b5e-4321-0716-08de53599a19 X-MS-Exchange-CrossTenant-AuthSource: MW6PR02MB9817.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Jan 2026 10:42:23.7308 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: HntHLRzDgf0IwR8ZIh/5P9/Eg8skKp2ehbwZA6LCJD90ysjQYlwKMOOCsj/31GpcbJxGJTNGDYN0fVZRgMDiFA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR02MB10162 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTE0MDA4NyBTYWx0ZWRfX86vYNLMZ6z6e Yn5NJiKFuU3kRIzStD+iL+YmNy39iIJcWop25ebu9IfeNzVVhoOb0/JHHBJgRdpTDqyanQVMzTv Mdg+3fZGZJ624Xg7i4VMYj1zZyGq8vPlakJVbYsPWH0ybRHvuuOek8BzmuDju5tWiLTvuYfuBPE wnuJoSQ/LZG4FKS4ffv+5GT3mO4ulJ6uGnGoEI/4Liz5kXHj6nNZ9TchePDENOEWbfqOmHs6bsH niFKqH4fquw53uaeIR9vCJuUkfIYmRvgoXaBUaHRSbl+mGt6AXgXzJUlgNbRw60rfEJVytbpDN+ CDjHo5RAwwHPavIlRzWLmKVwDZaWbNQkeqeRcaqthlC+yb1g1BilJ5HK3PyvS8lnKhwoK3S+7Ah zaWNg+Kqpt10uFoggfSLQFM39LvJVnBlrrAv4pOTJyOM+aTkurmBW3Bai4fGKiRyvKJfyHsYIKy JlE0Wckl02DEJuXum0w== X-Authority-Analysis: v=2.4 cv=G4wR0tk5 c=1 sm=1 tr=0 ts=69677311 cx=c_pps a=PPij9JC9dsFwf49xmEs+Gw==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=vUbySO9Y5rIA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=64Cc0HZtAAAA:8 a=SuWQVDZpNuuskVtA7TQA:9 X-Proofpoint-GUID: XZl8r0U6SwIu2l_NZSKV5O1Wbuigy48P X-Proofpoint-ORIG-GUID: XZl8r0U6SwIu2l_NZSKV5O1Wbuigy48P X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-14_03,2026-01-09_02,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Message-ID-Hash: CZEJYDTFUU5WDBU4HVJG7NQIUEYEVX6E X-Message-ID-Hash: CZEJYDTFUU5WDBU4HVJG7NQIUEYEVX6E X-MailFrom: tejus.gk@nutanix.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Tejus GK X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1768388266019158500 Content-Type: text/plain; charset="utf-8" This API allows callers to pass and store file descriptors inside libvirt using a hash table, with a provided "name" serving as the key. The stored file descriptors can be queried and reused later, enabling use cases such as FD-based live migration. Signed-off-by: Tejus GK --- include/libvirt/libvirt-domain.h | 9 +++++ src/driver-hypervisor.h | 7 ++++ src/libvirt-domain.c | 62 +++++++++++++++++++++++++++++ src/libvirt_public.syms | 5 +++ src/qemu/qemu_conf.h | 4 ++ src/qemu/qemu_driver.c | 41 +++++++++++++++++++ src/remote/remote_daemon_dispatch.c | 36 +++++++++++++++++ src/remote/remote_driver.c | 22 ++++++++++ src/remote/remote_protocol.x | 12 +++++- 9 files changed, 197 insertions(+), 1 deletion(-) diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-dom= ain.h index b0acd0083b..be40a127d6 100644 --- a/include/libvirt/libvirt-domain.h +++ b/include/libvirt/libvirt-domain.h @@ -8751,5 +8751,14 @@ virDomainDelThrottleGroup(virDomainPtr dom, const char *group, unsigned int flags); =20 +/** +* virDomainFDStore: +* +* since: 12.0.0 +*/ +int virDomainFDStore(virConnectPtr conn, + const char *name, + unsigned int nfds, + int *fds); =20 #endif /* LIBVIRT_DOMAIN_H */ diff --git a/src/driver-hypervisor.h b/src/driver-hypervisor.h index 6a43688b0c..0c2a9041fe 100644 --- a/src/driver-hypervisor.h +++ b/src/driver-hypervisor.h @@ -1473,6 +1473,12 @@ typedef int const char *groupname, unsigned int flags); =20 +typedef int +(*virDrvDomainFDStore)(virConnectPtr conn, + const char *name, + unsigned int nfds, + int *fds); + typedef struct _virHypervisorDriver virHypervisorDriver; =20 /** @@ -1750,4 +1756,5 @@ struct _virHypervisorDriver { virDrvDomainGraphicsReload domainGraphicsReload; virDrvDomainSetThrottleGroup domainSetThrottleGroup; virDrvDomainDelThrottleGroup domainDelThrottleGroup; + virDrvDomainFDStore domainFDStore; }; diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index 74c70a0a43..7e194f7193 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -14269,3 +14269,65 @@ virDomainDelThrottleGroup(virDomainPtr dom, virDispatchError(dom->conn); return -1; } + + +/** + * virDomainFDStore: + * @conn: a connection object + * @name: name for the file descriptor group + * @nfds: number of fds in @fds + * @fds: file descriptors to store + * + * Store the FDs in @fds with @conn under @name. The FDs persist unitl + * explicitly consumed (e.g. during a live migration) or until libvirt + * shuts down/ restarts. + * + * Unlike virDomainFDAssociate, this does not require a domain to exist + * at the time of storing the FDs. + * + * Returns 0 on success, -1 on error. + * + * Since: 12.0.0 + */ + int + virDomainFDStore(virConnectPtr conn, + const char *name, + unsigned int nfds, + int *fds) + { + int rc; + + VIR_DEBUG("conn=3D%p, name=3D'%s', nfds=3D%u, fds=3D%p", + conn, name, nfds, fds); + + virResetLastError(); + + virCheckConnectReturn(conn, -1); + virCheckNonNullArgGoto(name, error); + virCheckNonZeroArgGoto(nfds, error); + virCheckNonNullArgGoto(fds, error); + + if ((rc =3D VIR_DRV_SUPPORTS_FEATURE(conn->driver, conn, + VIR_DRV_FEATURE_FD_PASSING)) < 0) + goto error; + + if (rc =3D=3D 0) { + virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s", + _("fd passing is not supported by this connection"= )); + goto error; + } + + if (!conn->driver->domainFDStore) { + virReportUnsupportedError(); + goto error; + } + + if ((rc =3D conn->driver->domainFDStore(conn, name, nfds, fds)) < 0) + goto error; + + return rc; + + error: + virDispatchError(conn); + return -1; + } diff --git a/src/libvirt_public.syms b/src/libvirt_public.syms index c506acd2ed..3b3a4bb4e1 100644 --- a/src/libvirt_public.syms +++ b/src/libvirt_public.syms @@ -956,4 +956,9 @@ LIBVIRT_11.2.0 { virDomainDelThrottleGroup; } LIBVIRT_10.2.0; =20 +LIBVIRT_12.0.0 { + global: + virDomainFDStore; +} LIBVIRT_11.2.0; + # .... define new API here using predicted next version number .... diff --git a/src/qemu/qemu_conf.h b/src/qemu/qemu_conf.h index c284e108a1..cc655811f7 100644 --- a/src/qemu/qemu_conf.h +++ b/src/qemu/qemu_conf.h @@ -349,6 +349,10 @@ struct _virQEMUDriver { =20 /* Immutable pointer, self-locking APIs */ virFileCache *nbdkitCapsCache; + + /* Hash table mapping FD names (string) to qemuFDTuple objects */ + GHashTable *domainFDs; + }; =20 virQEMUDriverConfig *virQEMUDriverConfigNew(bool privileged, diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 3f154969b8..94a7b17090 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -35,6 +35,7 @@ #include "qemu_alias.h" #include "qemu_block.h" #include "qemu_conf.h" +#include "qemu_fd.h" #include "qemu_capabilities.h" #include "qemu_command.h" #include "qemu_hostdev.h" @@ -558,6 +559,11 @@ qemuStateInitialize(bool privileged, if (!(qemu_driver->domains =3D virDomainObjListNew())) goto error; =20 + qemu_driver->domainFDs =3D g_hash_table_new_full(g_str_hash, + g_str_equal, + g_free, + (GDestroyNotify) qemuFD= TupleFree); + /* Init domain events */ qemu_driver->domainEventState =3D virObjectEventStateNew(); if (!qemu_driver->domainEventState) @@ -1033,6 +1039,7 @@ qemuStateCleanup(void) virObjectUnref(qemu_driver->domains); virObjectUnref(qemu_driver->nbdkitCapsCache); virInhibitorFree(qemu_driver->inhibitor); + g_clear_pointer(&qemu_driver->domainFDs, g_hash_table_unref); =20 if (qemu_driver->lockFD !=3D -1) virPidFileRelease(qemu_driver->config->stateDir, "driver", qemu_dr= iver->lockFD); @@ -20259,6 +20266,39 @@ qemuDomainFDAssociate(virDomainPtr domain, return ret; } =20 +static int +qemuDomainFDStore(virConnectPtr conn, + const char *name, + unsigned int nfds, + int *fds) +{ + virQEMUDriver *driver =3D conn->privateData; + g_autoptr(qemuFDTuple) new =3D NULL; + size_t i; + + if (nfds =3D=3D 0) + return 0; + + new =3D qemuFDTupleNew(); + new->nfds =3D nfds; + new->fds =3D g_new0(int, new->nfds); + + for (i =3D 0; i < new->nfds; i++) { + if ((new->fds[i] =3D dup(fds[i])) < 0) { + virReportSystemError(errno, + _("failed to duplicate passed fd with ind= ex '%1$zu'"), + i); + return -1; + } + } + + VIR_WITH_MUTEX_LOCK_GUARD(&driver->lock) { + g_hash_table_insert(driver->domainFDs, g_strdup(name), g_steal_poi= nter(&new)); + } + + return 0; +} + static int qemuDomainGraphicsReload(virDomainPtr domain, unsigned int type, @@ -20804,6 +20844,7 @@ static virHypervisorDriver qemuHypervisorDriver =3D= { .domainSetAutostartOnce =3D qemuDomainSetAutostartOnce, /* 11.2.0 */ .domainSetThrottleGroup =3D qemuDomainSetThrottleGroup, /* 11.2.0 */ .domainDelThrottleGroup =3D qemuDomainDelThrottleGroup, /* 11.2.0 */ + .domainFDStore =3D qemuDomainFDStore, /* 12.0.0 */ }; =20 =20 diff --git a/src/remote/remote_daemon_dispatch.c b/src/remote/remote_daemon= _dispatch.c index 7e74ff063f..bbf39be748 100644 --- a/src/remote/remote_daemon_dispatch.c +++ b/src/remote/remote_daemon_dispatch.c @@ -7163,6 +7163,42 @@ remoteDispatchNetworkPortGetParameters(virNetServer = *server G_GNUC_UNUSED, return rv; } =20 +static int +remoteDispatchDomainFdStore(virNetServer *server G_GNUC_UNUSED, + virNetServerClient *client, + virNetMessage *msg G_GNUC_UNUSED, + struct virNetMessageError *rerr, + remote_domain_fd_store_args *args) +{ + int *fds =3D NULL; + unsigned int nfds =3D 0; + int rv =3D -1; + virConnectPtr conn =3D remoteGetHypervisorConn(client); + size_t i; + + if (!conn) + goto cleanup; + + fds =3D g_new0(int, msg->nfds); + for (i =3D 0; i < msg->nfds; i++) { + if ((fds[i] =3D virNetMessageDupFD(msg, i)) < 0) + goto cleanup; + nfds++; + } + + if (virDomainFDStore(conn, args->name, nfds, fds) < 0) + goto cleanup; + + rv =3D 0; + + cleanup: + for (i =3D 0; i < nfds; i++) + VIR_FORCE_CLOSE(fds[i]); + g_free(fds); + if (rv < 0) + virNetMessageSaveError(rerr); + return rv; +} =20 /*----- Helpers. -----*/ =20 diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index ec71eaed87..db255ac125 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -7488,6 +7488,27 @@ remoteDomainFDAssociate(virDomainPtr domain, return 0; } =20 +static int +remoteDomainFDStore(virConnectPtr conn, + const char *name, + unsigned int nfds, + int *fds) +{ + remote_domain_fd_store_args args =3D {0}; + struct private_data *priv =3D conn->privateData; + VIR_LOCK_GUARD lock =3D remoteDriverLock(priv); + + args.name =3D (char *)name; + + if (callFull(conn, priv, 0, fds, nfds, NULL, NULL, + REMOTE_PROC_DOMAIN_FD_STORE, + (xdrproc_t) xdr_remote_domain_fd_store_args, (char *) &ar= gs, + (xdrproc_t) xdr_void, (char *) NULL) =3D=3D -1) + return -1; + + return 0; +} + =20 /* get_nonnull_domain and get_nonnull_network turn an on-wire * (name, uuid) pair into virDomainPtr or virNetworkPtr object. @@ -7935,6 +7956,7 @@ static virHypervisorDriver hypervisor_driver =3D { .domainGraphicsReload =3D remoteDomainGraphicsReload, /* 10.2.0 */ .domainSetThrottleGroup =3D remoteDomainSetThrottleGroup, /* 11.2.0 */ .domainDelThrottleGroup =3D remoteDomainDelThrottleGroup, /* 11.2.0 */ + .domainFDStore =3D remoteDomainFDStore, /* 12.0.0 */ }; =20 static virNetworkDriver network_driver =3D { diff --git a/src/remote/remote_protocol.x b/src/remote/remote_protocol.x index 3c93203210..3ddfdd8bec 100644 --- a/src/remote/remote_protocol.x +++ b/src/remote/remote_protocol.x @@ -4008,6 +4008,10 @@ struct remote_domain_event_nic_mac_change_msg { remote_nonnull_string newMAC; }; =20 +struct remote_domain_fd_store_args { + remote_nonnull_string name; +}; + /*----- Protocol. -----*/ =20 /* Define the program number, protocol version and procedure numbers here.= */ @@ -7119,5 +7123,11 @@ enum remote_procedure { * @generate: both * @acl: none */ - REMOTE_PROC_DOMAIN_EVENT_NIC_MAC_CHANGE =3D 453 + REMOTE_PROC_DOMAIN_EVENT_NIC_MAC_CHANGE =3D 453, + + /** + * @generate: none + * @acl: none + */ + REMOTE_PROC_DOMAIN_FD_STORE =3D 454 }; --=20 2.43.7 From nobody Mon Feb 2 05:58:32 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass(p=none dis=none) header.from=nutanix.com ARC-Seal: i=2; a=rsa-sha256; t=1768388370; cv=pass; d=zohomail.com; s=zohoarc; b=FA2lJSnxzalHwNvX0DLebRiaiZ/CcGVkBSdWvrZuJ+9rP407wC13NjSR/9VsfkINcSzbqKAiIwbUFgeVL+/PxNrlG4MMcdkQOryOWksgmlDjIT0iSMqZiCEHidAyXi9T6kW1dwFKwDY5OztssfAQx6HNAs4dOa7MBAfdlGWbGbs= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768388370; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=LkSwsEBhFu0FOKrDbxMoxAU9DbzZFcdbLEBmTCNnFtk=; b=V4CSsOjUKBWrTtMgDVen/iQAPiwRRNaJNlgkY8bJTl8KVFnJYOgE0JORB+SwZcx1f/6hUoa5TWBQtp8q/EoO53MxJkYnYjX7VSWm+Od0cS5RLYXmVaEwj8YtgdtKyq7UZV8LsKa2GPaAFjBI8hSxEtZIKKJuKzS6gXrDZO3sjaY= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1768388370714185.94045378914916; Wed, 14 Jan 2026 02:59:30 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id D02AB418B4; Wed, 14 Jan 2026 05:59:29 -0500 (EST) Received: from [172.19.199.83] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 2A13541978; Wed, 14 Jan 2026 05:58:13 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 2279A3F293; Wed, 14 Jan 2026 05:57:59 -0500 (EST) Received: from mx0b-002c1b01.pphosted.com (mx0b-002c1b01.pphosted.com [148.163.155.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 95B91418F3 for ; Wed, 14 Jan 2026 05:57:28 -0500 (EST) Received: from pps.filterd (m0127843.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60E7W6rW2336179 for ; Wed, 14 Jan 2026 02:42:27 -0800 Received: from bl0pr03cu003.outbound.protection.outlook.com (mail-eastusazon11022079.outbound.protection.outlook.com [52.101.53.79]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 4bp6uc8hec-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT) for ; Wed, 14 Jan 2026 02:42:26 -0800 (PST) Received: from MW6PR02MB9817.namprd02.prod.outlook.com (2603:10b6:303:23b::15) by SA3PR02MB10162.namprd02.prod.outlook.com (2603:10b6:806:396::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9520.5; Wed, 14 Jan 2026 10:42:25 +0000 Received: from MW6PR02MB9817.namprd02.prod.outlook.com ([fe80::86e5:3449:a3f7:ee4c]) by MW6PR02MB9817.namprd02.prod.outlook.com ([fe80::86e5:3449:a3f7:ee4c%5]) with mapi id 15.20.9499.005; Wed, 14 Jan 2026 10:42:25 +0000 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.7 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_LOW, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= proofpoint20171006; bh=LkSwsEBhFu0FOKrDbxMoxAU9DbzZFcdbLEBmTCNnF tk=; b=RzCcIQMj67zlJa/xdthtCNqmI61ElN5BZDtHWSZ9UaN0j3wYrlhT/X+G1 1aUwfyo8ZYLm07+snYAP+TqxlT5QPXn/RwGNUoYJe0dCYt2dSy0QvnGH8ZWyvZFf GJFaOGfFhwW2vw6XvAEEataObfi7MJseq5YolJ3Qg1VPv7bm7BEcOtPQV4xSXqTo vUwUqImmsCuQMFY4QP3wmwIQJzh+l5QlNVpWcf0PXK1dOXpjTPJaFTiCzssKJViA T/D1J072c3nHBaMK+5jXuwsFIJf3mhUAHwwEtSt2lYb72Uozljz4+Q83TQO+xtav K52bS9Itkoe8UoFFy460bIuiEK15w== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=r79fsB0XgNwFMZ0HRMZWkIRXhePqHep3wp7EmJVOwxG56sK67PRhr0tfRndLONcQFGMDfkKpQW4qStJUTFcYRSJRQCP6ajtmtl8H4c8dKVVVgSWc8izy/TmYKIck9HDQINCUYE9vZLJX+cK5p6n/6t1svYS8CbGRehTe3cx1AD1MtxqiS452aIbHrB8cz6tQdC3qdUGMogwbTAVGkddYiEVwt2U1Md0jxl7lRieNbbfah+Ood3hc81Zh9lylfgueGss4X31U4VOUSpTWYwe747H5kxCwFo7AJHUn8W5CdA9kms+Mp8f635fyLp6VyzvlMxGty8NHhSqU4Ra4lGde5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=LkSwsEBhFu0FOKrDbxMoxAU9DbzZFcdbLEBmTCNnFtk=; b=AxaB1x/x12hL4Ywquli+84kPQ8+iO48mIXoulzA+mP52T/mIwjY3BVOXYD1u1hz/+inipc2xl5t3G6hyWkhp4b0uJriP8jGfjvYWXNeFahRcT2hOUE/3cUIpfKiOnjcCtJOO6KR3Q6LG0Lub1QDaoqfC6j3BuM7S+act+UBwvsJJuVnz/x62kW+/i1DOpUJAtxnUVj3hL/vHP+iG7vy1DFQMVDwmxCV7cv/z38t0eDwGsWHLvUSw7Ah6oG2BlnAi1bsqqMvg9drbR5o62u9j8NTGDOshv3XswSL/zBUeIGn/JsbVQrtUjD7XRnZRzjKbpHFggJKCqV3ytsJaUWBURw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LkSwsEBhFu0FOKrDbxMoxAU9DbzZFcdbLEBmTCNnFtk=; b=qgfoRbM/PsnHJixYurS/SnG6ONyr7lfapvtpCVhSWsEP7bpfRRRCad+Od10VqGiCiTOjw6+OOazgvgMp2e4ac8jbN+Wi0VWx+17ngE3xFMKneBMYaz0D2gMIYhF5kgutrAhrG5L/3FNS4QVF+QRVHreh7tao0YbMCdzw7ceF4XMg3JGsORsa+ZKpEFHbfXZG3M3JVhUE+rDLnvBsT3aksmn6LyKdNXmCWW3LVpCyP6FwuZ2P8tKodFW3XHeqpFReTp7bgzbFpusDyPsAIuxtVQjq3BXw9IoWTwMvaohxVZhIQ3PVlCblRMaFKWSKDJ4Enj2xosV4aD8fO6QZeNfDvQ== From: Tejus GK To: devel@lists.libvirt.org Subject: [PATCH v1 3/4] qemu: support incoming "fd" uri Date: Wed, 14 Jan 2026 10:42:03 +0000 Message-ID: <20260114104204.4071940-4-tejus.gk@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260114104204.4071940-1-tejus.gk@nutanix.com> References: <20260114104204.4071940-1-tejus.gk@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7P220CA0047.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:32b::6) To MW6PR02MB9817.namprd02.prod.outlook.com (2603:10b6:303:23b::15) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MW6PR02MB9817:EE_|SA3PR02MB10162:EE_ X-MS-Office365-Filtering-Correlation-Id: 8fb4b24d-b509-415b-cbbf-08de53599ae1 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|52116014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?M3OAht/TD7qmmGP2SPTw5WBgeK5hXxv/01508KB/GyLsuQGVlRCzktRHNyjS?= =?us-ascii?Q?bTKa8aRxOEdeeQCGTnMnY2Zi5w/kR3PdAV7IJKP2ozEZMT0eml9QLRas7FcL?= =?us-ascii?Q?1KFqyS38bXyUMlnzPX5lZQh2JN2xq9qEcWYtRBI3Gl5NMfVvI3BOiozvxiAu?= =?us-ascii?Q?twWb4zFlsn9dUHNiYFEqW5egEUgVRl0HNLxN7B1bLp4qB0OTEOZ3R7rkStlZ?= =?us-ascii?Q?BXIzPx8Mn+2oY5VgGrag8pJiI8nrSWk4BIhONvHq0GSQt4uCiDx+Kd+rYUBR?= =?us-ascii?Q?GAaku4KUy3Ps0h6Kz1Xrap4gOqGrMBAFobrP8VBwEBPdTMT3mtuZMjFIIGP3?= =?us-ascii?Q?Bawg7A1/vT1LTUtOjEd6iEQ5gHBPnrhf8uEUGuRmm97OKcXD2NoQlVWTzFgu?= =?us-ascii?Q?m+nxkgVyW2xCrPLrAEktogEmEF04a/+oSd1VKcP4PqSBeD+A5366pSmvwEUs?= =?us-ascii?Q?sqaoF8Pl38VbmjNlzYq5h+rii3lkFaxVOD9WjLFbj9WgL5X3q3YQUeX/lJex?= =?us-ascii?Q?jt8/4fFPRmqwMw7wHrI5HU9ynE1/vSoyCyN0mFkbV8yJcgMGc2ZW5ma4ljT6?= =?us-ascii?Q?p1Ve+9fcVFUS4RWEKTj+08bu/hhQ7rvRBpdpyTxiF3nfgqpJIqoY+QQhPnt+?= =?us-ascii?Q?BYQZe5ZN0hUaHQO/94EdF8PIED+txua/ZgFP30TzLNhbFsSP7a7R55e7meeK?= =?us-ascii?Q?hHWK5F2+Tyt2HGLfIVc5p2zqZqMyVbV0xVsjJ/qrAR0W8jVSI1HVSvqfBAvo?= =?us-ascii?Q?u5byB2dPdvnwcthzc//P4kR6+0r79YPElhcXOZMoJuXN2c/0nz3ScohO14hN?= =?us-ascii?Q?YcDFKMnRqibrQBSkISVcoCn1h0by2LxsjPS7Yp6MiMBtiN/unD9X5ker6OGe?= =?us-ascii?Q?KblMvf/aAWGobxl17ZVC658lJQHI6zRHNqj8/qxNwa2k3iEh0yB9pOLmmfyq?= =?us-ascii?Q?5cQbpydhqJ0NI65ra41vOkfXTFkEoJBVIJB6j0yLXKVtAFFJ7+PBQI9I2xug?= =?us-ascii?Q?iWSRazRdPkeSbKl8Tek0ZNPwHnvHmgSO2j0puT5cFpT513fxt3vc8e22JKHS?= =?us-ascii?Q?1PlDyf+BOKi5iJzhUBRsUKIPRSNv9pgUf4TfekfhflKkHFH4C1ofWUzPsBu3?= =?us-ascii?Q?jRfxCZW/8dIBFvQV5PLLW4+G3vqNYlCEivHtT16dl/ccq7v8ad8wXzK5pNzm?= =?us-ascii?Q?uxxMez6xFDnyEssY6ZcN6bVyfen93dBditj68yvAeLXgw4vMOymvBnnc9smo?= =?us-ascii?Q?JdRIUB7LfU/Vni/MVuWmkehjobafIOFYvgwbiXv5Hdjz1TOGYVmFcVO50JnC?= =?us-ascii?Q?oV6BDDpiEin3+DcVhko7GVVeSChXfxPRcpGzEDP40jWb6dFCUIMWE8P8DNhh?= =?us-ascii?Q?oLVZu6GZE73B9+qGIf9ZluzM6p3lunogbyn4R5N8YGa/Ms1Rht+AQ7I9fCtj?= =?us-ascii?Q?du2/qQF9I/2aKF59kKbBYa3mIVbfsCcxAvFT/N6rx62fGwwbDVIWDiz7nJOB?= =?us-ascii?Q?FxMlP8lpZqUJ92cXW7UFIhKTpFnO/ctYpWPVvhrSpljHRspEvnV1R6BLN+ye?= =?us-ascii?Q?EZkWX6lodN1+yOryi7LqN+u5SbugHsbNQ1xmKNTAzZ2eejIWgpLSSnkxwkPA?= =?us-ascii?Q?Wfgz1ddXYWTeSHzQeQe3gjk=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW6PR02MB9817.namprd02.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(52116014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ZGBqZqBY3d3/DjRdrvD/OjTGwnW9TY+mrUex8cd3jT1l4CU3fIJaDuROosvW?= =?us-ascii?Q?inaCYQC7H8/GOklKYaKqfJcEAqqrsR0bzrU6ZnphDc7gVFPLemM4N+USaAiK?= =?us-ascii?Q?1nH2KliF+/pMDwh80oLf3oHDgteb1s78FIW1TpNYLNF0kXhct8CdGEs820Qo?= =?us-ascii?Q?LgrKMxiXJHXjPhMhIvkv/Xr1wPvdR5x5Tf9hgwKaTDZ/sxJIJ4IAqZPw82FB?= =?us-ascii?Q?2jJBQd5HxWys3wwCV5izLJUOHNNzGwoWFyVkiaoZNNApLsBMtc5butnDwo1I?= =?us-ascii?Q?RZ9tvtWAG8eueBwuQ8tkEC24Rdi0JaloKRvC9cW5IPdo5bVN84o8sWrP9Q8v?= =?us-ascii?Q?NeBcGF5gWVyB0oQ4KD/Ta+2yxG7J1ZEzNHPAetc5cvOkfFg7IxIkl54EvRIm?= =?us-ascii?Q?5spOEbDLWsiVWjJ3U1u9SrB/uv0FFg6YZEF7so+n/l0H8R329zOo536zA5On?= =?us-ascii?Q?+85dxc6PZJR+2W08akFqKpenVNT2euGlzxGmcMRF8P4/nAn0/7t3rW0dg8iD?= =?us-ascii?Q?OzQ3+K3eeMcociWNF5s3aGzJ/Eipd+HQXUhWRnLk8MtEiiDOfreNejGEKL9A?= =?us-ascii?Q?f2yQXf2EfJskOqDc4VmDxwnIT5/3Bf+T22iMKRQFVAn1yy5VvQf70u2iHxRJ?= =?us-ascii?Q?jWp0FYpR6cOy8q9eiscbJqEqJ09b0FWH5faMTIg8VKh+ud62W5l2eqC+k9GI?= =?us-ascii?Q?4YHRq8QPdMk2plmSAy4mY55jSd2fxDzgoOL0cDvQemqq39X9MG7rM6DpvMJX?= =?us-ascii?Q?y8XTVll94fmD9KQjvoed7lwcvgR4dXQ376x7R05+9xHPw0BUpSwd/Hc/QgjB?= =?us-ascii?Q?AMOB+T9DQiUvv/vheqKvYCug6WzmE07GhYTeqBuHKf4fydx6+byvUBHnP1SL?= =?us-ascii?Q?oUexaclXPmfviNqLHVnAMUKSISIPVqoAc2KaJRyzvLGxsX1wZHpqBT2SOFOU?= =?us-ascii?Q?9lRAhwE7tHpBb3b5D5/nt1rvQVqU/YxNJvjRKbFM7nV1Tekpn0b1jJqd8GMI?= =?us-ascii?Q?cbzsDSHFis82hTigHFH9XZFd4B1UeKzdEk3RDcpnmgZTkKJXyG/7dlwWRK3h?= =?us-ascii?Q?oKaU0A4hL5j/JX7lLQ5WfrKcvkoRfZ/OQIXFPYd6pyYdnVCumJmVw7X8qeUG?= =?us-ascii?Q?kMlwXQqqE8I6icycH6ekoe/scv8I0AYTdnOsDvL3HQh6jaMapzGaXx6oonD+?= =?us-ascii?Q?fLrjZkAC580CP1E5qxHyM154mAA4EBsW5U9iyGenI2fs57UTV479Hf3Otj5W?= =?us-ascii?Q?bYa8mfQIVwQ/11OfNTFjHqUFf5LdNTgBdFLp4eD9Ama8m/FCieBJJXPytTL8?= =?us-ascii?Q?okbX1+PL5fivBuBUHDjRZAGkccx08qw4khyrYq7pNOaQz0zWDfewBRYZeBIp?= =?us-ascii?Q?ez0JCiHB6DRLCNWABRPzYXx0X9GEbZfnxtMvVC+xaKU67l3yIqrbMXN55Dl7?= =?us-ascii?Q?YipRg8r6fREU3xwpRAmurfeMFfSMiO6MTq/qAWf1inFwWT6x/kq3Z8++Nrz+?= =?us-ascii?Q?9hP7Jg97+h5EiwMy/HTVbjyfJB7idhKPptQR2DCzDyvKb8+vAnFk1NYQQs5P?= =?us-ascii?Q?4e+8D1cIvOuEioDWi+zBTevZrxKNkmfhkxaM7aPUnFu+V5D2wZT9/sMP6kfr?= =?us-ascii?Q?FSbH3VtYbun9VkbOW1B8DLh6+51KuaO4S+bfw3UASTvA3yttR8w6bFvU6B9C?= =?us-ascii?Q?xl5kQyRD6ISIp7PorvVHFh3f3mK8s7Hc29U0YLqOu3+z+7oe4l/gKrJZlkzO?= =?us-ascii?Q?8q3Xc+xunw=3D=3D?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8fb4b24d-b509-415b-cbbf-08de53599ae1 X-MS-Exchange-CrossTenant-AuthSource: MW6PR02MB9817.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Jan 2026 10:42:25.0761 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Ny1kpyg+nl5M+l+2al04ImMJ3gAPGUvstZC+Q/FnwOxGChsXdMPRXV6o9L9/L6tqWjuxzljd8nbZGKWouXewaw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR02MB10162 X-Authority-Analysis: v=2.4 cv=VqYuwu2n c=1 sm=1 tr=0 ts=69677312 cx=c_pps a=Y1/fp9MKcFODYkh4PiV91Q==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=vUbySO9Y5rIA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=64Cc0HZtAAAA:8 a=GR-S2WcxZ0DJ0wsWDE8A:9 X-Proofpoint-ORIG-GUID: NWQdjzZmlUwxbMVEZZSnJBS1wJnRsE1D X-Proofpoint-GUID: NWQdjzZmlUwxbMVEZZSnJBS1wJnRsE1D X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTE0MDA4OCBTYWx0ZWRfXxey4Gq7C6p3+ h4myEKOxnSO+ImcEoBI6G83TRtxaDfzKP2cfxU6njbM6A62UmxhFt1xa2sA0kozNsk4kbPuIq+c TlqXv6I1PYc0UYM371LOWLx00+UMvNygXSLvcpfs8btNvoXihm5ErTktTKKJxeuQCfL7l3uaw3K SdHQ1NTmjvvUfvbYFlxZLN1X7NTc9Zzk1IINBKesjV28LYbJMEdMTZ0c5jlu4o3pJcpG5k+sNxY yaE7tr0lAnfaVX+AKAKFe8Yxc9Vf0D313iRqsrIPFL4cju7H0P0BcJI4+abg194DKpMhZmGBzk/ +Tu7v8rDKeO2n9AGL5q/OxJJcud+DTja3Q9VNHarvWH6OSj2XK0ytc1HnOXaqd+r6tBKhcs018d SfTsOshD01Hdly1sPxcbzCBOhzqdyZCPJF89wgAUeI9YQKUxOn5uxNm0NfH3FgHyD/RJf6sUMfH m11Ad/wqd5zFwjCnKHQ== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-14_03,2026-01-09_02,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Message-ID-Hash: A46GZAA6XIVBQ6OWSAOVXQPGJDYAHRU3 X-Message-ID-Hash: A46GZAA6XIVBQ6OWSAOVXQPGJDYAHRU3 X-MailFrom: tejus.gk@nutanix.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Tejus GK X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1768388372314158500 Content-Type: text/plain; charset="utf-8" If "fd" is the choosen protocol for the live migration, the destination VM should start up with -incoming as "fd", this patch adds support for the same. Signed-off-by: Tejus GK --- src/qemu/qemu_migration.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 6dd022163b..0cd417c15d 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -2427,7 +2427,8 @@ qemuMigrationDstGetURI(const char *migrateFrom, { char *uri =3D NULL; =20 - if (STREQ(migrateFrom, "stdio")) + if (STREQ(migrateFrom, "stdio") || + STREQ(migrateFrom, "fd")) uri =3D g_strdup_printf("fd:%d", migrateFd); else uri =3D g_strdup(migrateFrom); --=20 2.43.7 From nobody Mon Feb 2 05:58:32 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass(p=none dis=none) header.from=nutanix.com ARC-Seal: i=2; a=rsa-sha256; t=1768388134; cv=pass; d=zohomail.com; s=zohoarc; b=KjThfCw3rYS5GSRuKVBhefbcmsG4pItU6lONomJ1PVe3FNX6X+k2BoBGQudQJW9ypoOC/7HSMx81w089yhr9b8+c1zoZvhjTQnpaKyiOCy0LmQjS0gbiCmXnkB5Cxv5rvN8EIiyqmxabuYR/ndijgFLot+eHNiR9Y4fAuCl3Qz8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768388134; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=/YZr/7ZqiXzugDZohjv2eH8Ggmrew0im9tct6uix0NA=; b=AczztzOCWHuoUC6t8wxKE+1hdAq5ekAQ4TBydNCN1nmZ8aVNfKVvf9Zghq5zWWxf20PazwBHKkONwXW6VsjRpQlVkcPWE8NMQWzfMQ8TTaK83PKOLMYKq9uPS8PNnpohq2nm4gPJE1+tlHauq3Hig7Kn4j37Q7xyEvcuat/zHGw= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1768388134600561.281767679099; Wed, 14 Jan 2026 02:55:34 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 91A484195D; Wed, 14 Jan 2026 05:55:33 -0500 (EST) Received: from [172.19.199.83] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id E1D4D418C3; Wed, 14 Jan 2026 05:54:24 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id A55EC418B9; Wed, 14 Jan 2026 05:54:15 -0500 (EST) Received: from mx0a-002c1b01.pphosted.com (mx0a-002c1b01.pphosted.com [148.163.151.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id BD3A84189D for ; Wed, 14 Jan 2026 05:54:13 -0500 (EST) Received: from pps.filterd (m0127839.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60E4X9uQ3974439 for ; Wed, 14 Jan 2026 02:42:28 -0800 Received: from bl0pr03cu003.outbound.protection.outlook.com (mail-eastusazon11022143.outbound.protection.outlook.com [52.101.53.143]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 4bnthd2g2c-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT) for ; Wed, 14 Jan 2026 02:42:28 -0800 (PST) Received: from MW6PR02MB9817.namprd02.prod.outlook.com (2603:10b6:303:23b::15) by SA3PR02MB10162.namprd02.prod.outlook.com (2603:10b6:806:396::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9520.5; Wed, 14 Jan 2026 10:42:26 +0000 Received: from MW6PR02MB9817.namprd02.prod.outlook.com ([fe80::86e5:3449:a3f7:ee4c]) by MW6PR02MB9817.namprd02.prod.outlook.com ([fe80::86e5:3449:a3f7:ee4c%5]) with mapi id 15.20.9499.005; Wed, 14 Jan 2026 10:42:26 +0000 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.7 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_LOW, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 X-Greylist: delayed 711 seconds by postgrey-1.37 at lists.libvirt.org; Wed, 14 Jan 2026 05:54:13 EST DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= proofpoint20171006; bh=/YZr/7ZqiXzugDZohjv2eH8Ggmrew0im9tct6uix0 NA=; b=x2EQuhFnnRNE7nzrndGp/V+taDvznI1zPl+zw8FvyMvuaAKzjWb3u4Wip exEip4xhnC83c5sQLXw1d+YkLv1lFm1HcI/zbBlAUwZrGT30WG7aDxI+9OG2BGFc rjmRy4+ek2Hd8M7sTTd31i/316v6F0YNJZOesHYKfVD5n6N2rGIFQ2YzfhY6kt8z ICb2WB47lwfNLOvXSvOzvJ6EpXgoQyQ3UXxRaVbbEyNzh2G9E4MvN2FsDY+MjwTO z/9MVFwQAEe1CvCTvKMs4k14gB/TEfuVieE050TpDBa9IF5sGPXp33dSbE+FN8ys CVk3U6uqQMiIwbxVU0/wd4PqRFoqw== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TLbd5XK78lhMWnUbwOQsVr0AeJtCRliOG7vOhykemqgzLO6fKi9ZUmAkikR7dfh+JzriRCdjldDyn8CzsvjgdGB+V+UmP0/+cvSkSIESTMrdlLAUd0ZM24jpTZicf3QV3vzSTEGjrdixPVo6hwEDad4SFkKsdyTXZfhGPu+Kv9IqE4vckrzVLRY3QaWknCNlOkNYZChZmhRv+ahV4jrue03lzm/8EGxMr9GAO7SltOLvZpBkn8W1GH+M4mOT2p+Vzjn093I43PaHDcK1slUdbFvhKgqdkHywjgv/xhdf9slQ8UhqJt1w5Z3m7VmoF+COY5bmVTsij2Z4eidZWeKiVg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=/YZr/7ZqiXzugDZohjv2eH8Ggmrew0im9tct6uix0NA=; b=lLLKbqkbybjFp39qkooOCqUxsdEW3dEwAgnyyzs/Y5Gb3Z45GGrqOUNQ6VFUYKIxZZJRdopm3q79IFaK0/aLc8amgXMUn+qrUsdh+1HWqE4P6lVY9WObF9iXL3aWhREd10OuM3na8KyqJXRP5yKeZGOkVkeHIzH38dlOyTP2tvgjabX2RlBG1Z/wKTFjz8U+8idCtSmtUadxG9nZwVmdwwUYFK34u3imWKKBRIVx0KGir+JCsBLuWK0ImNIcOsT6VlMEQDQA4Wd8qk9Q+9cog/jAMhN/PiwqIuzppbQa6SWxqvYYysIadSj2FLaK3pJf1cwKdyIW03hSUvyu5fgLxw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/YZr/7ZqiXzugDZohjv2eH8Ggmrew0im9tct6uix0NA=; b=iATv34Vzaa4g73r6O8zU9h2EJXcZ1S6f6EmPjqDHKa8pf/o65ucuAqAJ0XLpraGXFB+zb/c11LjOT43b+WIWgItjYBjLKtTJsq5tjiujqqnPoE14bfvJOVivoaWIhOhm5aOqwyMq2dbSdHF4bsl8g6N2qAUHHpZXk9zFae7K3BLzhtqj8TPNW1CnqJ1T8iAg1D2t32XWW/n79d2GzfH2exfo/MzvSzeo9yUw8IECYoZfCVqxGSVHs/1OD8LZ+46urlNhpvEImjZwdH51DfoJXci0d0nMhPE9c+xPtVIWxmOSiSFrKcYOMeL5cE19FgEBeSu8m/eSnvgLmKWNb28Skg== From: Tejus GK To: devel@lists.libvirt.org Subject: [PATCH v1 4/4] qemu: add support for fd based live migrations Date: Wed, 14 Jan 2026 10:42:04 +0000 Message-ID: <20260114104204.4071940-5-tejus.gk@nutanix.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260114104204.4071940-1-tejus.gk@nutanix.com> References: <20260114104204.4071940-1-tejus.gk@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7P220CA0047.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:32b::6) To MW6PR02MB9817.namprd02.prod.outlook.com (2603:10b6:303:23b::15) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MW6PR02MB9817:EE_|SA3PR02MB10162:EE_ X-MS-Office365-Filtering-Correlation-Id: 5ef76e82-dc15-4c85-a40e-08de53599ba1 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|52116014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?9dP5/+xGA4z98EpNUPQMYOOe1oWdCFM6AiFbAmThi7aFp8BviqAmCM6DYViY?= =?us-ascii?Q?uL56RwclAUc5hYoi2qUICfK9fAJlfPtCiuii0Wj4gv1HTAV6VsOjD0hayPT4?= =?us-ascii?Q?Mq9Wpkp5mgJhXEJzM4ukmqBF/ISfQqM/A6jcislyGPF4QoMdB9NsG32XxCY9?= =?us-ascii?Q?fLE5YIhmSZAEf9ynpjaAW46jZU/whNwbw5C7tC1vACLBt+ovbpWMCFt85dmd?= =?us-ascii?Q?iEgsTYckfzGeZN3zjBBwnvzKJZX1R3OuzOF22/LuM05xNh7lgm4H/zmLJHyc?= =?us-ascii?Q?+TqEv/QvVODp9JstFv358q6jl5QS8vDcgaiC26Uu32lSFSgWpEgALNbprZbG?= =?us-ascii?Q?LrJjJOocv2FRqZ8bVqna5Anhjar7Zm7jJgEVwatcPxoKuaEJZzY/o79y/7ek?= =?us-ascii?Q?5HR/vRbPqJoIEEAVfo6JgwS7Y1O0qwJTxqYxqCWSOb+GM776KG7PJ+b4jyY4?= =?us-ascii?Q?iM2/U8pjRAMbsRU/1bbeq3K++StRaUEnVeOeFewC9h/rJUOw2jJTMib4tQu5?= =?us-ascii?Q?IrM/0PpaviTze3D80njpGrgTwl05CLbPVjWVZtFQUlcOsCnmOhBDw8a4tGZi?= =?us-ascii?Q?qmxUFBNk3qI1bpc1qIU9HRio2bkpgXwwmvHR/yx6zt2NkD53e6RKD1lJ/Cb/?= =?us-ascii?Q?QRXCnHsZwOVI92ke7/rYhB1mn28UGvTKs3n034pbt7EgB3OdSOPzoa3Bllrk?= =?us-ascii?Q?OEGgdfHzeYwvCZU2geY1gsBKSprelfGriDnw9kUOkscM8tvdzAKX5SscjvR0?= =?us-ascii?Q?kEnjAiG74dJTcZIAq6QR+MfThSuceDpoIQs7wiQTCJK8w49BWlVCtqRQzNRh?= =?us-ascii?Q?bP9k/uZXwLEEKjfms9u1JMyUo9ZSs+bgl/cRI8sjQqtGtV77UwLfltihDMvG?= =?us-ascii?Q?SyroR7rtUaIag/0ajlTTlTYDTQQI/V1xEFJ9VGcHcUzypccoAvn3ICwMpC1N?= =?us-ascii?Q?6CG+r5DCqOpFNgO3WnbMjaEek4K/niQ6uXXrgqwkmgtcnE5BASMGOrJts7x0?= =?us-ascii?Q?0Da+OlV9uMD556yupvL5VaZzV7YJYMGpUWDq/OQl/IbSbyWnRX4iGiHU4I3/?= =?us-ascii?Q?N7KFMYGbz+kHA9Y2ZIHvTD1Ic3050oh7O9EDPluGk6WW5+nj8LEXKCjgE2+Q?= =?us-ascii?Q?OjDbsE+9iFQSin2U4WKbsfR8qMZpwvmMxh3CghKikK1OupO4fSSyU8az9Ld6?= =?us-ascii?Q?A+Cg7WCQgTG/dHkRrV2Q98J1DpmnJ9wXmHwi1a9amiLhuU12QA2wAVzFa2vR?= =?us-ascii?Q?S0hluHcC6f9ShpyFxDtzTxYcafShMaVO/F+zMLi5qrzIgCAyYG2e7Ci/DrsD?= =?us-ascii?Q?i4jQOI2kHee7zAsrHGC5erYtha+Wh5Fni9pJDjYwjAD/pRS/PGGIUQsgnBHw?= =?us-ascii?Q?iS0rpIS8hp33c4kx7+qJWthuc7dXNt5D02iL/EDuYwrxRSB22OvWRpdQQZYR?= =?us-ascii?Q?hp9jKRD2heCR9pbyIvGMOq6gxON0m2HhJpVfNFB2/IwOCWtcWedeVPoGKBFO?= =?us-ascii?Q?PrJCiRfybFkzf2yjREGOZ0gEj8XlYgMO8wM1fNdIgMqDHX0+fmgbwdqoE4Ut?= =?us-ascii?Q?V4OSRBjFs9nrSPtXQP4aA3F6PD4iOZBRuHhtDlVjh+ISwrj+t8fH7LQmYkit?= =?us-ascii?Q?/PGt1xKcJbiiXtfRr7mILek=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW6PR02MB9817.namprd02.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(52116014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?c5I4Ygm820bUjznEfHArh8oGx3nT4ghO4kPsa2FMupSHpgrIy8C9GZeK1NWi?= =?us-ascii?Q?dxcDetMZzr895/dgSjU6Vl6GOF6KYP/5V3JBEEygaZx0SKLzR3XkiYwsNadP?= =?us-ascii?Q?n+iZLf6sCCFQGuXvJyk0bphDPxHAItw8X3GgvXJNKMwi/CwcYKEU8TvzJMqh?= =?us-ascii?Q?IOClpIpFY13FKjiKy4JgLIIxPtAZVjbVImIwrs9Q/8iNYj5VWy7BB3j+iCHx?= =?us-ascii?Q?ZaqYSM5nykLdXZ491C27LLyn9gjj3z5GPFpaajj+hhr+2he9oiluR/epJ1pE?= =?us-ascii?Q?pFipHJdh9fMAVS8w+fX3G+jHXP1Yi8QTxBIOfnrDYyUwlkm1FpTrDr6kDDCE?= =?us-ascii?Q?h+9uwbhz0N4hwTaXw0k5WHN8D6pn3CwTkvv/pRtUEO2FZ91pUtfKs+IdEP4d?= =?us-ascii?Q?x26DUoKIi1SxGosR5jqvjJp6okeMwV3nWXKv9toeqRuzq5TIyaiECXEZCCYL?= =?us-ascii?Q?g7Ed/76FnRNCdKVZqRFHUyUoWzuowf0zVmbLZ5JylXExl9bG1cSrNqVxogys?= =?us-ascii?Q?IwyJX5vWNbf14FnIc6tQl9psQ64u1bTu4sUXZawktoUVyLeVr167qAW8mgkR?= =?us-ascii?Q?OBEB8zigoUnEJ90MZVk19wfNdRqR20pGrI0ePw+SNHP2jjbAqX6lwYdwGg43?= =?us-ascii?Q?ya7lYYW+PJCu09pi1dDfH5wLHKlCo3lPFlZG4JVuuclQCcss0XzVy/lnvDHX?= =?us-ascii?Q?ayggz+7kpX7CvjzumVEq8jTfaVXPWZg/A1Lu+voA7tpiq52+DB1etn2FN1Tr?= =?us-ascii?Q?CWzoeYtZzP/v3w7sEHAanaIizDNFkn2EPUo8mAR094EFBUGaS3qf0LxcwcKC?= =?us-ascii?Q?72ZMbUcpsbDDK4D+6dRZgDdxsisof0MIvwFtR0HeYEXiUVihhrcCJjeuSX3T?= =?us-ascii?Q?ZUAMDaK+XBFeRSZClwiaTNxcSaJvoE/d3Zl4jmahpTuTKtFZeRBM322nCC5l?= =?us-ascii?Q?x83WY/W6SMqDIxBVAAzFl3cnut+hq6nxheQyiAqqvjTDisLx+cnT7GusNR8F?= =?us-ascii?Q?qAVEcP9Ckv8BjkxVAYxtLuLrtlig82SIgAdNCDH3C6D6/+F9TMH06WuZInZo?= =?us-ascii?Q?RBntVawI29UM9uadzqzolQeaqjhiHmR3V0xdKj8ehinzIARTma66GIb+URws?= =?us-ascii?Q?h7yoiSgNR34737rgRyKX2XNOh5UxL3RtzNd4oE5f2inLVyp3AfUy+jJPx8hY?= =?us-ascii?Q?OG7HLhWiobFfXLGVNM0Cfr/0tu5yI3erCA/Y02p9ZSX/z9FFpxPpbFCPpax6?= =?us-ascii?Q?y1jLb7soMWpbx7v+9wy5TOWHEu0a4ypQzmGtja5An7Akp8s+tkTZOhFnaWVE?= =?us-ascii?Q?o0VlLuufL7OO36EP7QELNaF67F+NUNUd77CI7QRKVXpItt4qa/MoQP+lK52K?= =?us-ascii?Q?uKnM9LXs7mPI8+jn9jHcG4YyBOCPZvYebNRBHfjOFNA79R4ihhv7ACpZ7RVO?= =?us-ascii?Q?kmjNGQ4TColekDbzVlI/uhurOZpQLz1k0zePOpmU/LQ30Ja0XcesDVzX452z?= =?us-ascii?Q?j0QML5rWoT7TZnS09OhyyFFlRwHEKuCszLTgfkF3u37RlCGV811adn4i73Sw?= =?us-ascii?Q?IbmOs+8thAdRNe89gskw44nDmw84nr+POZR7SkenWOrTU/aj4nDjExT06Cl9?= =?us-ascii?Q?r8eGm0G7VMctNmpp5RXbn3H2Ib4TNDb9+iKSulCgQo+L1hWDwG8UGDZljEl7?= =?us-ascii?Q?cDRq7KXWE+VWD2TVPlulfX6oPSztYF7NV9NUJbzED2o0WpSbsisesztmlwQ7?= =?us-ascii?Q?DN9BAlyeAw=3D=3D?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5ef76e82-dc15-4c85-a40e-08de53599ba1 X-MS-Exchange-CrossTenant-AuthSource: MW6PR02MB9817.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Jan 2026 10:42:26.2455 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: KrgIi6re1E7IAIJsgCgA3MGQrOkWs7MR7GP569PVU49kPBo9F3IgACEYplJaC6aSoNkPLF8RpKOy/3HPqF2KNg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR02MB10162 X-Proofpoint-ORIG-GUID: oX8OxbRpvRUgiXiCI8pjxEZwkOybvEhQ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTE0MDA4NyBTYWx0ZWRfX4yEBPtfMYiDe 8FJVsTAYPv+lnk21K8i7vumud8UKWUWTebq/yxtNO55TpRiFGbp42qu7utAvghAtm+K/nzSXUjx wzXlY3Fr+yESgJQ/0eny57O4SE/mPRXvps5elc/0tf1YYq4ZRzkpEYTd0Q214wGoD1Y8lcVU8Oc mrBT7TDn/nBJJ4HMMvzZyFFDcsRrBopvfqCRfp8k3HY9AkdPiyjEDJ4bROSji4hAFGLmpPkFZx8 Hq7Qj+bD7sCcH7fsk1sbG0u5QhTpKc7OmhzX27o6Lusq38yQGcqsgkV9DHGj+VhsYpwlvBwq1i/ /yrRsQl0ZlNWYcZWgCfW9z4KBOj65D1PkxWjP83H2KnHJuOyelevpq3/jdkZq3ypE33eve1CXyZ JZ8XAvq+EXAV07TSiJMfr9TASuC3OIE1fWmmbwxAh+iQr9UjemhMYwKKxDPWjNvl3KgiRsjJ3PZ iNKOweYoDT8saVvraJw== X-Authority-Analysis: v=2.4 cv=L/wQguT8 c=1 sm=1 tr=0 ts=69677314 cx=c_pps a=taCrSF+MhsyXuYDq+ZG44w==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=vUbySO9Y5rIA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=64Cc0HZtAAAA:8 a=C-Ig0W4o5CX7Ube1sJMA:9 X-Proofpoint-GUID: oX8OxbRpvRUgiXiCI8pjxEZwkOybvEhQ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-14_03,2026-01-09_02,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Message-ID-Hash: 2XAQVCV5D4BK3HFEHEQA6MBTFGPVUGPX X-Message-ID-Hash: 2XAQVCV5D4BK3HFEHEQA6MBTFGPVUGPX X-MailFrom: tejus.gk@nutanix.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Tejus GK X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1768388136588158500 Content-Type: text/plain; charset="utf-8" QEMU already supports migration using a file descriptor that is passed to QEMU. As of now, libvirt, uses this path via the tunnelled migration approach, where libvirt creates a set of fds from a pipe, passes those fds to QEMU, and migrates the VM. This patch introduces supports for fd based live migrations in libvirt, where the fds are opened and given to libvirt by the client. Clients are expected to pass the FDs on both source and destination libvirt, via the virDomainFDStore API, with the "fd" key being the domain UUID. If the URI of the migration has been set to "fd", libvirt will try to look for an FD passed to it via the client meant for migrating the VM, and will pass on that FD to QEMU and trigger the migration. Signed-off-by: Tejus GK --- src/qemu/qemu_migration.c | 114 +++++++++++++++++++++++++++++++++++++- 1 file changed, 112 insertions(+), 2 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 0cd417c15d..66e1236e6c 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -38,6 +38,7 @@ #include "qemu_security.h" #include "qemu_slirp.h" #include "qemu_block.h" +#include "qemu_fd.h" #include "qemu_tpm.h" #include "qemu_vhost_user.h" =20 @@ -3137,6 +3138,8 @@ qemuMigrationDstPrepare(virQEMUDriver *driver, =20 if (tunnel) { migrateFrom =3D g_strdup("stdio"); + } else if (g_strcmp0(protocol, "fd") =3D=3D 0) { + migrateFrom =3D g_strdup("fd"); } else if (g_strcmp0(protocol, "unix") =3D=3D 0) { migrateFrom =3D g_strdup_printf("%s:%s", protocol, listenAddress); } else { @@ -3301,6 +3304,8 @@ qemuMigrationDstPrepareActive(virQEMUDriver *driver, unsigned int startFlags; bool relabel =3D false; bool tunnel =3D !!st; + bool useDestFD =3D STREQ_NULLABLE(protocol, "fd"); + int destfd =3D -1; int ret =3D -1; int rv; =20 @@ -3319,6 +3324,37 @@ qemuMigrationDstPrepareActive(virQEMUDriver *driver, virPipe(dataFD) < 0) goto error; =20 + if (useDestFD) { + qemuFDTuple *fdtuple =3D NULL; + const char *fdName =3D vm->def->uuid; + + VIR_WITH_MUTEX_LOCK_GUARD(&driver->lock) { + fdtuple =3D g_hash_table_lookup(driver->domainFDs, fdName); + if (!fdtuple) { + virReportError(VIR_ERR_OPERATION_INVALID, + _("no file descriptor stored for migration = of domain '%1$s'"), + fdName); + goto error; + } + + if (fdtuple->nfds !=3D 1) { + virReportError(VIR_ERR_OPERATION_INVALID, + _("expected a single file descriptor for mi= gration of domain '%1$s'"), + fdName); + goto error; + } + + if ((destfd =3D dup(fdtuple->fds[0])) < 0) { + virReportSystemError(errno, + _("failed to duplicate migration FD f= or domain '%1$s'"), + fdName); + goto error; + } + + g_hash_table_remove(driver->domainFDs, fdName); + } + } + startFlags =3D VIR_QEMU_PROCESS_START_AUTODESTROY; =20 if (qemuProcessInit(driver, vm, mig->cpu, VIR_ASYNC_JOB_MIGRATION_IN, @@ -3328,7 +3364,7 @@ qemuMigrationDstPrepareActive(virQEMUDriver *driver, =20 if (!(incoming =3D qemuMigrationDstPrepare(driver, vm, tunnel, protoco= l, listenAddress, port, - &dataFD[0]))) + useDestFD ? destfd : dataFD[0= ]))) goto error; =20 qemuMigrationDstPrepareDiskSeclabels(vm, migrate_disks, flags); @@ -3437,6 +3473,7 @@ qemuMigrationDstPrepareActive(virQEMUDriver *driver, =20 cleanup: qemuProcessIncomingDefFree(incoming); + VIR_FORCE_CLOSE(destfd); VIR_FORCE_CLOSE(dataFD[0]); VIR_FORCE_CLOSE(dataFD[1]); virObjectEventStateQueue(driver->domainEventState, event); @@ -3974,7 +4011,8 @@ qemuMigrationDstPrepareDirect(virQEMUDriver *driver, =20 if (STRNEQ(uri->scheme, "tcp") && STRNEQ(uri->scheme, "rdma") && - STRNEQ(uri->scheme, "unix")) { + STRNEQ(uri->scheme, "unix") && + STRNEQ(uri->scheme, "fd")) { virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, _("unsupported scheme %1$s in migration URI %2$= s"), uri->scheme, uri_in); @@ -3984,6 +4022,9 @@ qemuMigrationDstPrepareDirect(virQEMUDriver *driver, if (STREQ(uri->scheme, "unix")) { autoPort =3D false; listenAddress =3D uri->path; + } else if (STREQ(uri->scheme, "fd")) { + autoPort =3D false; + listenAddress =3D NULL; } else { if (uri->server =3D=3D NULL) { virReportError(VIR_ERR_INVALID_ARG, @@ -5411,6 +5452,75 @@ qemuMigrationSrcPerformNative(virQEMUDriver *driver, spec.destType =3D MIGRATION_DEST_CONNECT_SOCKET; =20 spec.dest.socket.path =3D uribits->path; + } else if (STREQ(uribits->scheme, "fd")) { + + if (flags & VIR_MIGRATE_PARALLEL) { + virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s", + _("FD-based migration is not supported with mul= ti-fd migrations")); + return -1; + } + + if (flags & VIR_MIGRATE_POSTCOPY) { + virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s", + _("FD-based migration is not supported with pos= t-copy migration")); + return -1; + } + if (flags & VIR_MIGRATE_POSTCOPY_RESUME) { + virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s", + _("FD-based migration is not supported with pos= t-copy resume")); + return -1; + } + if (flags & VIR_MIGRATE_ZEROCOPY) { + virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s", + _("FD-based migration is not supported with zer= o-copy migration")); + return -1; + } + + if (flags & VIR_MIGRATE_TLS) { + virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s", + _("FD-based migration is not supported with TLS= migration")); + return -1; + } + + qemuFDTuple *fdtuple =3D NULL; + const char *fdName =3D vm->def->uuid; + int srcfd =3D -1; + + VIR_WITH_MUTEX_LOCK_GUARD(&driver->lock) { + fdtuple =3D g_hash_table_lookup(driver->domainFDs, fdName); + if (!fdtuple) { + virReportError(VIR_ERR_OPERATION_INVALID, + _("no file descriptor stored for migration= of domain '%1$s'"), + fdName); + return -1; + } + + if (fdtuple->nfds !=3D 1) { + virReportError(VIR_ERR_OPERATION_INVALID, + _("expected a single file descriptor for m= igration of domain '%1$s'"), + fdName); + return -1; + } + + if ((srcfd =3D dup(fdtuple->fds[0])) < 0) { + virReportSystemError(errno, + _("failed to duplicate migration F= D for domain '%1$s'"), + fdName); + return -1; + } + + g_hash_table_remove(driver->domainFDs, fdName); + } + + if (qemuSecuritySetImageFDLabel(driver->securityManager, vm->def, = srcfd) < 0) { + VIR_FORCE_CLOSE(srcfd); + return -1; + } + + spec.destType =3D MIGRATION_DEST_FD; + spec.dest.fd.qemu =3D srcfd; + spec.dest.fd.local =3D -1; + } else { /* RDMA, multi-fd, and postcopy-preempt migration require QEMU to * connect to the destination itself. --=20 2.43.7