From patchwork Wed Nov 25 12:08:19 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anand Jain X-Patchwork-Id: 7698501 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 769C8BF90C for ; Wed, 25 Nov 2015 12:09:11 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 97105208D1 for ; Wed, 25 Nov 2015 12:09:10 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id A972E2084C for ; Wed, 25 Nov 2015 12:09:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753610AbbKYMJB (ORCPT ); Wed, 25 Nov 2015 07:09:01 -0500 Received: from aserp1040.oracle.com ([141.146.126.69]:20729 "EHLO aserp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753601AbbKYMI7 (ORCPT ); Wed, 25 Nov 2015 07:08:59 -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 tAPC8geE014663 (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 25 Nov 2015 12:08:43 GMT Received: from userv0121.oracle.com (userv0121.oracle.com [156.151.31.72]) by userv0022.oracle.com (8.13.8/8.13.8) with ESMTP id tAPC8gq1023533 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL); Wed, 25 Nov 2015 12:08:42 GMT Received: from abhmp0018.oracle.com (abhmp0018.oracle.com [141.146.116.24]) by userv0121.oracle.com (8.13.8/8.13.8) with ESMTP id tAPC8gRD032239; Wed, 25 Nov 2015 12:08:42 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:41 -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 6/7] btrfs-progs: add -O comp= option for mkfs.btrfs Date: Wed, 25 Nov 2015 20:08:19 +0800 Message-Id: <1448453300-8449-7-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 This provides default feature set by version, for mkfs.btrfs through the new option '-O comp=|', where x.y.z is the minimum kernel version that should be supported. Signed-off-by: Anand Jain --- mkfs.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/mkfs.c b/mkfs.c index 6cb998b..34ba77d 100644 --- a/mkfs.c +++ b/mkfs.c @@ -324,7 +324,9 @@ static void print_usage(int ret) fprintf(stderr, "\t-s|--sectorsize SIZE min block allocation (may not mountable by current kernel)\n"); fprintf(stderr, "\t-r|--rootdir DIR the source directory\n"); fprintf(stderr, "\t-K|--nodiscard do not perform whole device TRIM\n"); - fprintf(stderr, "\t-O|--features LIST comma separated list of filesystem features, use '-O list-all' to list features\n"); + fprintf(stderr, "\t-O|--features LIST comma separated list of filesystem features\n"); + fprintf(stderr, "\t use '-O list-all' to list features\n"); + fprintf(stderr, "\t use '-O comp=|' x.y.z is the minimum kernel version to be supported\n"); fprintf(stderr, "\t-U|--uuid UUID specify the filesystem UUID\n"); fprintf(stderr, "\t-q|--quiet no messages except errors\n"); fprintf(stderr, "\t-V|--version print the mkfs.btrfs version and exit\n"); @@ -1439,7 +1441,24 @@ int main(int ac, char **av) case 'O': { char *orig = strdup(optarg); char *tmp = orig; - + char *tok; + + tok = strtok(tmp, "="); + if (!strcmp(tok, "comp")) { + tok = strtok(NULL, "="); + if (!tok) { + fprintf(stderr, + "Provide a version for 'comp=' option, ref to 'mkfs.btrfs -O list-all'\n"); + exit(1); + } + if (btrfs_features_allowed_by_version(tok, &features) < 0) { + fprintf(stderr, "Wrong version format: '%s'\n", tok); + exit(1); + } + features &= BTRFS_MKFS_DEFAULT_FEATURES; + goto cont; + } + tmp = orig; tmp = btrfs_parse_fs_features(tmp, &features); if (tmp) { fprintf(stderr, @@ -1448,6 +1467,7 @@ int main(int ac, char **av) free(orig); exit(1); } +cont: free(orig); if (features & BTRFS_FEATURE_LIST_ALL) { btrfs_list_all_fs_features(0);