From mboxrd@z Thu Jan 1 00:00:00 1970 From: zwu.kernel@gmail.com Subject: [[RESEND]PATCH v4 10/10] VFS hot tracking, xfs: Add hot tracking support Date: Mon, 12 Aug 2013 10:20:24 +0800 Message-ID: <1376274024-28689-11-git-send-email-zwu.kernel@gmail.com> References: <1376274024-28689-1-git-send-email-zwu.kernel@gmail.com> Cc: torvalds@linux-foundation.org, linux-fsdevel@vger.kernel.org, Dave Chinner , Zhi Yong Wu To: viro@zeniv.linux.org.uk Return-path: Received: from e36.co.us.ibm.com ([32.97.110.154]:39972 "EHLO e36.co.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755497Ab3HLCXV (ORCPT ); Sun, 11 Aug 2013 22:23:21 -0400 Received: from /spool/local by e36.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Sun, 11 Aug 2013 20:23:20 -0600 Received: from d03relay02.boulder.ibm.com (d03relay02.boulder.ibm.com [9.17.195.227]) by d03dlp03.boulder.ibm.com (Postfix) with ESMTP id 5452F19D8043 for ; Sun, 11 Aug 2013 20:23:06 -0600 (MDT) Received: from d03av02.boulder.ibm.com (d03av02.boulder.ibm.com [9.17.195.168]) by d03relay02.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id r7C2NIQV196536 for ; Sun, 11 Aug 2013 20:23:18 -0600 Received: from d03av02.boulder.ibm.com (loopback [127.0.0.1]) by d03av02.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id r7C2NIS6014002 for ; Sun, 11 Aug 2013 20:23:18 -0600 In-Reply-To: <1376274024-28689-1-git-send-email-zwu.kernel@gmail.com> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: From: Dave Chinner Connect up the VFS hot tracking support so XFS filesystem can make use of it. Signed-off-by: Dave Chinner Signed-off-by: Zhi Yong Wu --- fs/xfs/xfs_mount.h | 1 + fs/xfs/xfs_super.c | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h index 4e374d4..948a070 100644 --- a/fs/xfs/xfs_mount.h +++ b/fs/xfs/xfs_mount.h @@ -222,6 +222,7 @@ typedef struct xfs_mount { #define XFS_MOUNT_WSYNC (1ULL << 0) /* for nfs - all metadata ops must be synchronous except for space allocations */ +#define XFS_MOUNT_HOTTRACK (1ULL << 1) /* hot tracking */ #define XFS_MOUNT_WAS_CLEAN (1ULL << 3) #define XFS_MOUNT_FS_SHUTDOWN (1ULL << 4) /* atomic stop of all filesystem operations, typically for diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c index 1d68ffc..e3ea98b 100644 --- a/fs/xfs/xfs_super.c +++ b/fs/xfs/xfs_super.c @@ -62,6 +62,7 @@ #include #include #include +#include static const struct super_operations xfs_super_operations; static kmem_zone_t *xfs_ioend_zone; @@ -115,6 +116,7 @@ mempool_t *xfs_ioend_pool; #define MNTOPT_NODELAYLOG "nodelaylog" /* Delayed logging disabled */ #define MNTOPT_DISCARD "discard" /* Discard unused blocks */ #define MNTOPT_NODISCARD "nodiscard" /* Do not discard unused blocks */ +#define MNTOPT_HOTTRACK "hot_track" /* hot tracking */ /* * Table driven mount option parser. @@ -381,6 +383,8 @@ xfs_parseargs( mp->m_flags |= XFS_MOUNT_DISCARD; } else if (!strcmp(this_char, MNTOPT_NODISCARD)) { mp->m_flags &= ~XFS_MOUNT_DISCARD; + } else if (!strcmp(this_char, MNTOPT_HOTTRACK)) { + mp->m_flags |= XFS_MOUNT_HOTTRACK; } else if (!strcmp(this_char, "ihashsize")) { xfs_warn(mp, "ihashsize no longer used, option is deprecated."); @@ -510,6 +514,7 @@ xfs_showargs( { XFS_MOUNT_GRPID, "," MNTOPT_GRPID }, { XFS_MOUNT_DISCARD, "," MNTOPT_DISCARD }, { XFS_MOUNT_SMALL_INUMS, "," MNTOPT_32BITINODE }, + { XFS_MOUNT_HOTTRACK, "," MNTOPT_HOTTRACK }, { 0, NULL } }; static struct proc_xfs_info xfs_info_unset[] = { @@ -1053,6 +1058,9 @@ xfs_fs_put_super( { struct xfs_mount *mp = XFS_M(sb); + if (mp->m_flags & XFS_MOUNT_HOTTRACK) + hot_track_exit(sb); + xfs_filestream_unmount(mp); xfs_unmountfs(mp); @@ -1500,8 +1508,18 @@ xfs_fs_fill_super( goto out_unmount; } + if (mp->m_flags & XFS_MOUNT_HOTTRACK) { + error = hot_track_init(sb); + if (error) + goto out_free_root; + } + return 0; + out_free_root: + dput(sb->s_root); + sb->s_root = NULL; + out_filestream_unmount: xfs_filestream_unmount(mp); out_free_sb: -- 1.7.11.7