Received: by 10.223.185.111 with SMTP id b44csp1651708wrg; Sat, 10 Mar 2018 10:38:12 -0800 (PST) X-Google-Smtp-Source: AG47ELt9ynVewn/AqUUXPO3CezfWskR+oxPVx5vQnhnVOvaKmVDE6+lxf+ZH0YQMxtG8H2A0BGGI X-Received: by 2002:a17:902:8ec6:: with SMTP id x6-v6mr2766709plo.402.1520707092241; Sat, 10 Mar 2018 10:38:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1520707092; cv=none; d=google.com; s=arc-20160816; b=vVsdEauKu/xJqZHltNBpo/wLvbRR30uQs03VyokdypowTGTc1xsrOHnspkhZC49fq8 vpUsMAg2yDykpuRL6HXCRHkeGsP64YzbvLcCqV5wB66kKoDDXpeDSXo7aIia7r586E6V VMU2yqm933j/yBkTESuV77L9lv3A+wgX5KoZxLQzC7HWVDzBbo8oqkcO1oByE6zhsZ/R GBMXanFRm59rjReI8y9nw9EfKINdj1CFk+dNWpKM9GmK9XP4LXpuYLzAmTCzw5NzIMig 8vU1VzrfheVJ6AP1nqcFS50q7hT0OfdHfMnYsmCugUyr1GKSrPDqYhQrtiKrnhlQRXGb y+6Q== 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:dkim-signature:arc-authentication-results; bh=YsYN0ZFiEv6il0EbF3L3qVdnIaLPkX/RQ7qZqDwsEiY=; b=vmUauYjjeCQzWb7g9wNHHn1d7STKwq5kMZYakj1q4YltpuyHxm7EG+lnfy0QCGKtST JZZqYW08qTKmNeOl37XSuvzTmFA9TmQ0L6tWDhBj6P/42wS1ZOyHdfOnLG3WvRch5soM /xbtrjFflbauFmlN2cF0C6tuuVO2X3rHEyYVXbHZ0igvtTbnmnERxWAIGW1sdRlsl0cK xSJd5EeQ28P9SMBeexEn8+ijURh8lywEToRo+30riwUNM7AfA8WNAPde6/An3CrNUTlT /vXfn0EWiUy2u4NMvyTsqMoiC0sf/Xocsgl7FoQvNjPn4sldXbdt3h3N0UqzDURqkqjD Ku0Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@eng.ucsd.edu header.s=google header.b=Cw8KHMF4; 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 v6-v6si3135786plp.193.2018.03.10.10.37.57; Sat, 10 Mar 2018 10:38:12 -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=Cw8KHMF4; 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 S932472AbeCJSU4 (ORCPT + 99 others); Sat, 10 Mar 2018 13:20:56 -0500 Received: from mail-pg0-f67.google.com ([74.125.83.67]:37505 "EHLO mail-pg0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932441AbeCJSUw (ORCPT ); Sat, 10 Mar 2018 13:20:52 -0500 Received: by mail-pg0-f67.google.com with SMTP id y26so4839624pgv.4 for ; Sat, 10 Mar 2018 10:20:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=eng.ucsd.edu; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=YsYN0ZFiEv6il0EbF3L3qVdnIaLPkX/RQ7qZqDwsEiY=; b=Cw8KHMF4rjbuhYVPisL5r8MEcGSmaQrwZyQnpVdZlHHqdSO/HcneZ/OPf/QbhPr6vT rKsXKVwvi4g/kLLyJemOuih3YvPocjXDsrFct7UnuKihbNcb6Txx28E8Lqg191ZrXm7J eILS+ZqgHavhxdC3GRmG9N8ACC6z6tAxPAV4A= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=YsYN0ZFiEv6il0EbF3L3qVdnIaLPkX/RQ7qZqDwsEiY=; b=LfUr4NtdK88HOR3n2iQ9qeYsdADrv1/nnLmlApksEJasPJEojxK6WSTmxxx/cFYW+f M7lbIxq5Dt05LjnkitHE/W32RYSessxhP+RI33bTjSJuZzr2cdwkFiGLnB9+bEUhbpzp 1ap28nKNkiW5dtnZ9qmjTdVO5qiyTZzI6P/yodLJlTSalI3CB27sjT6bFpHw1tVeVExU 6zQ+ubshqdC/ek8wPyeYB3o68fGCqrYJN1wTO1RO9P2XVBVgh3OkiVe9kyJ7rkeFn8sG VTTzm+KjSFzkWNiyfJLAy92/wF8XpF/vQcuOiZCE1pEHsPNn9sWqCBrh2OUEr77L9yjj ld1w== X-Gm-Message-State: AElRT7F95jY+lPinqMcup/VSlHiTNPxCXLH3ZKAvEQDkPrF9WjwiP5Hy evPpxxZ2cLhpSBxntakALxVifQ== X-Received: by 10.98.31.79 with SMTP id f76mr2684925pff.60.1520706051443; Sat, 10 Mar 2018 10:20:51 -0800 (PST) Received: from brienza-desktop.8.8.4.4 (andxu.ucsd.edu. [132.239.17.134]) by smtp.gmail.com with ESMTPSA id h80sm9210167pfj.181.2018.03.10.10.20.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sat, 10 Mar 2018 10:20:50 -0800 (PST) From: Andiry Xu To: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-nvdimm@lists.01.org Cc: dan.j.williams@intel.com, andy.rudoff@intel.com, coughlan@redhat.com, swanson@cs.ucsd.edu, david@fromorbit.com, jack@suse.com, swhiteho@redhat.com, miklos@szeredi.hu, andiry.xu@gmail.com, Andiry Xu Subject: [RFC v2 29/83] Add write_inode and dirty_inode routines. Date: Sat, 10 Mar 2018 10:18:10 -0800 Message-Id: <1520705944-6723-30-git-send-email-jix024@eng.ucsd.edu> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1520705944-6723-1-git-send-email-jix024@eng.ucsd.edu> References: <1520705944-6723-1-git-send-email-jix024@eng.ucsd.edu> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Andiry Xu Signed-off-by: Andiry Xu --- fs/nova/inode.c | 33 +++++++++++++++++++++++++++++++++ fs/nova/inode.h | 2 ++ fs/nova/super.c | 2 ++ 3 files changed, 37 insertions(+) diff --git a/fs/nova/inode.c b/fs/nova/inode.c index a30b6aa..29d172a 100644 --- a/fs/nova/inode.c +++ b/fs/nova/inode.c @@ -489,6 +489,39 @@ int nova_free_inuse_inode(struct super_block *sb, unsigned long ino) return ret; } +int nova_write_inode(struct inode *inode, struct writeback_control *wbc) +{ + /* write_inode should never be called because we always keep our inodes + * clean. So let us know if write_inode ever gets called. + */ +// BUG(); + return 0; +} + +/* + * dirty_inode() is called from mark_inode_dirty_sync() + * usually dirty_inode should not be called because NOVA always keeps its inodes + * clean. Only exception is touch_atime which calls dirty_inode to update the + * i_atime field. + */ +void nova_dirty_inode(struct inode *inode, int flags) +{ + struct super_block *sb = inode->i_sb; + struct nova_inode_info *si = NOVA_I(inode); + struct nova_inode_info_header *sih = &si->header; + struct nova_inode *pi; + + pi = nova_get_block(sb, sih->pi_addr); + + /* only i_atime should have changed if at all. + * we can do in-place atomic update + */ + pi->i_atime = cpu_to_le32(inode->i_atime.tv_sec); + nova_persist_inode(pi); + /* Relax atime persistency */ + nova_flush_buffer(&pi->i_atime, sizeof(pi->i_atime), 0); +} + static ssize_t nova_direct_IO(struct kiocb *iocb, struct iov_iter *iter) { /* DAX does not support direct IO */ diff --git a/fs/nova/inode.h b/fs/nova/inode.h index e00b3b9..f9f5c14 100644 --- a/fs/nova/inode.h +++ b/fs/nova/inode.h @@ -229,5 +229,7 @@ int nova_get_inode_address(struct super_block *sb, u64 ino, struct inode *nova_iget(struct super_block *sb, unsigned long ino); inline int nova_insert_inodetree(struct nova_sb_info *sbi, struct nova_range_node *new_node, int cpu); +extern int nova_write_inode(struct inode *inode, struct writeback_control *wbc); +extern void nova_dirty_inode(struct inode *inode, int flags); #endif diff --git a/fs/nova/super.c b/fs/nova/super.c index 69e4afc..c0427fd 100644 --- a/fs/nova/super.c +++ b/fs/nova/super.c @@ -861,6 +861,8 @@ static void destroy_rangenode_cache(void) static struct super_operations nova_sops = { .alloc_inode = nova_alloc_inode, .destroy_inode = nova_destroy_inode, + .write_inode = nova_write_inode, + .dirty_inode = nova_dirty_inode, .put_super = nova_put_super, .statfs = nova_statfs, .remount_fs = nova_remount, -- 2.7.4