Hi,
The current xfs driver uses fixed inode size (256), this patch should fix it.
--
Bean
diff --git a/fs/xfs.c b/fs/xfs.c
index 68a4b4f..b9d6628 100644
--- a/fs/xfs.c
+++ b/fs/xfs.c
@@ -46,7 +46,8 @@ struct grub_xfs_sblock
grub_uint8_t unused4[20];
grub_uint8_t label[12];
grub_uint8_t log2_bsize;
- grub_uint8_t unused5[2];
+ grub_uint8_t log2_sect;
+ grub_uint8_t log2_inode;
grub_uint8_t log2_inop;
grub_uint8_t log2_agblk;
grub_uint8_t unused6[67];
@@ -194,7 +195,7 @@ grub_xfs_inode_block (struct grub_xfs_data *data,
long long ag = GRUB_XFS_INO_AG (data, ino);
long long block;
- block = (inoinag >> 4) + ag * data->agsize;
+ block = (inoinag >> data->sblock.log2_inop) + ag * data->agsize;
block <<= (data->sblock.log2_bsize - GRUB_DISK_SECTOR_BITS);
return block;
}
@@ -205,7 +206,8 @@ grub_xfs_inode_offset (struct grub_xfs_data *data,
grub_uint64_t ino)
{
int inoag = GRUB_XFS_INO_INOINAG (data, ino);
- return (inoag & ((1 << 4) - 1)) << 8;
+ return ((inoag & ((1 << data->sblock.log2_inop) - 1)) <<
+ data->sblock.log2_inode);
}
_______________________________________________
Grub-devel mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/grub-devel