Received: by 2002:a05:6a10:d5a5:0:0:0:0 with SMTP id gn37csp3909565pxb; Mon, 4 Oct 2021 12:23:51 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxDHxqKdb7SwArU3cyxUmLCex6c3U1yus51I1VgMdJDQ9hGO1sNu6IgQZDaGSJO4K3utE0S X-Received: by 2002:a63:ea58:: with SMTP id l24mr12476375pgk.334.1633375431200; Mon, 04 Oct 2021 12:23:51 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1633375431; cv=pass; d=google.com; s=arc-20160816; b=MSiXiZhMTw6EYy4/U8j+nI7m/dt0gw/Xr7cqAA3sJP3UQP+pVAkSn/GMcNs5WZk0QO p6ab8mHMG0P3lJIYGNlL2cqEjmTGxxLZa2BRzRBwuhZk1t1wlA94n+ePrEcfAFEYqhFl b0QfVgp28pxpkWQgeb536KjBFg53Sn3sxYFgJ58sD207H3RMy5Z7hDgrEH7AJPT1nsiZ Rk8xOZIBLckuotMfg/mFJbyxMEPyMiocEEOYvZsa9HEVe0Vq8RKdvGBpRrhc+z3L4lwB W8UOG3gm0rT3H5yQD9sejpCWieboIoMwrqhCooEYdwoImrAbw9aa//nIgi2CTQmJhP/g eq3A== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :message-id:date:subject:to:from:dkim-signature:dkim-signature; bh=BY+JfaVugOuhjzQ2Bqe0DhDyXCAWezfBK0nGMTluqaA=; b=OOkzonZyccsaJ2WARQLISW9YLcdcdUIvQbPjI4r3/iJWW7zROitMgDv+HFZv9IYcfC m4quTbITsBCKBz+v0t5S0f1sPnwm9dS9T3PdYEoSO2wfMGm+IpBarhOy7UGKGJnSMlcl RHZOhMn+AOLt6aeEBJGVKxEhROjdRJC0kcF9vfV03JecveW2SOv3yJSOhU7E23VV4rR7 PQENxpw2X6c0Goph43B7mtuaMmOeF17nkgQLi47lxb16eJ//aVVWaozaWrck+/CkU3qW HE+DZ2T9PPtH7LucYvY5zIe+M6g6Kl8PgTP1L1jUL+iTEKdOiUrj4S1XRoNCYqiTV4/0 K2gA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2021-07-09 header.b=YuYfIHfQ; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=hvqgSBq3; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id i1si18364383pgs.197.2021.10.04.12.23.29; Mon, 04 Oct 2021 12:23:51 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2021-07-09 header.b=YuYfIHfQ; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=hvqgSBq3; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238490AbhJDTYN (ORCPT + 99 others); Mon, 4 Oct 2021 15:24:13 -0400 Received: from mx0a-00069f02.pphosted.com ([205.220.165.32]:5770 "EHLO mx0a-00069f02.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236730AbhJDTYJ (ORCPT ); Mon, 4 Oct 2021 15:24:09 -0400 Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 194IHEfV019244; Mon, 4 Oct 2021 19:21:41 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : content-transfer-encoding : content-type : mime-version; s=corp-2021-07-09; bh=BY+JfaVugOuhjzQ2Bqe0DhDyXCAWezfBK0nGMTluqaA=; b=YuYfIHfQQYvEs5MQJJb7nBHCWdgNB4O70WCgjggOsTN7rbIUmRqlzdAQ1TVEouEHXUbt 8Y38eQYu1w2A9R4ZwH8eee814LlUTWv0YCo1lFWprS2KgPoDBTk+C3T8yPiuEtkIS6gG VQuvvF9WI3PBwY9aRhLvwm3Q2VrKgN96afG8bgNoXx7RKYEVtJxR5rytRcStqJwPZ7mu WHfkXZeCU7QHzUNWfuWdKitlgcIUY41nytIhgKB8YCdlDgdFbcnM7IM509gMhbZicdds WsvX69dc42NDEfoloj0vuhcGOgzGBld5YDR4txpx7H13GPxGk8T1PbVTzHh3+VBJuNfp 2Q== Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by mx0b-00069f02.pphosted.com with ESMTP id 3bg3p5aat2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 04 Oct 2021 19:21:41 +0000 Received: from pps.filterd (userp3020.oracle.com [127.0.0.1]) by userp3020.oracle.com (8.16.1.2/8.16.1.2) with SMTP id 194JAcLt132330; Mon, 4 Oct 2021 19:21:39 GMT Received: from nam11-bn8-obe.outbound.protection.outlook.com (mail-bn8nam11lp2175.outbound.protection.outlook.com [104.47.58.175]) by userp3020.oracle.com with ESMTP id 3bf16rwfhc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 04 Oct 2021 19:21:39 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eVXNSPNBa/zklBoyK5tjZ6V43aPDp6sLTirHqnZl3C/IqdNBYWFP0DSI+hqrAgm7ZVdLpnsnzzFpWZa6duP/zi+JGjvJFRrBwjRxVpatO7HhXJL9knriyeopVhESDPoJlVGYlE0ZgAO0nCT+gPEQ4rK2z170Pfardq9+DiDu/dZ2Cf0/15dxQl8f8hUl/Lkzd5LhsR6EAZlsNO/zd0zxCUt/xwuQcacF5VWnuWLssivgA1tSmbt4S3Cx5ahdVSO3fmcIC9sivW5VnmPsfnOz8Nke0pLZpgWX9mlNAtt/AxgcMnvEW8ucDQSqYXgUKibDNDQCbJFSrtRjq2sIz9on0A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=BY+JfaVugOuhjzQ2Bqe0DhDyXCAWezfBK0nGMTluqaA=; b=NZFlo/Mgf+CxtStU9V/KdMLih380Bat4+ToqjAsQ8BEHXqQ+01t3M2gMXnF4VfDa35Den/6huIUa2kfjVOr8jYesfUuis/LRFl5JJnTzTHYqkvWE/QWsm+6pdbb7aTdY4rPPpTNNqoIZQVdrZLpq+2kUj050NbjQz5ixB8kX2fjot9UFOwEhY0lLUD8rfA4M3OFBa5QnRjdb4P4SjCg9D2k8a+BO+E9VZqAaNPelA5eztON29TZb1WK1FbW8zzrxJwXUfFbI1HEW3cmjOKP/SpS3jTri4PTXgC5UFuIOTHmYFy1Cw8vp7F/qjmznC9PA1BWvf1ceHLPde1h7gX/6hA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=BY+JfaVugOuhjzQ2Bqe0DhDyXCAWezfBK0nGMTluqaA=; b=hvqgSBq3BBlNXkEfSLbv+PPgaNW2MNvBa8ks8MRkXOQU5xuyba6CBltkEAKARiuvbB+4m/xuG/7UgCZaUEhPd7O9VABANFpnRiNQKSoaHmAz5gCXpIXzIj9OHJsjN4N+avaokFJr8vzQ5DkMdKAhIOvSRijFOkpSSgncHlK6Eqc= Authentication-Results: linux-m68k.org; dkim=none (message not signed) header.d=none;linux-m68k.org; dmarc=none action=none header.from=oracle.com; Received: from DM5PR10MB1466.namprd10.prod.outlook.com (2603:10b6:3:b::7) by DM6PR10MB3307.namprd10.prod.outlook.com (2603:10b6:5:1a1::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.15; Mon, 4 Oct 2021 19:21:37 +0000 Received: from DM5PR10MB1466.namprd10.prod.outlook.com ([fe80::195:7e6b:efcc:f531]) by DM5PR10MB1466.namprd10.prod.outlook.com ([fe80::195:7e6b:efcc:f531%5]) with mapi id 15.20.4566.022; Mon, 4 Oct 2021 19:21:37 +0000 From: Mike Christie To: geert@linux-m68k.org, vverma@digitalocean.com, hdanton@sina.com, hch@infradead.org, stefanha@redhat.com, jasowang@redhat.com, mst@redhat.com, sgarzare@redhat.com, virtualization@lists.linux-foundation.org, christian.brauner@ubuntu.com, axboe@kernel.dk, linux-kernel@vger.kernel.org Subject: [PATCH V3 0/9] Use copy_process/create_io_thread in vhost layer Date: Mon, 4 Oct 2021 14:21:19 -0500 Message-Id: <20211004192128.381453-1-michael.christie@oracle.com> X-Mailer: git-send-email 2.25.1 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: DM5PR15CA0034.namprd15.prod.outlook.com (2603:10b6:4:4b::20) To DM5PR10MB1466.namprd10.prod.outlook.com (2603:10b6:3:b::7) MIME-Version: 1.0 Received: from localhost.localdomain (73.88.28.6) by DM5PR15CA0034.namprd15.prod.outlook.com (2603:10b6:4:4b::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.15 via Frontend Transport; Mon, 4 Oct 2021 19:21:36 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c883166e-3d45-42b4-d8a2-08d9876c2f48 X-MS-TrafficTypeDiagnostic: DM6PR10MB3307: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Txvct5jgYZWIrj73qxjos+r5h5TKzmST3Q2wHZCLpulL4MiWoz4cZ/ykOQ40KQwF5U7S8PNDfsbs1AICrG9WJFRaJPzAEJTDjergh8cWSuQNP25/rj9RmNvlKwwHLUw8YoDjvTS3M5TVAAropaHgxI/jB5h9pB5+ZMbRw8bLvPVtvXx2lOwY0cqgjghvm8RZyjPAUCxE//iEOH1wCoDZqLzstDAyqo3uYHHchae9GdhUoqfp5xAYLV0FQ8dj120tEiquIk6AOz10/hSoGemKRBXJPqSWt60tdl/XBtO4boYOz26740tlukxE7tTBG3Y+YttWkHNGxgUuJ4TDSlH8Ve8HEEneqkveW8mBwIK5rRWDjcTrdHq+7Nt0TzBJBq/w5lfyXYSt6X7mFhz+ENRB7Gut2+cD6cUxE23as2CBqezogvYQA2Ok8sbssR007Ws3GhyRH6e3CESA2BHV7UDfIsIqVzMS19lUlNzu6h9rYh4gf7Pns1JQQax7IvcP9pty6MeVdDRRJZqazbuYYA1guWSeqyn5XzTOYbnM88drES3nz+aFz+/Wq+LCF5V09Y9efvNn8DQ1HUFu0X2l2zV7luRZGUeUDkTe7WM/9bLDhBEubkLI/kJ7myWa8GAW8KiBtRUbFWv+AaQTyQ5IsPNu7MjfzigP4nWVLc97LKmm6gdRAAKzyReB3pXpOV98X/Yl4dWpOXMWPWdY2oO91uY+2vbr0yAP2O47h6wGci+1yC+/jM1CSiRx91MAtcm0RjkEMHDa2bmh5ghSd/PKnvL4aqj8ChGNFUlHgLrAelqvdOmKnZITBymXnvQbb4SV87uB X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM5PR10MB1466.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(66946007)(66476007)(66556008)(36756003)(1076003)(6512007)(52116002)(6506007)(83380400001)(2906002)(8676002)(8936002)(6486002)(26005)(6666004)(186003)(5660300002)(2616005)(7416002)(921005)(508600001)(316002)(966005)(956004)(86362001)(38350700002)(38100700002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?9YdVZp/c4SO5vO1ddrLbxqjVGxvwuFwl+jbckYji3jhw7VskwglSnD3gb5uk?= =?us-ascii?Q?3HPxp/MiRwutSo3weBy89eQiYemQhhi0O7QaSyy7d7ZtLzfTw5z/E2p2Y6Py?= =?us-ascii?Q?MiF8yOZ35xAVShRyRhmTmrYVfH/rn+UDAp+GggHO1I+xc1tOQ3UnQTZBZjrk?= =?us-ascii?Q?/+Hm8agW471TPODn21KBIWgsL1+usds2FRYiUQ3847bghmmRUQiAa4dfhvrN?= =?us-ascii?Q?e+SHe0wB4RooGvdgCqI7N+dN8+E0IqJS9KOtYsTBoRw3VdD61VtumCa3eGiJ?= =?us-ascii?Q?9WZLw+JVB/SDqGUf0wkGVgJk4xMQi8l3YchDYrw8vUKO7lUQ9EiW65EBrgKe?= =?us-ascii?Q?k30yER0g4neQ3rU5cLWkdwIPjW4o2XRNboRRX7g8OSHK/wuSFVEURpU/VFry?= =?us-ascii?Q?Hm/cCK2CVhANFF1e77Oi2SFjNJ7X/D6DQr1HA+R3oYib0YyLqFtwx4+7hhDV?= =?us-ascii?Q?tv7tHZc9YHUHvo3MwaRVtuMv6Uo40uRR+n1bwi3jy7K/Pt8FeU9AY9UB6Sm7?= =?us-ascii?Q?PHDuP746YTlMY6pavJu6Vy/Iz2v9GG+REkLdixCIgcsbARLHc4ya8kpKNIWe?= =?us-ascii?Q?eP8qZ9n7Y1q+wS7nUhMjuArsW/DIvmOJGH/sKc2bOHEnjZDkQl6UvslFCfVh?= =?us-ascii?Q?7NwcsQqS/kILBk41bfkJ8+LzPLQhkxcsVrO68WS/XTMxaUOX7DCI0GV6Ti4/?= =?us-ascii?Q?yCaqwncEM56KTw9lKEfBHfmErQ4R8yHa7ZEa8Pz6T9kq80Ek4xEPj6mVdDrT?= =?us-ascii?Q?m/uqd7mnpihKoEPCapkiNwp2JkoLIkDidi3D8JwI9SCkSWArVcjZK8a7gRlI?= =?us-ascii?Q?u6lxupbAJJLo0Hs5w7PwnUkqCKvMy9AifmEquM/+hiZS1zxdJmR1+RsJffcV?= =?us-ascii?Q?U7CTiqNN+xqeRZwxIOOxdjKRToEhmosnX1fms+l1Fz2zpp08REIfW9iUF4tL?= =?us-ascii?Q?lHL74TdN0dsZWXAweMgG9Wo8VeQqSrNdIXMH4NFahWAdSD5JoIySrnwgMe+b?= =?us-ascii?Q?5minH+VTm9oTR30aNOfdlDC1zEw4saYUWIk91Sdi85tCopu0mFGPjR6QD0L8?= =?us-ascii?Q?yejJWGw8YcGnQZiXP19vFUQkK+DhadzVl0OCq2LmvS/2xgXoTdNoTmejkgkL?= =?us-ascii?Q?8FzlZjDl7RKyRQFXqx21oDvC2qnYcl/zkh3N0RWPS6rQ3CyjfGbk5w4xRql8?= =?us-ascii?Q?pCtv/8fh5Ufu6nGsRe7S6NABLfu2Re0SvHaavAIkIi+24L14li7TlncYIz5P?= =?us-ascii?Q?f0DW6DiQ6Mu6Tbr1n1JNMEys+BQ0MND/quAkEan8mFo7mWQgaUpjLUnn+fci?= =?us-ascii?Q?qldQP6wBBTGAZMsoPYrYCulh?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: c883166e-3d45-42b4-d8a2-08d9876c2f48 X-MS-Exchange-CrossTenant-AuthSource: DM5PR10MB1466.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Oct 2021 19:21:37.0436 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 7AKlLKrrrvjQ2bUj9/bhZEoZG/GDwZBS3GXIAMEoxwGN7kawv/ZKIN4ZfXMQRWoHnIdbBftUQie4lJBqxVSQqFHWC2cvEwRO8l9mwOwsRK8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR10MB3307 X-Proofpoint-Virus-Version: vendor=nai engine=6300 definitions=10127 signatures=668683 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 adultscore=0 phishscore=0 malwarescore=0 bulkscore=0 mlxlogscore=742 mlxscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2109230001 definitions=main-2110040131 X-Proofpoint-ORIG-GUID: iYXouoBwAWr0NiGn5bI0lpR5eOoiC33r X-Proofpoint-GUID: iYXouoBwAWr0NiGn5bI0lpR5eOoiC33r Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The following patches were made over Linus's tree but also apply over Jens's for-next io_uring branch and Michaels' vhost/next branch. This is V3 of the patchset. It should handle all the review comments posted in V1 and V2. If I missed a comment, please let me know. This patchset allows the vhost layer to do a copy_process on the thread that does the VHOST_SET_OWNER ioctl like how io_uring does a copy_process against its userspace app (Jens, the patches make create_io_thread more generic so that's why you are cc'd). This allows the vhost layer's worker threads to inherit cgroups, namespaces, address space, etc and this worker thread will also be accounted for against that owner/parent process's RLIMIT_NPROC limit. If you are not familiar with qemu and vhost here is more detailed problem description: Qemu will create vhost devices in the kernel which perform network, SCSI, etc IO and management operations from worker threads created by the kthread API. Because the kthread API does a copy_process on the kthreadd thread, the vhost layer has to use kthread_use_mm to access the Qemu thread's memory and cgroup_attach_task_all to add itself to the Qemu thread's cgroups. The problem with this approach is that we then have to add new functions/ args/functionality for every thing we want to inherit. I started doing that here: https://lkml.org/lkml/2021/6/23/1233 for the RLIMIT_NPROC check, but it seems it might be easier to just inherit everything from the beginning, becuase I'd need to do something like that patch several times. For example, the current approach does not support cgroups v2 so commands like virsh emulatorpin do not work. The qemu process can go over its RLIMIT_NPROC. And for future vhost interfaces where we export the vhost thread pid we will want the namespace info. V3: - Add parentheses in p->flag and work_flags check in copy_thread. - Fix check in arm/arm64 and xtensa which were doing the reverse of other archs in their check for PF_IO_WORKER. V2: - Rename kernel_copy_process to kernel_worker. - Instead of exporting functions, make kernel_worker() a proper function/API that does common work for the caller. - Instead of adding new fields to kernel_clone_args for each option make it flag based similar to CLONE_*. - Drop unused completion struct in vhost. - Fix compile warnings by merging vhost cgroup cleanup patch and vhost conversion patch.