From patchwork Mon Apr 16 11:39:59 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zheng Liu X-Patchwork-Id: 152808 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id D79E4B7002 for ; Mon, 16 Apr 2012 21:34:38 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753392Ab2DPLeh (ORCPT ); Mon, 16 Apr 2012 07:34:37 -0400 Received: from mail-pb0-f46.google.com ([209.85.160.46]:43674 "EHLO mail-pb0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753325Ab2DPLeg (ORCPT ); Mon, 16 Apr 2012 07:34:36 -0400 Received: by mail-pb0-f46.google.com with SMTP id un15so6233785pbc.19 for ; Mon, 16 Apr 2012 04:34:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; bh=bj6BLPRjl1gEJBZDAb9wgvCguW2PUDDot8gChTTAiEg=; b=J4/jpXZQo6jiFR6qua0ZOxwAqi7EM4cU+eg3BZ7LsK8Ft0dynEZt+WbLtZS3EeeJ+A yG2862hp+p1lzmzxuXsD92j4ZQzl7v20IE8q2jPhyGnKN2nxGYa6y+ygzf++zmsFoCcW yAreOZ7YZIGOAQOLl4kRctJrLyXlXVDwShI7LPg528rUem1F8kiAhEKSNtBkas1Rcf1s bmqPi7RORRiaPO3qxOsgAUlJrY0koJBVR3qBH0mz5DrAO98ZhqkH2NUyjAQGPbfoNrLS 8yJAbq4isjp5YwCibZT9KZEyGiqi0NjmU4qhNqcY7KYOafbfVaejikLC8oDMyQjU7sU6 Iz3Q== Received: by 10.68.236.132 with SMTP id uu4mr27332325pbc.11.1334576076665; Mon, 16 Apr 2012 04:34:36 -0700 (PDT) Received: from localhost.localdomain ([182.92.247.2]) by mx.google.com with ESMTPS id l6sm17474160pbp.33.2012.04.16.04.34.35 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 16 Apr 2012 04:34:36 -0700 (PDT) From: Zheng Liu To: linux-ext4@vger.kernel.org Cc: Zheng Liu Subject: [PATCH 24/32] debugfs: make dump and cat cmd support inline data Date: Mon, 16 Apr 2012 19:39:59 +0800 Message-Id: <1334576407-4007-25-git-send-email-wenqing.lz@taobao.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1334576407-4007-1-git-send-email-wenqing.lz@taobao.com> References: <1334576407-4007-1-git-send-email-wenqing.lz@taobao.com> Sender: linux-ext4-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org From: Zheng Liu dump and cat command use the same function to read data. We can direclty read the data from inode. Signed-off-by: Zheng Liu --- debugfs/dump.c | 30 ++++++++++++++++++++++++++++++ 1 files changed, 30 insertions(+), 0 deletions(-) diff --git a/debugfs/dump.c b/debugfs/dump.c index a15a0b7..10ebe7a 100644 --- a/debugfs/dump.c +++ b/debugfs/dump.c @@ -113,6 +113,36 @@ static void dump_file(const char *cmdname, ext2_ino_t ino, int fd, if (debugfs_read_inode(ino, &inode, cmdname)) return; + if (ext2fs_has_inline_data(current_fs, ino)) { + struct ext2_inode_large *inode; + struct inline_data idata; + void *inline_start; + int inline_size; + + retval = ext2fs_get_mem(EXT2_INODE_SIZE(current_fs->super), + &inode); + if (retval) + return; + + retval = ext2fs_read_inode_full(current_fs, ino, (void *)inode, + EXT2_INODE_SIZE(current_fs->super)); + if (retval) + goto out; + write(fd, inode->i_block, EXT4_MIN_INLINE_DATA_SIZE); + + ext2fs_iget_extra_inode(current_fs, inode, &idata); + if (idata.inline_off == EXT4_MIN_INLINE_DATA_SIZE) + goto out; + + inline_start = ext2fs_get_inline_xattr_pos(inode, &idata); + inline_size = idata.inline_size - EXT4_MIN_INLINE_DATA_SIZE; + write(fd, inline_start, inline_size); + +out: + ext2fs_free_mem(&inode); + return; + } + retval = ext2fs_file_open(current_fs, ino, 0, &e2_file); if (retval) { com_err(cmdname, retval, "while opening ext2 file");