From patchwork Wed Nov 25 12:08:18 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anand Jain X-Patchwork-Id: 7698521 Return-Path: X-Original-To: patchwork-linux-btrfs@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 59290BF90C for ; Wed, 25 Nov 2015 12:09:13 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 822972084C for ; Wed, 25 Nov 2015 12:09:12 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 8F5A5208D1 for ; Wed, 25 Nov 2015 12:09:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753609AbbKYMJA (ORCPT ); Wed, 25 Nov 2015 07:09:00 -0500 Received: from aserp1040.oracle.com ([141.146.126.69]:20725 "EHLO aserp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753571AbbKYMI6 (ORCPT ); Wed, 25 Nov 2015 07:08:58 -0500 Received: from userv0022.oracle.com (userv0022.oracle.com [156.151.31.74]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id tAPC8eg6014623 (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 25 Nov 2015 12:08:41 GMT Received: from aserv0121.oracle.com (aserv0121.oracle.com [141.146.126.235]) by userv0022.oracle.com (8.13.8/8.13.8) with ESMTP id tAPC8eQ5023427 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL); Wed, 25 Nov 2015 12:08:40 GMT Received: from abhmp0018.oracle.com (abhmp0018.oracle.com [141.146.116.24]) by aserv0121.oracle.com (8.13.8/8.13.8) with ESMTP id tAPC8eJI016298; Wed, 25 Nov 2015 12:08:40 GMT Received: from arch2.sg.oracle.com (/10.186.101.159) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 25 Nov 2015 04:08:39 -0800 From: Anand Jain To: linux-btrfs@vger.kernel.org Cc: dsterba@suse.cz, calestyo@scientia.net, ahferroin7@gmail.com, 1i5t5.duncan@cox.net Subject: [PATCH 5/7] btrfs-progs: introduce framework version to features Date: Wed, 25 Nov 2015 20:08:18 +0800 Message-Id: <1448453300-8449-6-git-send-email-anand.jain@oracle.com> X-Mailer: git-send-email 2.6.2 In-Reply-To: <1448453300-8449-1-git-send-email-anand.jain@oracle.com> References: <1448453300-8449-1-git-send-email-anand.jain@oracle.com> X-Source-IP: userv0022.oracle.com [156.151.31.74] Sender: linux-btrfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-btrfs@vger.kernel.org X-Spam-Status: No, score=-7.5 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP As discussed in the mailing list this provides a framework to introduce the feature where mkfs and btrfs-convert can set the default features as per the given mainline kernel version. Suggested-by: David Sterba Signed-off-by: Anand Jain --- utils.c | 23 +++++++++++++++++++++++ utils.h | 1 + 2 files changed, 24 insertions(+) diff --git a/utils.c b/utils.c index 216efa6..a9b46b8 100644 --- a/utils.c +++ b/utils.c @@ -3222,3 +3222,26 @@ int btrfs_features_allowed_by_sysfs(u64 *features) closedir(dir); return 0; } + +int btrfs_features_allowed_by_version(char *version, u64 *features) +{ + int i; + int code; + char *ver = strdup(version); + + *features = 0; + code = version_to_code(ver); + free(ver); + if (code < 0) + return code; + + for (i = 0; i < ARRAY_SIZE(mkfs_features) - 1; i++) { + ver = strdup(mkfs_features[i].min_ker_ver); + + if (code >= version_to_code(ver)) + *features |= mkfs_features[i].flag; + + free(ver); + } + return 0; +} diff --git a/utils.h b/utils.h index cb20d73..1418e84 100644 --- a/utils.h +++ b/utils.h @@ -106,6 +106,7 @@ void btrfs_process_fs_features(u64 flags); void btrfs_parse_features_to_string(char *buf, u64 flags); u64 btrfs_features_allowed_by_kernel(void); int btrfs_features_allowed_by_sysfs(u64 *features); +int btrfs_features_allowed_by_version(char *version, u64 *features); struct btrfs_mkfs_config { char *label;