From patchwork Tue Jul 31 11:47:57 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zheng Liu X-Patchwork-Id: 174221 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 423C52C007C for ; Tue, 31 Jul 2012 21:39:56 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756003Ab2GaLjz (ORCPT ); Tue, 31 Jul 2012 07:39:55 -0400 Received: from mail-pb0-f46.google.com ([209.85.160.46]:35285 "EHLO mail-pb0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755715Ab2GaLjy (ORCPT ); Tue, 31 Jul 2012 07:39:54 -0400 Received: by mail-pb0-f46.google.com with SMTP id rp8so11540445pbb.19 for ; Tue, 31 Jul 2012 04:39:54 -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=sQUbdAMbWFot+5239uVn1P77lkmn6D12XjaT44PH7SA=; b=w/xIneqBqWiewGBIveatOO0D73UrCGE6Mtn4xb7Cbjo6ABNOcJ4EszmHcx01R+OGln i8vzpiv2h0oEHOvM0Xl4c9J8Yl6dW3s31pTm9kqGQJwXZ7r1V0eghWewucfTxesCAoYt cZTpOSC7ocROPHjrQz2JaO2iIrWT7RjcvFdZB6T3NWpgQVHw09F2RKM84Jlm6daCD5Xp 25FdgrBm2pLDm/WyvMsYQ1cwMraR9vL47MKySAGmfXhmHiIS+YVW9mXdkxbNVf0gIplM Sd8+ykkNm2oa2aMiUx1V9rFFxpqL9UF7a52i3qI8c3p3b2ZsCX2cVC44LhEfBUt2jdO+ BeIw== Received: by 10.68.138.166 with SMTP id qr6mr43105046pbb.43.1343734794507; Tue, 31 Jul 2012 04:39:54 -0700 (PDT) Received: from localhost.localdomain ([182.92.247.2]) by mx.google.com with ESMTPS id oo6sm135950pbc.22.2012.07.31.04.39.52 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 31 Jul 2012 04:39:54 -0700 (PDT) From: Zheng Liu To: linux-ext4@vger.kernel.org Cc: Zheng Liu Subject: [PATCH 04/36 v4] libext2fs: add ext2fs_find_entry_ext_attr function Date: Tue, 31 Jul 2012 19:47:57 +0800 Message-Id: <1343735309-30579-5-git-send-email-wenqing.lz@taobao.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1343735309-30579-1-git-send-email-wenqing.lz@taobao.com> References: <1343735309-30579-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 We need to search extend attributes to get entry of inline data. Thus, add this function to do this work. Signed-off-by: Zheng Liu --- lib/ext2fs/ext2fs.h | 4 ++++ lib/ext2fs/ext_attr.c | 26 ++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 0 deletions(-) diff --git a/lib/ext2fs/ext2fs.h b/lib/ext2fs/ext2fs.h index 65d30de..fd051b1 100644 --- a/lib/ext2fs/ext2fs.h +++ b/lib/ext2fs/ext2fs.h @@ -1136,6 +1136,10 @@ extern errcode_t ext2fs_adjust_ea_refcount3(ext2_filsys fs, blk64_t blk, char *block_buf, int adjust, __u32 *newcount, ext2_ino_t inum); +extern errcode_t ext2fs_find_entry_ext_attr(struct ext2_ext_attr_entry **pentry, + int name_index, const char *name, + size_t size, int sorted); + /* extent.c */ extern errcode_t ext2fs_extent_header_verify(void *ptr, int size); diff --git a/lib/ext2fs/ext_attr.c b/lib/ext2fs/ext_attr.c index 9649a14..b2d36b6 100644 --- a/lib/ext2fs/ext_attr.c +++ b/lib/ext2fs/ext_attr.c @@ -171,6 +171,32 @@ errout: return retval; } +errcode_t ext2fs_find_entry_ext_attr(struct ext2_ext_attr_entry **pentry, + int name_index, const char *name, + size_t size, int sorted) +{ + struct ext2_ext_attr_entry *entry; + size_t name_len; + int cmp; + + if (name == NULL) + return -1; + name_len = strlen(name); + entry = *pentry; + for (; !EXT2_EXT_IS_LAST_ENTRY(entry); entry = EXT2_EXT_ATTR_NEXT(entry)) { + cmp = name_index - entry->e_name_index; + if (!cmp) + cmp = name_len - entry->e_name_len; + if (!cmp) + cmp = memcmp(name, EXT2_EXT_ATTR_NAME(entry), name_len); + if (!cmp) + break; + } + *pentry = entry; + + return cmp; +} + errcode_t ext2fs_adjust_ea_refcount2(ext2_filsys fs, blk64_t blk, char *block_buf, int adjust, __u32 *newcount)