Handle group offset on UFS1.
* fs/ufs.c (grub_ufs_sblock): New field 'cylg_mask'.
(grub_ufs_read_inode) [!MODE_UFS2]: handle cylg_offset and cylg_mask.
+2009-08-14 Vladimir Serbinenko <phcoder@gmail.com>
+
+ Handle group offset on UFS1.
+
+ * fs/ufs.c (grub_ufs_sblock): New field 'cylg_mask'.
+ (grub_ufs_read_inode) [!MODE_UFS2]: handle cylg_offset and cylg_mask.
+
2009-08-14 Vladimir Serbinenko <phcoder@gmail.com>
Split ufs.mod into ufs1.mod and ufs2.mod.
/* The start of the cylinder group. */
grub_uint32_t cylg_offset;
- grub_uint8_t unused3[4];
+ grub_uint32_t cylg_mask;
grub_uint32_t mtime;
grub_uint8_t unused4[12];
/* The first block of the group. */
int grpblk = group * (grub_le_to_cpu32 (sblock->frags_per_group));
+#ifndef MODE_UFS2
+ grpblk += grub_le_to_cpu32 (sblock->cylg_offset)
+ * (group & (~grub_le_to_cpu32 (sblock->cylg_mask)));
+#endif
+
if (!inode)
{
inode = (char *) &data->inode;