Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp6681876imu; Mon, 21 Jan 2019 13:36:55 -0800 (PST) X-Google-Smtp-Source: ALg8bN6ABhsJKkEhiOp7VFR21ea9HsMJZrFbDa7W3Omol9kbHabG0ab92pRFnCVH8FcMTN74dHcq X-Received: by 2002:a63:8742:: with SMTP id i63mr29211761pge.298.1548106615207; Mon, 21 Jan 2019 13:36:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1548106615; cv=none; d=google.com; s=arc-20160816; b=znM05Npzx7bRZwcpUw7ZFa0ctVuWRZJS3vs2IcjoJS3li6H8W4jXa/6vG5Ot6nsWi0 FPYIFMP+4soeWFLYHBj5t3Ivmd4bx62XAe6IaUlCQHZfR2e3RhU07bA7f1XV5VXNOHv1 e8IEgK+9cxhY+aytly4fGYkmXfe8zVTxJNaVuHloVDRKkSmTucoDufVbBOVvtAH2/1Cc gIIa9L5MwrzQTffsftzeT4n8MTiTkwlVJZcn0PEEsdD+0kdRuDO1ATvVWjElwNcABnsr po6qhMZutitTZnUlLuYr2sc5VDmRqA+PKGYRrTKa8icNIFxZHvYDbRya+e2ryhZtCiXt gnQQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=S+WR6rqAsLY69fD2RIr7nPQbgUQg3CjnO+p2nEngDOk=; b=0Z8u7+4933v5hWv651nAC5F7imJ/lYW8efM5FvpghCtYK+r928RaiStHVgMtYRejx9 gxNXl35e9PbJy1hi1jviGNI4ehJchgvRxs0dIkbrwu3MD2L1TaeQq1z/Dw08Dyy8gFJW J6mTglSU2TxlI6fACW1p0xZ/x0UTbN3RSO2Xgao8Res1m6lejCBnDVHqnoZuUQYaYdv/ ivLOR/6wYQDpoONWoXEhvSZDeuC6DgmZBuSxwpyblV9uDsCXb5RPcIrCcYg1PZDsydqS aghq8K3o4GTFS0GBYjuUeZjyxN4zpsOZncZLm7zAk3/B63Tymvq9VkicvNARAEuiMLrS URKg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux-foundation.org header.s=google header.b=TQExef8B; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 32si14294066plg.29.2019.01.21.13.36.39; Mon, 21 Jan 2019 13:36:55 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linux-foundation.org header.s=google header.b=TQExef8B; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728276AbfAUVe2 (ORCPT + 99 others); Mon, 21 Jan 2019 16:34:28 -0500 Received: from mail-lj1-f196.google.com ([209.85.208.196]:40251 "EHLO mail-lj1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727755AbfAUVe1 (ORCPT ); Mon, 21 Jan 2019 16:34:27 -0500 Received: by mail-lj1-f196.google.com with SMTP id n18-v6so18751821lji.7 for ; Mon, 21 Jan 2019 13:34:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=S+WR6rqAsLY69fD2RIr7nPQbgUQg3CjnO+p2nEngDOk=; b=TQExef8BYuFuhUIec2v8/tK/ThxEecByouWzOklfmVJDiYgFEEKGLzjB9hbWTxFtL4 JY+mT0Ej2EuK6JP8jCTn2BxG5zTFTZ0wWcCanAy/+ruFYiij/zRVq2EnkR1uLfo7NN95 zmop9OoFXTVgtt6R+mqm51INMBS6gfKeItd2g= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=S+WR6rqAsLY69fD2RIr7nPQbgUQg3CjnO+p2nEngDOk=; b=ErbNwv+V8nREKePfyUH5noamCuCq5YXf9s5wCIbfqslYsSHAaqMEI72OiHix5hETpo Iu69Fds5oZdSX3UCNWywziXEY5XBAdsi9b/evLjfm5QjYvQvBpo+mLa/Dcb9bECs4jmE HG127C8RM4pQqUp3FdzFrPKnErRqL5MTLSD6iS+vGIMlKsK4x7DcuYAu70qRy710KYv6 mTgt+yZOYWuC3LVRsxHlo4VlQ68qtK8OD0DRcc3bsrsjh+AOmBdko2uxPqNkLzCtxpjC eckR9x76paoeQSx90caqrqouLBOVOiPXK+UGY38zLV6S9G1kKHZwKCS9VJBwWhLWV2A5 S4sg== X-Gm-Message-State: AJcUukf4UYtNDLpcBpXBRspyoAPgY5UTLeqWK3DG9DF2TVtywu24uSst A1PzpMSezJ4/77k9MrmlGaiJnkF3SEjyNg== X-Received: by 2002:a2e:63cd:: with SMTP id s74-v6mr18302970lje.117.1548106465316; Mon, 21 Jan 2019 13:34:25 -0800 (PST) Received: from mail-lj1-f175.google.com (mail-lj1-f175.google.com. [209.85.208.175]) by smtp.gmail.com with ESMTPSA id n8-v6sm2705251lji.90.2019.01.21.13.34.23 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Jan 2019 13:34:23 -0800 (PST) Received: by mail-lj1-f175.google.com with SMTP id g11-v6so18769076ljk.3 for ; Mon, 21 Jan 2019 13:34:23 -0800 (PST) X-Received: by 2002:a2e:9c7:: with SMTP id 190-v6mr17001678ljj.120.1548106463124; Mon, 21 Jan 2019 13:34:23 -0800 (PST) MIME-Version: 1.0 References: <20190121201456.28338-1-rpenyaev@suse.de> <20190121201456.28338-3-rpenyaev@suse.de> In-Reply-To: <20190121201456.28338-3-rpenyaev@suse.de> From: Linus Torvalds Date: Tue, 22 Jan 2019 10:34:06 +1300 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [RFC PATCH v2 02/13] epoll: introduce user structures for polling from userspace To: Roman Penyaev Cc: Andrew Morton , Davidlohr Bueso , Jason Baron , Al Viro , "Paul E. McKenney" , Andrea Parri , linux-fsdevel , Linux List Kernel Mailing Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org So I'm not entirely convinced, but I guess actual numbers and users might convince me otherwise. However, a quick comment: On Tue, Jan 22, 2019 at 9:15 AM Roman Penyaev wrote: > > +struct epoll_uitem { > + __poll_t ready_events; > + struct epoll_event event; > +}; This really ends up being a horrible data structure. struct epoll_event is declared as struct epoll_event { __poll_t events; __u64 data; } EPOLL_PACKED; and __poll_t is "unsigned". So on pretty much all 64-bit architectures except for x86-64 (which sets that packed attribute), you have a packing hole there in between the events and the data, and "struct epoll_event" has 8-byte alignment. Now, in "struct epoll_uitem", you end up having *another* packing hold in between "ready_events" and "struct epoll_event". So this data structure that has 16 bytes of actual data, ends up being 24 bytes in size. Again, x86-64 happens to be the exception to this, but that's a random small implementation detail, not a design thing. I think "struct epoll_event" was badly designed to begin with to have this issue, but it shouldn't then be an excuse to make things even worse with this array of "struct epoll_uitem" things. Hmm? Linus