Received: by 10.192.245.15 with SMTP id i15csp1035076imn; Sat, 10 Mar 2018 21:03:06 -0800 (PST) X-Google-Smtp-Source: AG47ELuqEBl6OQeMforU7TQ36ebKw4SiHanOMsyhfXmxDyFkqMC+qV8ut4HrW8raBD1Guh8WWr9R X-Received: by 2002:a17:902:5609:: with SMTP id h9-v6mr3956134pli.302.1520744586195; Sat, 10 Mar 2018 21:03:06 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1520744586; cv=none; d=google.com; s=arc-20160816; b=Qb/4p/uliRlD2zEH5EfnCaiBFPgudxyAsghKYGmQXTEpzlTcWNh1UNJjD+5MXzYxSS 1rFNGEvIiLUgK2E2EGPnHyhss/3PsD3Bk9SgyPdN9HVS4sJWhSsl9CCCtFWcIbLfneZV rZEwXFhZIEeswzS8KUKs2XKFl4wrTU+5I1SW/zTNMDeLuqCrBBH0h9wajfyTKBKNpU9M Lx/ZL/FaPkHkldtxvWUsy9DjHWygt6r7qCsdD8L73mPhfykA3u+OLZpD/NlcaL2i5HJt fBTPvjUpp75wODIH/8kMxc49eFu82v9cwvhk7Exi0Ao2c6gzle/JbMDLoD17SONy92q8 3H3w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=axzxK2FjSm8pPPQay8GMXDK1Y68mdszqnYvr8L6aS8E=; b=ovcyFAkGGxSLrVM6MUmru2qZ4a/4D4QxKkXqlXvv7kt9s5d+qrMxeXwlzwYhPW5Pd3 VVgf6hhbv0tssBX/OkwHL9mdihDrIjNWlWTBXYvAz6LxnJlRl2o3n2fatiLEfZlPqUyn GZPs2kJvNUxeGRSjkc/EW7zbDrgZdtlZoxRYNwbfwMOIyBPd6jNUHe7wE2bjZ1HC7YJS AxXHkkNp9RZQgAAwW3lz+fqj65lnMsFhLAt6nK+RFJ1rkcUhsk80oWCUZhalh7Dys2XV 4zorD1inN+g/mAKEje8/qCxExaDjAVE50sUgXuGnTmcAofkTv64tv6C2gcBdQ30jKF6V Iq7Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@eng.ucsd.edu header.s=google header.b=JryeRi9l; 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 k11-v6si3886404plt.531.2018.03.10.21.02.03; Sat, 10 Mar 2018 21:03:06 -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=@eng.ucsd.edu header.s=google header.b=JryeRi9l; 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 S1751251AbeCKE6z (ORCPT + 99 others); Sat, 10 Mar 2018 23:58:55 -0500 Received: from mail-it0-f68.google.com ([209.85.214.68]:37767 "EHLO mail-it0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751232AbeCKE6x (ORCPT ); Sat, 10 Mar 2018 23:58:53 -0500 Received: by mail-it0-f68.google.com with SMTP id k79-v6so7510039ita.2 for ; Sat, 10 Mar 2018 20:58:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=eng.ucsd.edu; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=axzxK2FjSm8pPPQay8GMXDK1Y68mdszqnYvr8L6aS8E=; b=JryeRi9l5vSP0SKll8KWrD267cMmWw+luxtLObzeP/SsW4kzD8HCO/IcYxYqMAyB4k /3B6IYyN6IzWMNnza/ezFFskmtuKwWMqkXNfZhQLs91Q/0WEFoc87L5sP6hGei3BkKSu JT0QPCvd3FjcAJa7JfWQRy/dcSpeyKD2aar5s= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=axzxK2FjSm8pPPQay8GMXDK1Y68mdszqnYvr8L6aS8E=; b=lYKmPK2KCDmrlaZw/IvKWp+E3w4iq5KAsVXPHtjH/4uXsSkNa6AY2fEAcaIPLcj2qr i36qsMuSrC+RIy0zXCJ2AQNhwds78xuzuOGYDZIo7KYxgX1f5VAU8KLrva83xpjk6T2g MUH29hfsqJWakRfXl3uyZ7AF9THk2uDWOMgsg3cO4xCVtT+E4w5lPQvFV3IuaoK8/hm8 n4zPr+iOcwgDhjXKs3hM6I1AJZ7YRZJ0ZqEkG9ukfVNmHwhz0m0FrL3X4NeLEWh6OaEq Vnk0FcpCoI90N+wPCVxXCca+nXSdVE6q8gXeVWNbSCDiHrQ3bbrNkhQOO4AKpSr4seI8 JSbA== X-Gm-Message-State: AElRT7E3cZHdxMh5fNNd+HyT2vISc94u8G5wKxHJDAAo8q5gC90SYDtr 7RnmJh68J1XBjJNWvRQzmJEGpeMUH6pX1fl089VSJQ== X-Received: by 10.36.57.197 with SMTP id l188mr4132054ita.100.1520744333075; Sat, 10 Mar 2018 20:58:53 -0800 (PST) MIME-Version: 1.0 Received: by 10.79.195.72 with HTTP; Sat, 10 Mar 2018 20:58:52 -0800 (PST) In-Reply-To: <20180311021406.GA388@thunk.org> References: <1520705944-6723-1-git-send-email-jix024@eng.ucsd.edu> <20180311021406.GA388@thunk.org> From: Andiry Xu Date: Sat, 10 Mar 2018 20:58:52 -0800 Message-ID: Subject: Re: [RFC v2 00/83] NOVA: a new file system for persistent memory To: "Theodore Y. Ts'o" , Andiry Xu , Linux FS Devel , linux-kernel@vger.kernel.org, "linux-nvdimm@lists.01.org" , Dan Williams , "Rudoff, Andy" , coughlan@redhat.com, Steven Swanson , Dave Chinner , jack@suse.com, swhiteho@redhat.com, miklos@szeredi.hu, Jian Xu , Andiry Xu 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 On Sat, Mar 10, 2018 at 6:14 PM, Theodore Y. Ts'o wrote: > FYI, your patch set doesn't even compile for me without these fixups. > I'm not sure why you were trying to declare inline functions in a > header file without the function body? > Thanks for catching this. I will fix it in the next version and adopt stricter flags next time. Thanks, Andiry > - Ted > > diff --git a/fs/nova/balloc.c b/fs/nova/balloc.c > index 8e992156f28c..9c7b74aa712e 100644 > --- a/fs/nova/balloc.c > +++ b/fs/nova/balloc.c > @@ -74,12 +74,12 @@ static void nova_init_free_list(struct super_block *sb, > free_list->block_end -= sbi->tail_reserved_blocks; > } > > -inline struct nova_range_node *nova_alloc_blocknode(struct super_block *sb) > +struct nova_range_node *nova_alloc_blocknode(struct super_block *sb) > { > return nova_alloc_range_node(sb); > } > > -inline void nova_free_blocknode(struct super_block *sb, > +void nova_free_blocknode(struct super_block *sb, > struct nova_range_node *node) > { > nova_free_range_node(node); > @@ -206,7 +206,7 @@ int nova_insert_range_node(struct rb_root *tree, > return 0; > } > > -inline int nova_insert_blocktree(struct nova_sb_info *sbi, > +int nova_insert_blocktree(struct nova_sb_info *sbi, > struct rb_root *tree, struct nova_range_node *new_node) > { > int ret; > @@ -659,7 +659,7 @@ static int nova_new_blocks(struct super_block *sb, unsigned long *blocknr, > > // Allocate data blocks. The offset for the allocated block comes back in > // blocknr. Return the number of blocks allocated. > -inline int nova_new_data_blocks(struct super_block *sb, > +int nova_new_data_blocks(struct super_block *sb, > struct nova_inode_info_header *sih, unsigned long *blocknr, > unsigned long start_blk, unsigned int num, > enum nova_alloc_init zero, int cpu, > diff --git a/fs/nova/balloc.h b/fs/nova/balloc.h > index 463fbac99eff..aca7e8c18dde 100644 > --- a/fs/nova/balloc.h > +++ b/fs/nova/balloc.h > @@ -62,18 +62,18 @@ enum alloc_type { > > int nova_alloc_block_free_lists(struct super_block *sb); > void nova_delete_free_lists(struct super_block *sb); > -inline struct nova_range_node *nova_alloc_blocknode(struct super_block *sb); > -inline void nova_free_blocknode(struct super_block *sb, > +struct nova_range_node *nova_alloc_blocknode(struct super_block *sb); > +void nova_free_blocknode(struct super_block *sb, > struct nova_range_node *bnode); > extern void nova_init_blockmap(struct super_block *sb, int recovery); > extern unsigned long nova_count_free_blocks(struct super_block *sb); > -inline int nova_insert_blocktree(struct nova_sb_info *sbi, > +int nova_insert_blocktree(struct nova_sb_info *sbi, > struct rb_root *tree, struct nova_range_node *new_node); > extern int nova_free_data_blocks(struct super_block *sb, > struct nova_inode_info_header *sih, unsigned long blocknr, int num); > extern int nova_free_log_blocks(struct super_block *sb, > struct nova_inode_info_header *sih, unsigned long blocknr, int num); > -extern inline int nova_new_data_blocks(struct super_block *sb, > +extern int nova_new_data_blocks(struct super_block *sb, > struct nova_inode_info_header *sih, unsigned long *blocknr, > unsigned long start_blk, unsigned int num, > enum nova_alloc_init zero, int cpu, > diff --git a/fs/nova/inode.c b/fs/nova/inode.c > index 21be31a05d26..31ef258978ba 100644 > --- a/fs/nova/inode.c > +++ b/fs/nova/inode.c > @@ -440,7 +440,7 @@ struct inode *nova_iget(struct super_block *sb, unsigned long ino) > return ERR_PTR(err); > } > > -inline int nova_insert_inodetree(struct nova_sb_info *sbi, > +int nova_insert_inodetree(struct nova_sb_info *sbi, > struct nova_range_node *new_node, int cpu) > { > struct rb_root *tree; > diff --git a/fs/nova/inode.h b/fs/nova/inode.h > index 086a7cba8ac3..1097e15ff7af 100644 > --- a/fs/nova/inode.h > +++ b/fs/nova/inode.h > @@ -254,7 +254,7 @@ int nova_init_inode_table(struct super_block *sb); > int nova_get_inode_address(struct super_block *sb, u64 ino, > u64 *pi_addr, int extendable); > struct inode *nova_iget(struct super_block *sb, unsigned long ino); > -inline int nova_insert_inodetree(struct nova_sb_info *sbi, > +int nova_insert_inodetree(struct nova_sb_info *sbi, > struct nova_range_node *new_node, int cpu); > u64 nova_new_nova_inode(struct super_block *sb, u64 *pi_addr); > struct inode *nova_new_vfs_inode(enum nova_new_inode_type type, > diff --git a/fs/nova/super.c b/fs/nova/super.c > index 039c003b698b..9f06ec847c95 100644 > --- a/fs/nova/super.c > +++ b/fs/nova/super.c > @@ -795,23 +795,23 @@ static void nova_put_super(struct super_block *sb) > sb->s_fs_info = NULL; > } > > -inline void nova_free_range_node(struct nova_range_node *node) > +void nova_free_range_node(struct nova_range_node *node) > { > kmem_cache_free(nova_range_node_cachep, node); > } > > -inline void nova_free_inode_node(struct super_block *sb, > +void nova_free_inode_node(struct super_block *sb, > struct nova_range_node *node) > { > nova_free_range_node(node); > } > > -inline void nova_free_file_write_item(struct nova_file_write_item *item) > +void nova_free_file_write_item(struct nova_file_write_item *item) > { > kmem_cache_free(nova_file_write_item_cachep, item); > } > > -inline struct nova_file_write_item * > +struct nova_file_write_item * > nova_alloc_file_write_item(struct super_block *sb) > { > struct nova_file_write_item *p; > diff --git a/fs/nova/super.h b/fs/nova/super.h > index bcbe862ac914..dc98346266e1 100644 > --- a/fs/nova/super.h > +++ b/fs/nova/super.h > @@ -160,11 +160,11 @@ static inline struct nova_super_block *nova_get_super(struct super_block *sb) > > extern void nova_error_mng(struct super_block *sb, const char *fmt, ...); > extern struct nova_range_node *nova_alloc_range_node(struct super_block *sb); > -extern inline struct nova_range_node *nova_alloc_inode_node(struct super_block *sb); > +extern struct nova_range_node *nova_alloc_inode_node(struct super_block *sb); > extern struct nova_file_write_item * > nova_alloc_file_write_item(struct super_block *sb); > extern void nova_free_range_node(struct nova_range_node *node); > -extern inline void nova_free_inode_node(struct super_block *sb, > +extern void nova_free_inode_node(struct super_block *sb, > struct nova_range_node *node); > void nova_free_file_write_item(struct nova_file_write_item *item); >