From patchwork Thu Feb 4 17:44:04 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Aneesh Kumar K.V" X-Patchwork-Id: 77164 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter.kernel.org (8.14.3/8.14.3) with ESMTP id o14HiOld009677 for ; Thu, 4 Feb 2010 17:44:24 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754213Ab0BDRoV (ORCPT ); Thu, 4 Feb 2010 12:44:21 -0500 Received: from e23smtp04.au.ibm.com ([202.81.31.146]:45447 "EHLO e23smtp04.au.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752469Ab0BDRoS (ORCPT ); Thu, 4 Feb 2010 12:44:18 -0500 Received: from d23relay04.au.ibm.com (d23relay04.au.ibm.com [202.81.31.246]) by e23smtp04.au.ibm.com (8.14.3/8.13.1) with ESMTP id o14Hejdp013746 for ; Fri, 5 Feb 2010 04:40:45 +1100 Received: from d23av04.au.ibm.com (d23av04.au.ibm.com [9.190.235.139]) by d23relay04.au.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id o14HdHk11155086 for ; Fri, 5 Feb 2010 04:39:17 +1100 Received: from d23av04.au.ibm.com (loopback [127.0.0.1]) by d23av04.au.ibm.com (8.14.3/8.13.1/NCO v10.0 AVout) with ESMTP id o14HiGlV015305 for ; Fri, 5 Feb 2010 04:44:17 +1100 Received: from localhost.localdomain ([9.124.220.136]) by d23av04.au.ibm.com (8.14.3/8.13.1/NCO v10.0 AVin) with ESMTP id o14HiB8P015154; Fri, 5 Feb 2010 04:44:15 +1100 From: "Aneesh Kumar K.V" To: chris.mason@oracle.com Cc: linux-btrfs@vger.kernel.org, "Aneesh Kumar K.V" Subject: [PATCH -V2 3/6] debug-btrfs: Add open file system command Date: Thu, 4 Feb 2010 23:14:04 +0530 Message-Id: <1265305447-30780-3-git-send-email-aneesh.kumar@linux.vnet.ibm.com> X-Mailer: git-send-email 1.7.0.rc0.48.gdace5 In-Reply-To: <1265305447-30780-1-git-send-email-aneesh.kumar@linux.vnet.ibm.com> References: <1265305447-30780-1-git-send-email-aneesh.kumar@linux.vnet.ibm.com> Sender: linux-btrfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-btrfs@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter.kernel.org [140.211.167.41]); Thu, 04 Feb 2010 17:44:24 +0000 (UTC) diff --git a/debugbtrfs/cmds.c b/debugbtrfs/cmds.c index f5ed877..cd2901b 100644 --- a/debugbtrfs/cmds.c +++ b/debugbtrfs/cmds.c @@ -18,6 +18,11 @@ */ #include +#include +#include + +#include "ctree.h" +#include "disk-io.h" #include "debug_btrfs.h" void do_show_debugfs_params(int argc, char *argv[]) @@ -25,3 +30,21 @@ void do_show_debugfs_params(int argc, char *argv[]) FILE *out = stdout; fprintf(out, "Filesystem in use: %s\n", current_device); } + +void do_open_filesys(int argc, char *argv[]) +{ + if (argc != 1) { + free((void *)current_device); + current_device = strdup(argv[1]); + } + + if (current_fs_root) + close_ctree(current_fs_root); + + radix_tree_init(); + current_fs_root = open_ctree(current_device, 0, 0); + if (!current_fs_root) { + fprintf(stderr, "unable to open %s\n", current_device); + return; + } +} diff --git a/debugbtrfs/debug_btrfs.c b/debugbtrfs/debug_btrfs.c index 44d6f64..d9f10e9 100644 --- a/debugbtrfs/debug_btrfs.c +++ b/debugbtrfs/debug_btrfs.c @@ -19,27 +19,25 @@ #include #include +#include #include #include "debug_btrfs.h" extern ss_request_table btrfs_debug_cmds; const char *current_device; - -void usage(char *prg) -{ - fprintf(stderr, "Usage: %s device\n", prg); - exit(1); -} +struct btrfs_root *current_fs_root; +extern void do_open_filesys(int argc, char *argv[]); int main(int argc, char *argv[]) { int sci_idx; int retval; - if (argc < 2) - usage(argv[0]); + if (argc != 1) { + /* open the file system */ + do_open_filesys(argc, argv); + } - current_device = argv[1]; sci_idx = ss_create_invocation("debug-btrfs", "0.0", NULL, &btrfs_debug_cmds, &retval); if (retval) { diff --git a/debugbtrfs/debug_btrfs.h b/debugbtrfs/debug_btrfs.h index 55d7b17..1ea4fb2 100644 --- a/debugbtrfs/debug_btrfs.h +++ b/debugbtrfs/debug_btrfs.h @@ -22,6 +22,7 @@ #include extern const char *current_device; +extern struct btrfs_root *current_fs_root; static inline void reset_getopt(void) { optind = 0; diff --git a/debugbtrfs/debug_btrfs_cmds.ct b/debugbtrfs/debug_btrfs_cmds.ct index 29095d3..e9890ee 100644 --- a/debugbtrfs/debug_btrfs_cmds.ct +++ b/debugbtrfs/debug_btrfs_cmds.ct @@ -20,5 +20,8 @@ command_table btrfs_debug_cmds; request do_show_debugfs_params, "Show btrfs_debug parameters", show_debugfs_params, params; +request do_open_filesys, "Open the file system", + open_filesys, open; + end;