From patchwork Sun Aug 16 06:57:52 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: liuqi_colin@msn.com X-Patchwork-Id: 1345429 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.openwrt.org (client-ip=2001:8b0:10b:1231::1; helo=merlin.infradead.org; envelope-from=openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=msn.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=merlin.20170209 header.b=hejdkVli; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=msn.com header.i=@msn.com header.a=rsa-sha256 header.s=selector1 header.b=fQAQ7tff; dkim-atps=neutral Received: from merlin.infradead.org (merlin.infradead.org [IPv6:2001:8b0:10b:1231::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4BTp3T3wzMz9sTS for ; Sun, 16 Aug 2020 17:00:37 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date:Subject:To:From: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Owner; bh=RVgL+NtW9ZTWgrnt2qXqbnA/z9o6eHdiJ4nD/krpUgk=; b=hejdkVli6+7wpEE7c4PWDn+N3M EpmStPpa0FPtJAWU7enAZMQbrF7FsPif1sTSY0VONBe/cfZXsRnpDFca3085nj4mpYRhc5tJk5pOv a6wJjhXIkdyoro/W+EQWO4bv6iS4XMvH31g2woRDbwEYKRnWmuvxDh8bNDsjVez+FbOiboKFQ30VW x+j9KMQ7f9KMNI7j1jV+Q/UcTn5boC7qeF7qrUJA9Uww2871mChMfZRWC5/CAzGqz9T7fzT2xt/4V xIU4s1jqr0JF8Z5Uu3JgNYXto+1sa1R4SIXEQc88rzuhtHMcdUxWbUOGjQoZ3xPi443JCGXlmXpAf AU6sY/og==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1k7CcK-0003IV-Br; Sun, 16 Aug 2020 06:58:08 +0000 Received: from mail-mw2nam10olkn2063.outbound.protection.outlook.com ([40.92.42.63] helo=NAM10-MW2-obe.outbound.protection.outlook.com) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1k7CcA-0003IA-Me for openwrt-devel@lists.openwrt.org; Sun, 16 Aug 2020 06:58:00 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AB4k6RBWoE9GA9zrSAnCipcsNRlpMMGMvJwloPNIz/+X8Q/AKRMslm2hnLw8+nsJWP74a6XkeIg3RerT7501maWR9GISnVvnRCiVp7WZFBVifxNfEFGfSEv3T5DJcWyeOkI6Buo994PvCH2gi9ZMDrFTrFHxmiR/7/B9+RwFe8pahlGd/itodrT5tnvRGn/dHdikq/l2SfgKfBRlElU+gmH/fanMJm0hQpUagOFsPGIVHpKTH0ICZtqGvSuES+Hirrw9N24lP/ZCB2sucVOIb5JXhgAiHKFh1TlmM7JA0UGiveAEVPpiep+m4VGs4o5n/yJAm3J6mg1PaIWxQDydFg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yAkV27yo7cjfrjhufyaot8sYhsTgUOLYZCfFmZpn4cg=; b=VZ3iA0krm+pCqk+qZ5ZkJBv0UYq//oLqZihTMFhsf2gPF2rM53o97YXM/54irxhaYZkkOfVRirrDjdJT0YicapyKhBhFrb7mIsL4FVdAj+fYoo4taQ2ywT7620EpTnf0Us4RnxR8i8dCkle3PNXw9knYlp7tfTIlmxJSISqnJJMSQDdiZ1mWvcaihnzfQbVAjbdat4Yy4Zm7L+hmM+rrcnTXJebmBTPa6i4nZ9b27WzrJ2UDs8yerokvFApDJ0I2MJTPEXfy06++nlDOFrHMPztgQjKtCA+FWnEORxk4RtBL0MFiSIpe/3aItip1LbD/7WfVNLx4ZgQVz8/lA8ZnvQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=msn.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yAkV27yo7cjfrjhufyaot8sYhsTgUOLYZCfFmZpn4cg=; b=fQAQ7tff7N9PKJ6Uv6eJqQ0WsNl5VXLFWfdlltPey021ZhyNXVOy69DhItPvRnt1osfx2xECInT077OVg2Gb9nf9CzadRGzTnOmE7SMoH/sU6mlhhSSNvBNzQcemqSkvak96LZ3ch6ouvuS7KU9gGghneRI04WRxFU3Pe6VA/Xwa6fPIzsBTjSuOiQ2HIEmU7WMMVwFrF+yg2BGSkj5xMUo232oBOwp55/0Z1vU2CHLJeomStPc6y60Lk2AtlBeay/1QwWVfcTBmJvEEY3K6VKV1qgvmCLLj961uLPOkemMnntJkYDx0r4JhdTfw7ldWmrphiVjR4fqsjSHJWrnZZg== Received: from MW2NAM10FT034.eop-nam10.prod.protection.outlook.com (2a01:111:e400:7e87::4d) by MW2NAM10HT104.eop-nam10.prod.protection.outlook.com (2a01:111:e400:7e87::226) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3283.17; Sun, 16 Aug 2020 06:57:55 +0000 Received: from BYAPR03MB4440.namprd03.prod.outlook.com (2a01:111:e400:7e87::46) by MW2NAM10FT034.mail.protection.outlook.com (2a01:111:e400:7e87::231) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3283.17 via Frontend Transport; Sun, 16 Aug 2020 06:57:55 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:832C7D5E989F2D283555DA8310693A6C676246A97DF99ED3191376B6EB4B9F95; UpperCasedChecksum:32A478844AA7B160B334D4235B9655E020282235B68BD56F580FB0B578A79CFC; SizeAsReceived:7398; Count:47 Received: from BYAPR03MB4440.namprd03.prod.outlook.com ([fe80::6554:e617:185a:17eb]) by BYAPR03MB4440.namprd03.prod.outlook.com ([fe80::6554:e617:185a:17eb%7]) with mapi id 15.20.3283.026; Sun, 16 Aug 2020 06:57:55 +0000 From: liuqi_colin@msn.com To: openwrt-devel@lists.openwrt.org Subject: [PATCH] fstools: support extroot for non-MTD rootfs_data Date: Sat, 15 Aug 2020 23:57:52 -0700 Message-ID: X-Mailer: git-send-email 2.24.3 (Apple Git-128) X-ClientProxiedBy: BYAPR05CA0045.namprd05.prod.outlook.com (2603:10b6:a03:74::22) To BYAPR03MB4440.namprd03.prod.outlook.com (2603:10b6:a03:d0::11) X-Microsoft-Original-Message-ID: <20200816065752.79788-1-liuqi_colin@msn.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (73.93.48.10) by BYAPR05CA0045.namprd05.prod.outlook.com (2603:10b6:a03:74::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3305.13 via Frontend Transport; Sun, 16 Aug 2020 06:57:54 +0000 X-Mailer: git-send-email 2.24.3 (Apple Git-128) X-Microsoft-Original-Message-ID: <20200816065752.79788-1-liuqi_colin@msn.com> X-TMN: [u5yTdUPWNBe96v6qcoiZ8cl8OcbF1kyB] X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 47 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: 8f8a5697-57ae-478b-e085-08d841b1b378 X-MS-Exchange-SLBlob-MailProps: 7MJMDUNTCtyHz2djROgLQnAixh9wAYmeGrM+RpUQSw8SNaNzlytty39R945e4InN24rRayR0I7r865DdASOds2J3dliQBeNp27DhDjw500s09m2vlRDyRKjoWttw9XlGfbvlxR2V9G95oZB+CXzOYoGfVYIk4ihxp/dpYiHvVKA9qi/iRuDmUzWku8+vQMxcok3RPcxct2VDZpkMIO1AMuD1goV4h6d4Af0YsAg6Qvji/iS4YeVLHgftpl/qHFR41Sjshwl41/BeHxxf/kddZYAFbh2q6wPRkK8r4aQyKcDEizHQgKdsxImYg1PGjgri93wcvK0w8x6I9bZ5Ftq2eyiawtWhWKwlyRCsx3dTvTdK+DPzc+hHdfzX8vgjlqozQvJU5fF69gI5NGeJO3bIUkKrwzUGKJd14ExlqaVm3U8fBG15IzohgzzNI68XFAE4ciwz6TXHmp+hDtuYOPhiue2n0m9LMJ+DkD1a7Hfd4Ra1i1HzoOiS0OrjHQyIkJNOxaOSQDU384wXlVJK9OqGMzTI0cSSwirDlA1LtobTKPRPgP9i4eZfBtdg0PsvzrtB3yD0EWVuNwR9LCktZAYqzZOYZNK9QLxY0iBkJSPlNLPnfCtcRN/dFB+X+4ECPXFY6TIvyIPrCSz3zfjJQ3DP8/2lDdrBFnd3nBOyevvS4X8fxWLPJQMoKPIcI04e2oTZpQTLSjQTqbntIyxksyVz22d3cMI8CCjBY8xrv2wmpwnKLqsMxRXNCQ== X-MS-TrafficTypeDiagnostic: MW2NAM10HT104: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 2OROqoWcavGtKIyK7gdQV1aGaRC8tkzwXeD+jEx+fRkB1U4oZ0C4KU3xwIIpBJgSWNDMnN4sFYPfdmYtm65UlvXlevNaSEaomLzUWTCPlH1ilSUKx7GIcf/a8T6L19goXA0loSNxdpkangIQ2br9E7uGtHIgzHutVBLCfILk/DyS3Pm8mCALk2hnkFMK3/uAOhdnSay6p4M4+Yz4PcJ2Vg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:0; SRV:; IPV:NLI; SFV:NSPM; H:BYAPR03MB4440.namprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:; DIR:OUT; SFP:1901; X-MS-Exchange-AntiSpam-MessageData: DvvYgKSl6JGbunD7mXJk6Dq0a9ohJjpQ9gFuRtGTz+8Lq1Ipdzw54vYZHT0LG7fVse5lPC8CGqbDSkgOEqq8aTOa/0l7RhEQnvcK769DGJnBe//bvv+2YlfronmAmihZPsS5k1+ojHs4D25MQZa+zg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8f8a5697-57ae-478b-e085-08d841b1b378 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Aug 2020 06:57:55.2783 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-AuthSource: MW2NAM10FT034.eop-nam10.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW2NAM10HT104 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200816_025758_969627_E7372C62 X-CRM114-Status: GOOD ( 18.29 ) X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [40.92.42.63 listed in list.dnswl.org] -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [40.92.42.63 listed in wl.mailspike.net] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider [liuqi_colin[at]msn.com] -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 0.0 MSGID_FROM_MTA_HEADER Message-Id was added by a relay X-BeenThere: openwrt-devel@lists.openwrt.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: OpenWrt Development List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Qi Liu Sender: "openwrt-devel" Errors-To: openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org From: Qi Liu In order to support extroot, block extroot command has to be able to discover and properly mount the rootfs_data volume in order to discover the extroot volume. Currently this process can only discover MTD devices. This patch leverages libfstools in a similar way as mount_root to discover, initialize, and mount rootfs_data volume. It would enable any device with non-MTD rootfs_data volume to support extroot, including x86. Signed-off-by: Qi Liu --- CMakeLists.txt | 4 ++-- block.c | 40 ++++++++++++++++++++++++++++++++++++++++ libfstools/fstype.h | 12 ++++++++++++ libfstools/libfstools.h | 11 +---------- 4 files changed, 55 insertions(+), 12 deletions(-) create mode 100644 libfstools/fstype.h diff --git a/CMakeLists.txt b/CMakeLists.txt index a586577..4b6e3e7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -75,9 +75,9 @@ INSTALL(TARGETS blockd RUNTIME DESTINATION sbin) ADD_EXECUTABLE(block block.c probe.c probe-libblkid.c) IF(DEFINED CMAKE_UBIFS_EXTROOT) ADD_DEFINITIONS(-DUBIFS_EXTROOT) - TARGET_LINK_LIBRARIES(block blkid-tiny dl uci ubox ubus blobmsg_json ubi-utils ${json}) + TARGET_LINK_LIBRARIES(block fstools blkid-tiny dl uci ubox ubus blobmsg_json ubi-utils ${json}) ELSE(DEFINED CMAKE_UBIFS_EXTROOT) - TARGET_LINK_LIBRARIES(block blkid-tiny dl uci ubox ubus blobmsg_json ${json}) + TARGET_LINK_LIBRARIES(block fstools blkid-tiny dl uci ubox ubus blobmsg_json ${json}) ENDIF(DEFINED CMAKE_UBIFS_EXTROOT) INSTALL(TARGETS block RUNTIME DESTINATION sbin) diff --git a/block.c b/block.c index 569bf56..66cce46 100644 --- a/block.c +++ b/block.c @@ -45,6 +45,8 @@ #include #include +#include "libfstools/fstype.h" +#include "libfstools/volume.h" #include "probe.h" #define AUTOFS_MOUNT_PATH "/tmp/run/blockd/" @@ -1590,6 +1592,44 @@ static int main_extroot(int argc, char **argv) } #endif + /* Find volume using libfstools */ + struct volume *data = volume_find("rootfs_data"); + if (data) { + volume_init(data); + + switch (volume_identify(data)) { + case FS_EXT4: { + char cfg[] = "/tmp/ext4_cfg"; + + /* Mount volume and try extroot (using fstab from that vol) */ + mkdir_p(cfg); + if (!mount(data->blk, cfg, "ext4", MS_NOATIME, NULL)) { + err = mount_extroot(cfg); + umount2(cfg, MNT_DETACH); + } + if (err < 0) + rmdir("/tmp/overlay"); + rmdir(cfg); + return err; + } + + case FS_F2FS: { + char cfg[] = "/tmp/f2fs_cfg"; + + /* Mount volume and try extroot (using fstab from that vol) */ + mkdir_p(cfg); + if (!mount(data->blk, cfg, "f2fs", MS_NOATIME, NULL)) { + err = mount_extroot(cfg); + umount2(cfg, MNT_DETACH); + } + if (err < 0) + rmdir("/tmp/overlay"); + rmdir(cfg); + return err; + } + } + } + /* As a last resort look for /etc/config/fstab on "rootfs" partition */ return mount_extroot(NULL); } diff --git a/libfstools/fstype.h b/libfstools/fstype.h new file mode 100644 index 0000000..8882343 --- /dev/null +++ b/libfstools/fstype.h @@ -0,0 +1,12 @@ +#ifndef _FS_TYPE_H__ +#define _FS_TYPE_H__ +enum { + FS_NONE, + FS_SNAPSHOT, + FS_JFFS2, + FS_DEADCODE, + FS_UBIFS, + FS_F2FS, + FS_EXT4, +}; +#endif \ No newline at end of file diff --git a/libfstools/libfstools.h b/libfstools/libfstools.h index f27307a..8d3362f 100644 --- a/libfstools/libfstools.h +++ b/libfstools/libfstools.h @@ -18,19 +18,10 @@ #include #include #include +#include "fstype.h" struct volume; -enum { - FS_NONE, - FS_SNAPSHOT, - FS_JFFS2, - FS_DEADCODE, - FS_UBIFS, - FS_F2FS, - FS_EXT4, -}; - enum fs_state { FS_STATE_UNKNOWN, FS_STATE_PENDING,