Fix non-indexed JFS.
* grub-core/fs/jfs.c (grub_jfs_sblock): New field flags. (grub_jfs_data): New field namecomponentlen. (grub_jfs_mount): Fill namecomponentlen. (grub_jfs_getent): Use namecomponentlen rather than hardcoded 11.
This commit is contained in:
parent
eea1e26e52
commit
ae16024d92
2 changed files with 21 additions and 4 deletions
|
@ -1,3 +1,12 @@
|
||||||
|
2012-05-09 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Fix non-indexed JFS.
|
||||||
|
|
||||||
|
* grub-core/fs/jfs.c (grub_jfs_sblock): New field flags.
|
||||||
|
(grub_jfs_data): New field namecomponentlen.
|
||||||
|
(grub_jfs_mount): Fill namecomponentlen.
|
||||||
|
(grub_jfs_getent): Use namecomponentlen rather than hardcoded 11.
|
||||||
|
|
||||||
2012-05-08 Vladimir Serbinenko <phcoder@gmail.com>
|
2012-05-08 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
* grub-core/script/yylex.l: Ugly fix for "\\\n ".
|
* grub-core/script/yylex.l: Ugly fix for "\\\n ".
|
||||||
|
|
|
@ -52,8 +52,9 @@ struct grub_jfs_sblock
|
||||||
4096 was tested. */
|
4096 was tested. */
|
||||||
grub_uint32_t blksz;
|
grub_uint32_t blksz;
|
||||||
grub_uint16_t log2_blksz;
|
grub_uint16_t log2_blksz;
|
||||||
|
grub_uint8_t unused[14];
|
||||||
grub_uint8_t unused[79];
|
grub_uint32_t flags;
|
||||||
|
grub_uint8_t unused3[61];
|
||||||
char volname[11];
|
char volname[11];
|
||||||
grub_uint8_t unused2[24];
|
grub_uint8_t unused2[24];
|
||||||
grub_uint8_t uuid[16];
|
grub_uint8_t uuid[16];
|
||||||
|
@ -220,6 +221,7 @@ struct grub_jfs_data
|
||||||
struct grub_jfs_inode currinode;
|
struct grub_jfs_inode currinode;
|
||||||
int pos;
|
int pos;
|
||||||
int linknest;
|
int linknest;
|
||||||
|
int namecomponentlen;
|
||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
|
|
||||||
struct grub_jfs_diropen
|
struct grub_jfs_diropen
|
||||||
|
@ -380,6 +382,11 @@ grub_jfs_mount (grub_disk_t disk)
|
||||||
sizeof (struct grub_jfs_inode), &data->fileset))
|
sizeof (struct grub_jfs_inode), &data->fileset))
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
|
if (data->sblock.flags & grub_cpu_to_le32_compile_time (0x00200000))
|
||||||
|
data->namecomponentlen = 11;
|
||||||
|
else
|
||||||
|
data->namecomponentlen = 13;
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
|
@ -532,9 +539,10 @@ grub_jfs_getent (struct grub_jfs_diropen *diro)
|
||||||
return grub_jfs_getent (diro);
|
return grub_jfs_getent (diro);
|
||||||
}
|
}
|
||||||
|
|
||||||
addstr (leaf->namepart, len < 11 ? len : 11);
|
addstr (leaf->namepart, len < diro->data->namecomponentlen ? len
|
||||||
|
: diro->data->namecomponentlen);
|
||||||
diro->ino = grub_le_to_cpu32 (leaf->inode);
|
diro->ino = grub_le_to_cpu32 (leaf->inode);
|
||||||
len -= 11;
|
len -= diro->data->namecomponentlen;
|
||||||
|
|
||||||
/* Move down to the leaf level. */
|
/* Move down to the leaf level. */
|
||||||
nextent = leaf->next;
|
nextent = leaf->next;
|
||||||
|
|
Loading…
Reference in a new issue