rfc: [patch 3/6] more e2fsprogs fixes
Alexandre Ratchov <[email protected]> Fri, 25 Aug 2006 15:18:40 +0200
| Newsgroups | gmane.comp.file-systems.ext2.devel |
|---|---|
| Message-ID | <[email protected]> |
add bg_{block_bitmap,inode_bitmap,inode_table}_hi fields in
struct ext2_group_desc and use absolute block numbers. While
this is not necessary, IMHO this is simpler than relative
addressing, and this change make e2fsprogs "just" work.
Index: e2fsprogs-1.39/lib/ext2fs/ext2_fs.h
===================================================================
--- e2fsprogs-1.39.orig/lib/ext2fs/ext2_fs.h 2006-08-22 15:49:35.000000000 +0200
+++ e2fsprogs-1.39/lib/ext2fs/ext2_fs.h 2006-08-24 19:42:32.000000000 +0200
@@ -137,14 +137,17 @@ struct ext2_acl_entry /* Access Control
*/
struct ext2_group_desc
{
- __u32 bg_block_bitmap; /* Blocks bitmap block */
- __u32 bg_inode_bitmap; /* Inodes bitmap block */
+ __u32 bg_block_bitmap; /* Blocks bitmap block */
+ __u32 bg_inode_bitmap; /* Inodes bitmap block */
__u32 bg_inode_table; /* Inodes table block */
__u16 bg_free_blocks_count; /* Free blocks count */
__u16 bg_free_inodes_count; /* Free inodes count */
__u16 bg_used_dirs_count; /* Directories count */
__u16 bg_flags;
- __u32 bg_reserved[3];
+ __u32 bg_block_bitmap_hi; /* Blocks bitmap block */
+ __u32 bg_inode_bitmap_hi; /* Inodes bitmap block */
+ __u32 bg_inode_table_hi; /* Inodes table block */
+ /*__u16 bg_reserved[3];*/
};
#define EXT2_BG_INODE_UNINIT 0x0001 /* Inode table/bitmap not initialized */
@@ -153,35 +156,35 @@ struct ext2_group_desc
#define EXT2_GROUP_BASE(s,g) ((blk_t)(s)->s_first_data_block + \
(blk_t)(s)->s_blocks_per_group * (g))
-#define EXT2_RELATIVE(group_base, block) \
- ((blk_t)(block) < (blk_t)(group_base) ? \
- (blk_t)(block) + (blk_t)(group_base) - 1 : \
- (blk_t)(block))
-#define EXT2_RELATIVE_SET(group_base, block, value) \
- (block) = (blk_t)(value) & 0xFFFFFFFF00000000ULL ? \
- (blk_t)(value) - (blk_t)(group_base) + 1 : \
- (blk_t)(value)
-
#define EXT2_BLOCK_BITMAP(bg, group_base) \
- EXT2_RELATIVE((group_base),(bg)->bg_block_bitmap)
+ ((bg)->bg_block_bitmap + ((blk_t)(bg)->bg_block_bitmap_hi << 32))
#define EXT2_INODE_BITMAP(bg, group_base) \
- EXT2_RELATIVE((group_base),(bg)->bg_inode_bitmap)
+ ((bg)->bg_inode_bitmap + ((blk_t)(bg)->bg_inode_bitmap_hi << 32))
#define EXT2_INODE_TABLE(bg, group_base) \
- EXT2_RELATIVE((group_base),(bg)->bg_inode_table)
+ ((bg)->bg_inode_table + ((blk_t)(bg)->bg_inode_table_hi << 32))
-#define EXT2_BLOCK_BITMAP_SET(bg, group_base, value) \
- EXT2_RELATIVE_SET((group_base),(bg)->bg_block_bitmap, value)
-#define EXT2_INODE_BITMAP_SET(bg, group_base, value) \
- EXT2_RELATIVE_SET((group_base),(bg)->bg_inode_bitmap, value)
-#define EXT2_INODE_TABLE_SET(bg, group_base, value) \
- EXT2_RELATIVE_SET((group_base),(bg)->bg_inode_table, value)
+#define EXT2_BLOCK_BITMAP_SET(bg, group_base, value) \
+ do { \
+ (bg)->bg_block_bitmap = (__u32)(value); \
+ (bg)->bg_block_bitmap_hi = (value) >> 32; \
+ } while(0)
+#define EXT2_INODE_BITMAP_SET(bg, group_base, value) \
+ do { \
+ (bg)->bg_inode_bitmap = (__u32)(value); \
+ (bg)->bg_inode_bitmap_hi = (value) >> 32; \
+ } while(0)
+#define EXT2_INODE_TABLE_SET(bg, group_base, value) \
+ do { \
+ (bg)->bg_inode_table = (__u32)(value); \
+ (bg)->bg_inode_table_hi = (value) >> 32; \
+ } while(0)
#define EXT2_IS_USED_BLOCK_BITMAP(bg) \
- ((bg)->bg_block_bitmap != 0)
+ ((bg)->bg_block_bitmap != 0 || (bg)->bg_block_bitmap_hi != 0)
#define EXT2_IS_USED_INODE_BITMAP(bg) \
- ((bg)->bg_inode_bitmap != 0)
+ ((bg)->bg_inode_bitmap != 0 || (bg)->bg_inode_bitmap_hi != 0)
#define EXT2_IS_USED_INODE_TABLE(bg) \
- ((bg)->bg_inode_table != 0)
+ ((bg)->bg_inode_table != 0 || (bg)->bg_inode_table_hi != 0)
/*
* Data structures used by the directory indexing feature
*
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642