Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp186004ybl; Wed, 21 Aug 2019 17:17:19 -0700 (PDT) X-Google-Smtp-Source: APXvYqx/gEe+ldLpziolSH9bgJC4sO7g46/hWpD+IRmlARXUFMbczVhMuQsRQjXOCP5aLVrVMd74 X-Received: by 2002:a17:90a:2841:: with SMTP id p1mr2633374pjf.101.1566433038935; Wed, 21 Aug 2019 17:17:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1566433038; cv=none; d=google.com; s=arc-20160816; b=nmwZqU9qBRuiVjHCCs0IQxjsFG7MtCiUx4BetyHWEG+1KD4NpwgkbeUWWcc5jwAngm ttWXoynvDzbEhJVA0rhv7PrHgTloU7QWe3fP9bE+TmgK4uY0Fyb/CoZIfvGSUiet9aO9 LNPEm/cEZ1hNSr+tx/4Ih3ISLcBxUYwdqeWm8McAhm7IyOnGLPB2fP0zowcoL59Qz4Xw 5ZFcF4QBB3lPDTAlxbzc8Tghd9EbTArcasm4DRE6EH/QMPXNumI5fWpwHrmfZMNQQ69/ 8tkmQjiSatxGS8Q3JSoiTO3L6VoGzmjP+Asnrb1HADp5S5D8GBOyHhWKkhzlH1twodta pLKw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:from:subject:mime-version :message-id:date:dkim-signature; bh=pv63BqJG13E00+xwd/kF1jAWY+UxyXW33fdXaIG0kq8=; b=LPSMQzs2YBFTIi57ztOV90A5CrrK9UqfW+BWpc3ZisgONM7sJN7ejELDRa+vC0QNKL sNuaQWZcPbJStcVJ4X/umQOWHzH2dqKntJz9Bn64NhJc57NCU22IUou/5zhla29H8OvF 1BoXP8rhWpte3h1dDFJqU320yt/lbM3ft2DFfwXTO/xNL2kUksgBCGgKd6taoZEc6FWB vau6dr5Ltd3eU/hxQSmvpsYvst0J+9Wf8zdHYeYB2vwStTaKNZfAK8znFKF3LHvTkc7U iHAl9p23Bkszblgc0l+A2KvyazttVnxwtcx1jq8HsoticdAHnUs/U+sdXl5hdeTxBY+a 1qIQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=D6AQoA1l; 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; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n9si15224111pgq.240.2019.08.21.17.17.03; Wed, 21 Aug 2019 17:17:18 -0700 (PDT) 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=@google.com header.s=20161025 header.b=D6AQoA1l; 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; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729387AbfHVAJ5 (ORCPT + 99 others); Wed, 21 Aug 2019 20:09:57 -0400 Received: from mail-vk1-f202.google.com ([209.85.221.202]:45008 "EHLO mail-vk1-f202.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726828AbfHVAJ4 (ORCPT ); Wed, 21 Aug 2019 20:09:56 -0400 Received: by mail-vk1-f202.google.com with SMTP id a5so1590082vki.11 for ; Wed, 21 Aug 2019 17:09:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:message-id:mime-version:subject:from:to:cc; bh=pv63BqJG13E00+xwd/kF1jAWY+UxyXW33fdXaIG0kq8=; b=D6AQoA1ldI7Td2oaG347F6IipHY5tct5IVr+ZroY46wc2oeOBig9h8SX4dVUwbmpkk wJ9SvoTKVLRLyS0KQGzGDBHsHrzk7paM9h/bx2REKW+54BkeqdsWziITIIAgHqJqmgeI Fttd73tnUVn7lBOt4rStJQHq4ekEuATA+hFFL3ytj+VuWFykDfR4/Uv1hTrOiehHHXFq J6NvzzRX9hadxjvziCkeZI5JP4NdeJOigPiTCkAOOX2LJcLP/GWAjDKL+UqcTpy1wFay 5bOjifnewYNs0sm+ha3kwdNZYvK1/4Ye3s2j1ZCKveddw1LJGk3scOM0xNfySseyHuuN Fa9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:message-id:mime-version:subject:from:to:cc; bh=pv63BqJG13E00+xwd/kF1jAWY+UxyXW33fdXaIG0kq8=; b=qi72jEzIGmei1uw7otXpxjCmv9d9cAGCZAK1rNY1iZ/DrokBEM1hOANynoePpQgM1K JpWi34kT9YEISzpY+tfwSgKvyJ+XCHfIv/4Qsf/bxChui/q86YeHBNCq1+MKDo9UdhRe 3ZTgS0eo1wq0WkRhpKv367080n7a+QnVz/wpRj2CxpTBo8Net8RNlnhGLGW2tXfVwgzu byxzKf61ZmNKzd30Pa2YFRnpyvdNWtdKm0ddT8jcZXCS8FL/EsDJ9iIlbing9QnUtx+Y CFuQbByqbs8FwZCRyDBCYzifGq3I43tuSe4IcxrpJKUfBdroD4akkK3ZSn/wkNmc/zR4 7V7Q== X-Gm-Message-State: APjAAAWAzJvIRPwbj8EadoZ0JFF/BVKeGQlqbdkp2n5Vgq+Lelrxdz1U AAHAnEdO4FpHYd5w0G0ek89Sj4MsAQk= X-Received: by 2002:a9f:3110:: with SMTP id m16mr4238732uab.10.1566432594812; Wed, 21 Aug 2019 17:09:54 -0700 (PDT) Date: Wed, 21 Aug 2019 17:09:31 -0700 Message-Id: <20190822000933.180870-1-khazhy@google.com> Mime-Version: 1.0 X-Mailer: git-send-email 2.23.0.187.g17f5b7556c-goog Subject: [PATCH 1/3] fuse: on 64-bit store time in d_fsdata directly From: Khazhismel Kumykov To: miklos@szeredi.hu Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, shakeelb@google.com, Khazhismel Kumykov 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 Implements the optimization noted in f75fdf22b0a8 ("fuse: don't use ->d_time"), as the additional memory can be significant. (In particular, on SLAB configurations this 8-byte alloc becomes 32 bytes). Per-dentry, this can consume significant memory. Signed-off-by: Khazhismel Kumykov --- fs/fuse/dir.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c index dd0f64f7bc06..f9c59a296568 100644 --- a/fs/fuse/dir.c +++ b/fs/fuse/dir.c @@ -24,6 +24,18 @@ static void fuse_advise_use_readdirplus(struct inode *dir) set_bit(FUSE_I_ADVISE_RDPLUS, &fi->state); } +#if BITS_PER_LONG >= 64 +static inline void fuse_dentry_settime(struct dentry *entry, u64 time) +{ + entry->d_fsdata = (void *) time; +} + +static inline u64 fuse_dentry_time(struct dentry *entry) +{ + return (u64)entry->d_fsdata; +} + +#else union fuse_dentry { u64 time; struct rcu_head rcu; @@ -38,6 +50,7 @@ static inline u64 fuse_dentry_time(struct dentry *entry) { return ((union fuse_dentry *) entry->d_fsdata)->time; } +#endif /* * FUSE caches dentries and attributes with separate timeout. The @@ -242,6 +255,7 @@ static int fuse_dentry_revalidate(struct dentry *entry, unsigned int flags) goto out; } +#if BITS_PER_LONG < 64 static int fuse_dentry_init(struct dentry *dentry) { dentry->d_fsdata = kzalloc(sizeof(union fuse_dentry), GFP_KERNEL); @@ -254,16 +268,21 @@ static void fuse_dentry_release(struct dentry *dentry) kfree_rcu(fd, rcu); } +#endif const struct dentry_operations fuse_dentry_operations = { .d_revalidate = fuse_dentry_revalidate, +#if BITS_PER_LONG < 64 .d_init = fuse_dentry_init, .d_release = fuse_dentry_release, +#endif }; const struct dentry_operations fuse_root_dentry_operations = { +#if BITS_PER_LONG < 64 .d_init = fuse_dentry_init, .d_release = fuse_dentry_release, +#endif }; int fuse_valid_type(int m) -- 2.23.0.187.g17f5b7556c-goog