From: "Manish Katiyar" Subject: Re: ext2_block_alloc_info Date: Tue, 23 Dec 2008 10:30:21 +0530 Message-ID: References: <2d08ef090812200743o47cd4abdwd9915653f6f4f3f7@mail.gmail.com> <804dabb00812201725r304bed36ufc56ebc2393e2299@mail.gmail.com> <170fa0d20812221856j4c660384nc2ac693ca8fd0ba4@mail.gmail.com> <804dabb00812222029x76d34c24o798ade5dd0e31351@mail.gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: "Mike Snitzer" , "Rohit Sharma" , Kernelnewbies , ext4 To: "Peter Teoh" Return-path: Received: from yx-out-2324.google.com ([74.125.44.29]:3245 "EHLO yx-out-2324.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750852AbYLWFAW (ORCPT ); Tue, 23 Dec 2008 00:00:22 -0500 Received: by yx-out-2324.google.com with SMTP id 8so814101yxm.1 for ; Mon, 22 Dec 2008 21:00:21 -0800 (PST) In-Reply-To: <804dabb00812222029x76d34c24o798ade5dd0e31351@mail.gmail.com> Content-Disposition: inline Sender: linux-ext4-owner@vger.kernel.org List-ID: On Tue, Dec 23, 2008 at 9:59 AM, Peter Teoh wrote: > Sorry, resent due to SMTP error: > > anyone knows any way of enumerating all the low level information like > these for each file? > > Best I can get is "debugfs": > > So using "show_inode_infor xxxx": > > Inode: 1146884 Type: regular Mode: 0767 Flags: 0x0 > Generation: 4262211373 > User: 0 Group: 0 Size: 4670783 > File ACL: 0 Directory ACL: 0 > Links: 1 Blockcount: 9152 > Fragment: Address: 0 Number: 0 Size: 0 > ctime: 0x46db7fb6 -- Mon Sep 3 11:29:58 2007 > atime: 0x47c66735 -- Thu Feb 28 15:48:05 2008 > mtime: 0x43118298 -- Sun Aug 28 17:23:36 2005 > BLOCKS: > (0-11):2317946-0, (IND):2317958, (12-1035):2317959-0, (DIND):2318983, > (IND):2318984, (1036-1140):2318985-0 > TOTAL: 1144 > > Here the "BLOCKS" correspond to the block numbering we are talking > about, right? It always start at 0 per-file. "IND" is the indirect > block. > But what is "DIND"? Double indirect blocks ..... Sine the size of file is 4670783, we would need 1140 direct blocks (holding data) and other indirect blocks. > "2317946" is the physical block number > right? Yes....... > And what is the zero after the "2317946"? 0 is just the end specifier for a range which debugfs prints. So either you print the range of blocks or a 0 at the end to mark the start of a new range. The code to do is present in e2fsprogs/debugfs/debugfs.c : list_blocks_proc() list_block_proc () { ................... /* * Not a normal block. Always force a new range. */ finish_range(lb); if (lb->first) lb->first = 0; else fprintf(lb->f, ", "); if (blockcnt == -1) fprintf(lb->f, "(IND):%u", *blocknr); else if (blockcnt == -2) fprintf(lb->f, "(DIND):%u", *blocknr); else if (blockcnt == -3) fprintf(lb->f, "(TIND):%u", *blocknr); ................... } Thanks - Manish > > On Tue, Dec 23, 2008 at 10:56 AM, Mike Snitzer wrote: >> >> On Sat, Dec 20, 2008 at 8:25 PM, Peter Teoh wrote: >> > On Sat, Dec 20, 2008 at 11:43 PM, Rohit Sharma wrote: >> >> A little confusion. >> >> >> >> Just refer this structure in linux/ext2_fs_sb.h >> >> >> >> struct ext2_block_alloc_info { >> >> 46 /* information about reservation window */ >> >> 47 struct ext2_reserve_window_node rsv_window_node; >> >> 48 /* >> >> 49 * was i_next_alloc_block in ext2_inode_info >> >> 50 * is the logical (file-relative) number of the >> >> 51 * most-recently-allocated block in this file. >> >> 52 * We use this for detecting linearly ascending allocation requests. >> >> 53 */ >> >> 54 __u32 last_alloc_logical_block; >> > >> > if i interpret the meaning of "file-relative logical number" >> > correctly, and since one-file-one-inode concept, then it means that it >> > should mean inode-relative logical block number. >> > >> >> 55 /* >> >> 56 * Was i_next_alloc_goal in ext2_inode_info >> >> 57 * is the *physical* companion to i_next_alloc_block. >> >> 58 * it the the physical block number of the block which was >> > >> >> inode1 has logical blocks 0 1 2 , physical 22 23 24 >> >> inode2 has logical blocks 0 1 2 , physical 34 35 50 >> >> >> > >> > as per comment above, the sequence above looks likely, but then this >> > is my guess again. >> >> You are correct. last_alloc_logical_block is used to detect if the >> write workload against a given inode is sequential (the current >> logical block is last_alloc_logical_block+1). >> >> Mike > > > > -- > Regards, > Peter Teoh > > Ernest Hemingway - "Never mistake motion for action." > -- > To unsubscribe from this list: send the line "unsubscribe linux-ext4" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html >