Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp1236042pxk; Mon, 31 Aug 2020 13:40:59 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzmJDi8qZdNktwVCtaCOKRFitmo8FW7yY2PtXlVexT6C5PWpAl5yDZnbYtEgIeniTyuLiQw X-Received: by 2002:a05:6402:10d7:: with SMTP id p23mr2671992edu.388.1598906458830; Mon, 31 Aug 2020 13:40:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1598906458; cv=none; d=google.com; s=arc-20160816; b=hVTthm/0VdveDyPDKwiCKF2Vl8cOP+idsqFip5VTfiVXFWqSZggu6XRGTZJbSiQBpo A3Mk3xcl5E7wH/1GyjZdd+yWuzh6Y1d4ZAm3+cEe3CW1U5QZ6os0X24XUvowG/kmffM7 s7DKiHjZyD5hhfJjA1sXK7boA2wVA1REFgujsPHp9elNceky+g2IAVCXC4LG0+wy9WLw 4JmsoA83gN7puiJhZxV7QuOxQBBtrvdInquUuFSBEDgcWAIqHjjymp6Ks/Zs8UTfcOWB CqYk2wE1weXERwQ8faTgOiekM4BjIGYYy3l9xFRM4c2Xb/9CdPCxhAlp6GAlEwYBpvC5 Ovmg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:mime-version:user-agent:date:message-id:subject :from:cc:to:dkim-signature; bh=J9kGADiWqBAf6LAoDwc5/F/Og5YLlJpYbgAjEOG8B8Y=; b=BazkmKYP7XWk1tkvmGSwl0LJ8FrIe7KAED1E9BdB2Cdvp/95zZm8hVRtzusRHd53qY RHgOwJDMmEISyt0j7bO4X/k1EjAOis5GATZ7bFDi9IyMfG6/8LgXXhOJAb/qBSVNRXpj rxXT8dfvO8zpP/RdAJDpdsk+NHggcDVpjJ6UNcE0DeRSRHROEYv4nIMmYgSX0d3ReKQq 1Q/aDYxAdySGmLy5kLtx8PJ+VrLMG0ObJAFj62EaTAQkq3pXz+T/GcLb+vkT0JU8lhfQ Ve9m8kwz3a+NeFwHoNHLX5PXsPJ405KCRW/ZTyoP5HyOeCNTPxYEisZPlPz6yyg8JB4T IJ7w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel-dk.20150623.gappssmtp.com header.s=20150623 header.b=iol8uoCd; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m18si5562130ejk.743.2020.08.31.13.40.36; Mon, 31 Aug 2020 13:40:58 -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=@kernel-dk.20150623.gappssmtp.com header.s=20150623 header.b=iol8uoCd; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729462AbgHaSI3 (ORCPT + 99 others); Mon, 31 Aug 2020 14:08:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51850 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729469AbgHaSIS (ORCPT ); Mon, 31 Aug 2020 14:08:18 -0400 Received: from mail-il1-x141.google.com (mail-il1-x141.google.com [IPv6:2607:f8b0:4864:20::141]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 150A5C061575 for ; Mon, 31 Aug 2020 11:08:18 -0700 (PDT) Received: by mail-il1-x141.google.com with SMTP id w3so1975400ilh.5 for ; Mon, 31 Aug 2020 11:08:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel-dk.20150623.gappssmtp.com; s=20150623; h=to:cc:from:subject:message-id:date:user-agent:mime-version :content-language:content-transfer-encoding; bh=J9kGADiWqBAf6LAoDwc5/F/Og5YLlJpYbgAjEOG8B8Y=; b=iol8uoCdy/B0MF3nCdY3BgRUnC3oG2i+b9zc0OPTqn3tX6RXpVbPDQdLmhSxMCQZYU rruvA5+UUWIwlMUm+/o6/GK8jGFSbcROx0B+IwVzR0f1Q6bz6R0utEKqcbRlOZbA2iGu jNpvS3HpS7w7ZRsG1XYWGUyRfd8jfE4si/0HkG1ApQTSTSpCTZBvQp/DESVlUcneN+5L 4Waax7OYniJHk0ZTXcR39tZZkG9Q2SgDFONy5l/hAE/NEB8DRGDP0GXCmVlt0fSsVv0U Mb88aKA4WNEyKc6NY5mgx+kkZkuLmnh346l1AavkzggBt7EWBu+IJVAXUbeV2xP/f+cB B44g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:cc:from:subject:message-id:date:user-agent :mime-version:content-language:content-transfer-encoding; bh=J9kGADiWqBAf6LAoDwc5/F/Og5YLlJpYbgAjEOG8B8Y=; b=G5qhWbiqwASkMuJnx2iVGLx8houLRMKGJN80RuGPfYPaVsf3qcLnp7+ORbET5pBNQQ QaMNosdW0oPS6SAQIT/DpMn2B1LAtiOxnbwqu6g8a63gbJhTBanhyPB2fiaANvBe+9E3 F+wyQO7N91eSSaBFAuStGJumPKwM51ZMxRY1N2AhIm7F3j8b1ypGqwl/UUjyjac+IZRi 9PUjrhrzBOrX8oxW/aj+LTMtJwgExX46+mQ+87kQjfxKMkjDMjOxcW06qo4r2p26+X08 WekI9r0qu5SrWg0rIDLAFssMWlKeV06vPaZEi/lq2ux+xwBKY0EgQtrgyk3ieIl1vdni 9ZhA== X-Gm-Message-State: AOAM5329UfAB17c90yLwQueNB0nGntoj/gr6V39uVTx+HnanKfjafgbc A9lTL3WubFzpcudnv8iUNzPxnA== X-Received: by 2002:a92:194b:: with SMTP id e11mr2451830ilm.133.1598897296539; Mon, 31 Aug 2020 11:08:16 -0700 (PDT) Received: from [192.168.1.58] ([65.144.74.34]) by smtp.gmail.com with ESMTPSA id r3sm4354710iov.22.2020.08.31.11.08.15 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 31 Aug 2020 11:08:16 -0700 (PDT) To: linux-fsdevel , "linux-kernel@vger.kernel.org" Cc: Alexander Viro , Jann Horn From: Jens Axboe Subject: [PATCH] fs: align IOCB_* flags with RWF_* flags Message-ID: <95de7ce4-9254-39f1-304f-4455f66bf0f4@kernel.dk> Date: Mon, 31 Aug 2020 12:08:10 -0600 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org We have a set of flags that are shared between the two and inherired in kiocb_set_rw_flags(), but we check and set these individually. Reorder the IOCB flags so that the bottom part of the space is synced with the RWF flag space, and then we can do them all in one mask and set operation. The only exception is RWF_SYNC, which needs to mark IOCB_SYNC and IOCB_DSYNC. Do that one separately. This shaves 15 bytes of text from kiocb_set_rw_flags() for me. Signed-off-by: Jens Axboe --- diff --git a/include/linux/fs.h b/include/linux/fs.h index 7519ae003a08..c82360600ae4 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -310,17 +310,20 @@ enum rw_hint { WRITE_LIFE_EXTREME = RWH_WRITE_LIFE_EXTREME, }; -#define IOCB_EVENTFD (1 << 0) -#define IOCB_APPEND (1 << 1) -#define IOCB_DIRECT (1 << 2) -#define IOCB_HIPRI (1 << 3) -#define IOCB_DSYNC (1 << 4) -#define IOCB_SYNC (1 << 5) -#define IOCB_WRITE (1 << 6) -#define IOCB_NOWAIT (1 << 7) +/* Match RWF_* bits to IOCB bits */ +#define IOCB_HIPRI (__force int) RWF_HIPRI +#define IOCB_DSYNC (__force int) RWF_DSYNC +#define IOCB_SYNC (__force int) RWF_SYNC +#define IOCB_NOWAIT (__force int) RWF_NOWAIT +#define IOCB_APPEND (__force int) RWF_APPEND + +/* non-RWF related bits - start at 16 */ +#define IOCB_EVENTFD (1 << 16) +#define IOCB_DIRECT (1 << 17) +#define IOCB_WRITE (1 << 18) /* iocb->ki_waitq is valid */ -#define IOCB_WAITQ (1 << 8) -#define IOCB_NOIO (1 << 9) +#define IOCB_WAITQ (1 << 19) +#define IOCB_NOIO (1 << 20) struct kiocb { struct file *ki_filp; @@ -3317,6 +3320,9 @@ static inline int kiocb_set_rw_flags(struct kiocb *ki, rwf_t flags) { int kiocb_flags = 0; + /* make sure there's no overlap between RWF and private IOCB flags */ + BUILD_BUG_ON((__force int) RWF_SUPPORTED & IOCB_EVENTFD); + if (!flags) return 0; if (unlikely(flags & ~RWF_SUPPORTED)) @@ -3325,16 +3331,11 @@ static inline int kiocb_set_rw_flags(struct kiocb *ki, rwf_t flags) if (flags & RWF_NOWAIT) { if (!(ki->ki_filp->f_mode & FMODE_NOWAIT)) return -EOPNOTSUPP; - kiocb_flags |= IOCB_NOWAIT | IOCB_NOIO; + kiocb_flags |= IOCB_NOIO; } - if (flags & RWF_HIPRI) - kiocb_flags |= IOCB_HIPRI; - if (flags & RWF_DSYNC) - kiocb_flags |= IOCB_DSYNC; + kiocb_flags |= (__force int) (flags & RWF_SUPPORTED); if (flags & RWF_SYNC) - kiocb_flags |= (IOCB_DSYNC | IOCB_SYNC); - if (flags & RWF_APPEND) - kiocb_flags |= IOCB_APPEND; + kiocb_flags |= IOCB_DSYNC; ki->ki_flags |= kiocb_flags; return 0; -- Jens Axboe