From patchwork Thu Jan 31 05:17:51 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zheng Liu X-Patchwork-Id: 217081 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 CC6D12C0294 for ; Thu, 31 Jan 2013 16:04:25 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751313Ab3AaFEZ (ORCPT ); Thu, 31 Jan 2013 00:04:25 -0500 Received: from mail-da0-f51.google.com ([209.85.210.51]:52636 "EHLO mail-da0-f51.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750988Ab3AaFEY (ORCPT ); Thu, 31 Jan 2013 00:04:24 -0500 Received: by mail-da0-f51.google.com with SMTP id i30so1123088dad.10 for ; Wed, 30 Jan 2013 21:04:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=3zHlWK8ZYMe23venrhqJ65NU/LZEBilhvizfxo09Urk=; b=k+CXn+i6R+UbHUU3KK5dL+A9ndIs2dhDs0QLUA8+WlwkVtxcnHnd53iZ9kVUAEbvnI 656oKUKyFSduF4RRsc+ay5zbzRomq8qTzj8suQ2iEJTViPTMK9eNrUUbDCdhWkjX30I0 YGyw5aif7B30lR0LudhAvilVCErWkQP6/sLGC1KqjlbTAji5QWCnXdcZOBSt5Gu/h93G CSx2Zqp2f5L8j2c00TJlMFb4d2kSb2xKKNcDt8zO+hqdvGtdqH900Pf1wM45tpyS0HC4 zhpjWVh5oWOzA9YwzkDNMJ32+S8gGNrnKEDFc+NWJWF5+brT7y2ZtGaVof/W/dZaDwmT 4gMg== X-Received: by 10.68.200.228 with SMTP id jv4mr18422850pbc.139.1359608664176; Wed, 30 Jan 2013 21:04:24 -0800 (PST) Received: from lz-desktop.taobao.ali.com ([182.92.247.2]) by mx.google.com with ESMTPS id nw9sm3768143pbb.42.2013.01.30.21.04.18 (version=TLSv1 cipher=RC4-SHA bits=128/128); Wed, 30 Jan 2013 21:04:23 -0800 (PST) From: Zheng Liu To: linux-ext4@vger.kernel.org Cc: Zheng Liu , "Theodore Ts'o" Subject: [PATCH 3/9 v4] ext4: add physical block and status member into extent status tree Date: Thu, 31 Jan 2013 13:17:51 +0800 Message-Id: <1359609477-29845-4-git-send-email-wenqing.lz@taobao.com> X-Mailer: git-send-email 1.7.12.rc2.18.g61b472e In-Reply-To: <1359609477-29845-1-git-send-email-wenqing.lz@taobao.com> References: <1359609477-29845-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 es_pblk is used to record physical block that maps to the disk. es_status is used to record the status of the extent. Three status are defined, which are written, unwritten and delayed. Signed-off-by: Zheng Liu Cc: "Theodore Ts'o" --- fs/ext4/extents_status.h | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/fs/ext4/extents_status.h b/fs/ext4/extents_status.h index 81e9339..2eb9cc3 100644 --- a/fs/ext4/extents_status.h +++ b/fs/ext4/extents_status.h @@ -20,10 +20,22 @@ #define es_debug(fmt, ...) no_printk(fmt, ##__VA_ARGS__) #endif +enum { + EXTENT_STATUS_WRITTEN = 0, /* written extent */ + EXTENT_STATUS_UNWRITTEN = 1, /* unwritten extent */ + EXTENT_STATUS_DELAYED = 2, /* delayed extent */ +}; + +/* + * Here for save memory es_status is stashed into es_pblk because we only have + * 48 bits physical block and es_status only needs 2 bits. + */ struct extent_status { struct rb_node rb_node; - ext4_lblk_t es_lblk; /* first logical block extent covers */ - ext4_lblk_t es_len; /* length of extent in block */ + ext4_lblk_t es_lblk; /* first logical block extent covers */ + ext4_lblk_t es_len; /* length of extent in block */ + ext4_fsblk_t es_pblk : 62; /* first physical block */ + ext4_fsblk_t es_status : 2; /* record the status of extent */ }; struct ext4_es_tree {