From patchwork Fri Sep 1 01:00:21 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Wareing X-Patchwork-Id: 9933237 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 5CCF4602F0 for ; Fri, 1 Sep 2017 01:00:33 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 46CEC26D08 for ; Fri, 1 Sep 2017 01:00:33 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 3B5ED274A3; Fri, 1 Sep 2017 01:00:33 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id DF97B26D08 for ; Fri, 1 Sep 2017 01:00:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751040AbdIABAb (ORCPT ); Thu, 31 Aug 2017 21:00:31 -0400 Received: from mx0b-00082601.pphosted.com ([67.231.153.30]:42131 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751009AbdIABA3 (ORCPT ); Thu, 31 Aug 2017 21:00:29 -0400 Received: from pps.filterd (m0089730.ppops.net [127.0.0.1]) by m0089730.ppops.net (8.16.0.21/8.16.0.21) with SMTP id v810xErW010507 for ; Thu, 31 Aug 2017 18:00:29 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : content-type : content-transfer-encoding : mime-version : subject : message-id : date : to; s=facebook; bh=QTXKiwhZ/N7S551L57jQ9ScDTl01nyZl3CHHKGL42U0=; b=iLtHSc+pSo78nlslvqPuJQjcAcIcP2XgAlWYf7vRjfCna69XXNBmS0fmoEAuxI0GmTie AiIeDeZK82Zp6BULDYpewF3RWG8S6t6Uw3/PVJF18DH/OXRVSjJSLdAFjaejyuL12V00 wviFBDLM/PCZGLYibwkxciA3SdAvdGzGWwA= Received: from maileast.thefacebook.com ([199.201.65.23]) by m0089730.ppops.net with ESMTP id 2cps6m91g2-1 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT) for ; Thu, 31 Aug 2017 18:00:29 -0700 Received: from NAM02-BL2-obe.outbound.protection.outlook.com (192.168.183.28) by o365-in.thefacebook.com (192.168.177.25) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 31 Aug 2017 21:00:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.onmicrosoft.com; s=selector1-fb-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=QTXKiwhZ/N7S551L57jQ9ScDTl01nyZl3CHHKGL42U0=; b=VCPBxMssg+glgUr+usg2bX9O9JAqSQPbqvYyJ18Osp5ddkqCSRpmWE93wfnJV5ksOGu9lKqHLEexE2u3iDR6Du3otoBSE+OKEMNXaQD2rKzX/JPFxTXuWC2zEyU7TczralHmr1uTkD1lQohx8+k8PjTeuHLU6kyZo9OeI93ffeE= Received: from [IPv6:2620:10d:c082:1055:79c4:93f0:8cdf:c4ac] (2620:10d:c090:200::7:c2d9) by BN6PR15MB1779.namprd15.prod.outlook.com (10.174.238.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.13.10; Fri, 1 Sep 2017 01:00:26 +0000 From: Richard Wareing MIME-Version: 1.0 (Mac OS X Mail 10.3 \(3273\)) Subject: [PATCH 1/3] xfs: Add rtdefault mount option Message-ID: <25856B28-A65C-4C5B-890D-159F8822393D@fb.com> Date: Thu, 31 Aug 2017 18:00:21 -0700 To: X-Mailer: Apple Mail (2.3273) X-Originating-IP: [2620:10d:c090:200::7:c2d9] X-ClientProxiedBy: CY4PR08CA0077.namprd08.prod.outlook.com (10.171.251.170) To BN6PR15MB1779.namprd15.prod.outlook.com (10.174.238.145) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 17bce532-7980-4b32-2de3-08d4f0d4d590 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(300000502095)(300135100095)(22001)(2017030254152)(300000503095)(300135400095)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:BN6PR15MB1779; X-Microsoft-Exchange-Diagnostics: 1; BN6PR15MB1779; 3:htqm118XkkHwbrYYZC12JIBg57qCDBmAzen9EGumJB6KOlk0WWeWTVvzr5F7unVNM+GHDl5gKq8rmdfF5+/xTthBvUXo98nW1eNggRYQltXkAM+TWRPs9t18/3mChxgpsELN9r0rxlniOLZqCBInFVNLE2HVXzBU2m/1/myF3vorcuhOeq5KGWjNt0jxelXVHDFw0M7kaazPg/RxbSDvuoAXMmzVJp7IeTgMn0+PFT6615tcBLRnWYHxR6h+ZGIL; 25:AfZbbh4hu7NTYu3VB9Mm+fbZJI/cJ/fJbGQ1bQN+4K97yjBxloUSMkB/IgZyY1rsICKsY+RdJ5nfs3Twb9lpXtHfZoErwsO4LbvkjXWCNpGbqu1FZHqRpawflyOD8veYRRp0q73W1TTClymyMx/f9HqjJKtb9PWnqe2o6Fkb4DtoZ0yIP0/MH+fnAjrvwCfZEnSCirsqxdp2DPPS1sYQPyi9XIXdHGNcf/PUbYsJZu1FaYTt5/dPUYwu8qovM//HCXSIJhPO5HW9bXE+Ce8/e6UJuS3rZdcYYkZeLLPpTKblcWkCB7Hh3uUPsyl4QJ3zLVJBM72bkPwzBbEz+M7iyQ==; 31:gmvco6k95FEKqUfp6ILY8KedckLgOJXogbepSPsOlNSaW2VdT0HFcldd8ECMA91OyVaudty7rwsZKC5s7SiDPRQijDNyUKnDZ8Fi3VFh7YCiczKp9q46CI8zBEeHsR0SS9RcbDKMEwPEvHtMVz00G5+b75ob+Vvse85zHgktZZhuq2ArbvOklBg8jorR5Iwze3IsVYR81j3sGu5xkhMsxec3C/B3od1e0VYVpE47aow= X-MS-TrafficTypeDiagnostic: BN6PR15MB1779: X-Microsoft-Exchange-Diagnostics: 1; BN6PR15MB1779; 20:jKADTgmsyOOWsg+PbbFYznm/FS7WMOalky2CcLNCUtLUZ/4Dp9SJKagt7T3z0BcIdHderqtdpG+XlMp4HP1vN94J/5EzBrj8jMEFLteTuTgs8z8sYOwurSuek2rx4oZWrygMYL2lbRc6c7ybxfWH8+1Ru4ZNECgOArxtfYrPETl3EYqS6WPOR45F6sSJZZn92aYdXctSA8B3evExcZY/J/W5PpNmau3XW5OU+deldRtrm2U+NgLkAnLc4TF6ZzcPwkg5jg2v2KcpRmIlzac0yQ0STBFBL8jInzuq7XFOSoRNLpI0fCxnQU/xYgRbnyuweDYzhCNbig2AX30aOiLeRsFtSqTdY7II4nwvdjnnO0VylVqCy292v9Y1eESY6AYn6GdOIsCjIDg6hxhN3tB4OHhzEjIln8iUvdkhmZhF/SF7d31SWhtBemvEpfQgOLohbKmTz7rdwwefWPaZGaxMuqQ1mT4BcxraIJki2dE7G2t6NGec9YeHTt6ENRbLJ3Jy; 4:CThj4RNzdMs1J6eeDmi0ABVaUS7ye2P/XSim9p0xRYv0IMonBw+bXQpHYgMK/UgX83c19dClAu1S8/QaOWRTzjcfEbCJfIz/iRvIP71rUEwcFSg9CdaP8R+RemrTs6+ETf3VGbBE9Z/q5y1ndpLd8W44NrLQmiaIqq+/9Nh0uS1Yen9By4uxPE959o3EKpXPundZQZC2Idf9Y7f31j6uVmIfSM3hz44ANJZLeSWxDmChZDsdDSokWLJhrH9YwgXi4canHY8p/d0H7+i5Q82Q6jR/rhemqhHTEr03GA4fY/BgAFfWBnHSQgsINUtRJUVLK1p3R5FVn/s169QMNttZiNSuqDw9WGL1R9YT/F0EI5luJLTdiGyeyal/O3xcpJad X-Exchange-Antispam-Report-Test: UriScan:(20558992708506)(35073007944872)(84791874153150); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(93006095)(93001095)(3002001)(10201501046)(100000703101)(100105400095)(6041248)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123555025)(20161123564025)(20161123562025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BN6PR15MB1779; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BN6PR15MB1779; X-Forefront-PRVS: 0417A3FFD2 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(6009001)(189002)(199003)(53754006)(57306001)(23726003)(1706002)(478600001)(25786009)(305945005)(2361001)(42186005)(6116002)(105586002)(101416001)(7736002)(106356001)(82746002)(2351001)(189998001)(33656002)(8676002)(50986999)(50226002)(8746002)(81156014)(2906002)(81166006)(966005)(8936002)(6486002)(6666003)(6306002)(68736007)(53936002)(97736004)(36756003)(6916009)(47776003)(83716003)(50466002)(575784001)(86362001)(5660300001)(110136004); DIR:OUT; SFP:1102; SCL:1; SRVR:BN6PR15MB1779; H:[IPv6:2620:10d:c082:1055:79c4:93f0:8cdf:c4ac]; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: fb.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN6PR15MB1779; 23:PBJulYrPJafILVSfywGhW721+/CR0EiUWMxpEEwEw?= =?us-ascii?Q?JXdSZaZ2OulqEkNz1hEtMp/qJHnU20CCfeh08utfExdfsk+5lB5mcEyr690P?= =?us-ascii?Q?Eq71XGloGhZUaTfMwR/DSX8obmUKZqpZ0omzJAfugSuePW+6oRcknzYqPZgB?= =?us-ascii?Q?9ULBPbHseXKryQ+xwtT2o8RqAt5/D7CbVytWVvK9FKT88pXlcNE+YXUBp0KR?= =?us-ascii?Q?waCfcCwc/L5QpMNaHNF15gl4slO6KRxlZV/0jkaZ3w574ULWyl+zHOOAt42X?= =?us-ascii?Q?tfMvroh+BNI0sPKm/paEIm8fAV6NK5tER42lP73gLoYVnayr++oT6CbMH3Dy?= =?us-ascii?Q?Cm4Oe+PgN4MsUCKdSjvDWCFuAgx5qZ4hF3qJmxOLh0/2fw9rUOse1RLz7B19?= =?us-ascii?Q?Lo9aBNMLeK69eNoY20maTuzNXtvDVgsW/Vd19NxDBQ2RGwMQB3dQiFIRN5iM?= =?us-ascii?Q?lNhLb+3HVBepFQwSEruLqmR2HJ9nlQ5wJcR5ybU16ma7KdExkz+ROiPxt0xz?= =?us-ascii?Q?pj9SuP3fSqgoXQmQ/fXnVqk9tv2jsQ3V9lG+WaTgt3cIpcpu6Z5L9TxF99Ky?= =?us-ascii?Q?i1nDJ8+RzbccAd4DywPxZcmn3jbWWDGR30IXgDX5mtTylfcBHBOzfBYzXb4O?= =?us-ascii?Q?CSLLR3FbTlcJpTTIoqZVZFHUuRJuits8PoIaeiKtrhb1p1k++VEcPi83rJ2V?= =?us-ascii?Q?dNRG4+nYDzQqt2gw8e3cas0MiNlxaU+eb7FSdFEiqpjBgd9oVjVhRaRMvsWh?= =?us-ascii?Q?1VaiXW5sHTqDYUFGVe502+cfgAscsp0JHVxFuJPg34iZmVLq9Q2UXRox78Ep?= =?us-ascii?Q?zz6B7RDEm32ONBumUjZFV0jXsJi+c5tI48sv8UzoQ1BOB2tbdClV+w5UYoMM?= =?us-ascii?Q?ABEhBI74BvXL2ovU+BqWJON5BrVQmNBxs6SH0f2VQmh8QrynMunuS3Nu6FOu?= =?us-ascii?Q?/3et6nysGd7wvYMdbqGMJa3cHoDwQxRqMa5z7ulYcbnDP4lCxjfx/bUSoxFx?= =?us-ascii?Q?NSgF6fOP4JsZUfhQxrJezeGdFciF4cYBLzEimckjRWXbZtj56qFvaeIskIJ9?= =?us-ascii?Q?Z3dpwRojU8ji4Mi1f6lV0lix4VO?= X-Microsoft-Exchange-Diagnostics: 1; BN6PR15MB1779; 6:rUCqNykXiylnYjJTUsJkF8SrlheBa/nxu+n94bkPKZnUs3uYNxD0x5Lb6Zbuzr/uzXyj67uL5XfYZHngoRZalbM5nhZpK8A5l1bzYkLkEeyYqx56wm+bJXgiIhqzc6hKymjr2HcNeycuTOJg+EQGV/Y8aX0aelbd2RrZ9fiwOTJdN/sZN7mo/T6ZEg3KbNrNbNOkH5CZc49ahh/vPt+D/MwbwSJIcZr6adNhGy/GnIfueii4um8ffbqpwfBRGAbRzEydFyz2O75r/7f57lPkXpNFpNn5CqpZZtXI0+SYuoa+WMCWHE/hKK1hGSf4FBzFLwjohkLgufGnZIxV+snq8A==; 5:lhhvH5U9xjY+JGvHFAiE5chfZsuApZoDC6L3KpPcvJp1cYWserfEHzeV0zNz8uecm8rIfEv3eaRqEL+/5GHz5XZkdPJP8FFX9ykOsImknPNT79Svt4H4PWlYA2orSCnx+fHL/P8ep7jvcX/0pCamuA==; 24:oVbhtWT3MmZmxsCQTmgSB5WYxn9eYbSCvQ7wSV0jQ4nC1nd70glZbZGWHCdTcV0N7r6gyUqCwWLNe9/83dSOsUB5H2EqSC2kIvTiNIB/igM=; 7:SFbpxn5fIkH+OIK0KRDy31ODw/i3TrNJD8cmw0ykZgL/X3vykBOcVdVORFoJHpIO/5sqfqXFXDA4P0eqEiroNwwQnor5hmyFa35yisdL8NdMIwjlxLJWzTHoxZ+iqMK0bgfun4+l7s4PzxeeUlXBeMegbiRDOKa4IK5EM3TPNUjMskGndmcVi5FkR3w+u3jaNMS2KW6G3J0/MMX2LykFsyA/oEOLSq1ro1nwpSPRgM0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN6PR15MB1779; 20:+O27coT2DYwomF6XhK1YsWenE1CmGIfJlTYFlTpITHC8c93/8USXKgHuEdqMFZwKhqkNiYBmgrHmKm0H5GeEXAmuPkUma/tnNgivfshCjkJOaATmofhNaO1W+m1kJhxhnFEzku5kSskLa/8ZBnjSnqOFRi8gR/MpboJ6TG28F+4= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Sep 2017 01:00:26.8123 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR15MB1779 X-OriginatorOrg: fb.com X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-08-31_09:, , signatures=0 Sender: linux-xfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Hello all, It turns out, XFS real-time volumes are actually a very useful/cool feature, I am wondering if there is support in the community to make this feature a bit more user friendly, easier to operate and interact with. To kick things off I bring patches table :). For those who aren't familiar with real-time XFS volumes, they are basically a method of storing the data blocks of some files on a separate device. In our specific application, are using real-time devices to store large files (>256KB) on HDDS, while all metadata & journal updates goto an SSD of suitable endurance & capacity. We also see use-cases for this for distributed storage systems such as GlusterFS which are heavy in metadata operations (80%+ of IOPs). By using real-time devices to tier your XFS filesystem storage, you can dramatically reduce HDD IOPs (50% in our case) and dramatically improve metadata and small file latency (HDD->SSD like reductions). Here are the features in the proposed patch set: 1. rtdefault - Defaulting block allocations to the real-time device via a mount flag rtdefault, vs using an inheritance flag or ioctl's. This options gives users tier'ing of their metadata out of the box with ease, and in a manner more users are familiar with (mount flags), vs having to set inheritance bits or use ioctls (many distributed storage developers are resistant to including FS specific code into their stacks). 2. rtstatfs - Returning real-time block device free space instead of the non-realtime device via the "rtstatfs" flag. This creates an experience/semantics which is a bit more familiar to users if they use real-time in a tiering configuration. "df" reports the space on your HDDs, and the metadata space can be returned by a tool like xfs_info (I have patches for this too if there is interest) or xfs_io. I think this might be a bit more intuitive for the masses than the reverse (having to goto xfs_io for the HDD space, and df for the SSD metadata). 3. rtfallocmin - This option can be combined with either rtdefault or standalone. When combined with rtdefault, it uses fallocate as "signal" to *exempt* storage on the real-time device, automatically promoting small fallocations to the SSD, while directing larger ones (or fallocation-less creations) to the HDD. This option also works really well with tools like "rsync" which support fallocate (--preallocate flag) so users can easily promote/demote files to/from the SSD. Ideally, I'd like to help build-out more tiering features into XFS if there is interest in the community, but figured I'd start with these patches first. Other ideas/improvements: automatic eviction from SSD once file grows beyond rtfallocmin, automatic fall-back to real-time device if non-RT device (SSD) is out of blocks, add support for the more sophisticated AG based block allocator to RT (bitmapped version works well for us, but multi-threaded use-cases might not do as well). Looking forward to getting feedback! Richard Wareing Note: The patches should patch clean against the XFS Kernel master branch @ https://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git (SHA: 6f7da290413ba713f0cdd9ff1a2a9bb129ef4f6c). ======= - Adds rtdefault mount option to default writes to real-time device. This removes the need for ioctl calls or inheritance bits to get files to flow to real-time device. - Enables XFS to store FS metadata on non-RT device (e.g. SSD) while storing data blocks on real-time device. Negates any code changes by application, install kernel, format, mount and profit. --- fs/xfs/xfs_inode.c | 8 ++++++++ fs/xfs/xfs_mount.h | 5 +++++ fs/xfs/xfs_super.c | 13 ++++++++++++- 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index ec9826c..1611195 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -873,6 +873,14 @@ xfs_ialloc( break; case S_IFREG: case S_IFDIR: + /* Set flags if we are defaulting to real-time device */ + if (mp->m_rtdev_targp != NULL && + mp->m_flags & XFS_MOUNT_RTDEFAULT) { + if (S_ISDIR(mode)) + ip->i_d.di_flags |= XFS_DIFLAG_RTINHERIT; + else if (S_ISREG(mode)) + ip->i_d.di_flags |= XFS_DIFLAG_REALTIME; + } if (pip && (pip->i_d.di_flags & XFS_DIFLAG_ANY)) { uint64_t di_flags2 = 0; uint di_flags = 0; diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h index 9fa312a..da25398 100644 --- a/fs/xfs/xfs_mount.h +++ b/fs/xfs/xfs_mount.h @@ -243,6 +243,11 @@ typedef struct xfs_mount { allocator */ #define XFS_MOUNT_NOATTR2 (1ULL << 25) /* disable use of attr2 format */ +/* FB Real-time device options */ +#define XFS_MOUNT_RTDEFAULT (1ULL << 61) /* Always allocate blocks from + * RT device + */ + #define XFS_MOUNT_DAX (1ULL << 62) /* TEST ONLY! */ diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c index 455a575..e4f85a9 100644 --- a/fs/xfs/xfs_super.c +++ b/fs/xfs/xfs_super.c @@ -83,7 +83,7 @@ enum { Opt_quota, Opt_noquota, Opt_usrquota, Opt_grpquota, Opt_prjquota, Opt_uquota, Opt_gquota, Opt_pquota, Opt_uqnoenforce, Opt_gqnoenforce, Opt_pqnoenforce, Opt_qnoenforce, - Opt_discard, Opt_nodiscard, Opt_dax, Opt_err, + Opt_discard, Opt_nodiscard, Opt_dax, Opt_rtdefault, Opt_err, }; static const match_table_t tokens = { @@ -133,6 +133,9 @@ static const match_table_t tokens = { {Opt_dax, "dax"}, /* Enable direct access to bdev pages */ +#ifdef CONFIG_XFS_RT + {Opt_rtdefault, "rtdefault"}, /* Default to real-time device */ +#endif /* Deprecated mount options scheduled for removal */ {Opt_barrier, "barrier"}, /* use writer barriers for log write and * unwritten extent conversion */ @@ -367,6 +370,11 @@ xfs_parseargs( case Opt_nodiscard: mp->m_flags &= ~XFS_MOUNT_DISCARD; break; +#ifdef CONFIG_XFS_RT + case Opt_rtdefault: + mp->m_flags |= XFS_MOUNT_RTDEFAULT; + break; +#endif #ifdef CONFIG_FS_DAX case Opt_dax: mp->m_flags |= XFS_MOUNT_DAX; @@ -492,6 +500,9 @@ xfs_showargs( { XFS_MOUNT_DISCARD, ",discard" }, { XFS_MOUNT_SMALL_INUMS, ",inode32" }, { XFS_MOUNT_DAX, ",dax" }, +#ifdef CONFIG_XFS_RT + { XFS_MOUNT_RTDEFAULT, ",rtdefault" }, +#endif { 0, NULL } }; static struct proc_xfs_info xfs_info_unset[] = {