Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp3889997imu; Mon, 10 Dec 2018 09:22:50 -0800 (PST) X-Google-Smtp-Source: AFSGD/V0xwgmATXcUHmcXtKBSM2i1tDtnOt5PAWIoBr10hhzzK346F664cbGXZDM5zXgcMJt2ipk X-Received: by 2002:a62:3ac1:: with SMTP id v62mr12696604pfj.87.1544462570441; Mon, 10 Dec 2018 09:22:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544462570; cv=none; d=google.com; s=arc-20160816; b=ukro5GWlxjEr6Tl5e/JVpfOP/ZVHeX1/nUyUCSLGZeoWwDuEUNQTqYv4bRQ67lZI0M VNoefb4gTs4COVD8e3NF4XS2mYzhbFXxhi7owuplj/rlEkVkHil+F7UzWv83QwWEwD/k qldITCi+02ONWG5DI1FrSUVQgK2wlTLpb50QwPajiCkDbGwFfSYidC3Bp0d2ElhAQZ/Y rA6+nUL5TCQoWRbD4fRYKCsn8pImJP2mevQhKJI5DQrEKNHrypKmT4jSAbNS4H4WHAmP FzFnK3ulQjO37EFfs3sUebzsWC5t+eC/IlcI2AtnrHGwXKR6lAkQb5dsXtRzaieraZ4X E/jQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=4P5wG/4vQr5PZSbWzyqF7qEs1zaP4L2Jm8Yu0TcaVnY=; b=gP7JSpxBC/Tr3Rl1QVGcGvY9OI43O/KtIr5LYnqDG39NrqQHonGlFNmbi7y+JrXCPl Y7nBjG/ebhJOQH1LbFBtWS0VvU1PWx0cvQsVaiCuA/hSOFnkGQBV/ZqSmpdDhgGBfOOP HQ4zXIZnrHLTTdK+yjyinYKwneZ3HmHFZ/dKqB5mp2bRo5JLIVMjAuSoUXrGSgQfWRFr KuP1HxWAz904cSxZp/KOwUwZsgGwQiarwTv+E1hIxwigZKUiONAm/6kItac+BuTv/Wtz uSYf0AN5bro/DrbRXtnojs+hibuRIQj4sLwUGP6ohUyyMxOwRjbibStHNCKiIqxw7MD5 Nv/A== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v190si10856510pfv.8.2018.12.10.09.22.35; Mon, 10 Dec 2018 09:22:50 -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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727391AbeLJRTk (ORCPT + 99 others); Mon, 10 Dec 2018 12:19:40 -0500 Received: from mx1.redhat.com ([209.132.183.28]:55328 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728382AbeLJRNf (ORCPT ); Mon, 10 Dec 2018 12:13:35 -0500 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 2EDE6804EE; Mon, 10 Dec 2018 17:13:35 +0000 (UTC) Received: from horse.redhat.com (unknown [10.18.25.234]) by smtp.corp.redhat.com (Postfix) with ESMTP id BC10E1001914; Mon, 10 Dec 2018 17:13:34 +0000 (UTC) Received: by horse.redhat.com (Postfix, from userid 10451) id 6A980224264; Mon, 10 Dec 2018 12:13:30 -0500 (EST) From: Vivek Goyal To: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org Cc: vgoyal@redhat.com, miklos@szeredi.hu, stefanha@redhat.com, dgilbert@redhat.com, sweil@redhat.com, swhiteho@redhat.com Subject: [PATCH 25/52] Introduce interval tree basic data structures Date: Mon, 10 Dec 2018 12:12:51 -0500 Message-Id: <20181210171318.16998-26-vgoyal@redhat.com> In-Reply-To: <20181210171318.16998-1-vgoyal@redhat.com> References: <20181210171318.16998-1-vgoyal@redhat.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Mon, 10 Dec 2018 17:13:35 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org We want to use interval tree to keep track of per inode dax mappings. Introduce basic data structures. Signed-off-by: Vivek Goyal --- fs/fuse/fuse_i.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h index fb49ca9d05ac..a24f31156b47 100644 --- a/fs/fuse/fuse_i.h +++ b/fs/fuse/fuse_i.h @@ -97,11 +97,22 @@ struct fuse_forget_link { struct fuse_forget_link *next; }; +#define START(node) ((node)->start) +#define LAST(node) ((node)->end) + /** Translation information for file offsets to DAX window offsets */ struct fuse_dax_mapping { /* Will connect in fc->free_ranges to keep track of free memory */ struct list_head list; + /* For interval tree in file/inode */ + struct rb_node rb; + /** Start Position in file */ + __u64 start; + /** End Position in file */ + __u64 end; + __u64 __subtree_last; + /** Position in DAX window */ u64 window_offset; @@ -191,6 +202,10 @@ struct fuse_inode { /** Lock for serializing lookup and readdir for back compatibility*/ struct mutex mutex; + + /** Sorted rb tree of struct fuse_dax_mapping elements */ + struct rb_root_cached dmap_tree; + unsigned long nr_dmaps; }; /** FUSE inode state bits */ -- 2.13.6