* "Out of Partition" error on XFS still occuring
@ 2008-07-27 1:56 Dan Callahan
2008-07-27 7:47 ` Pavel Roskin
0 siblings, 1 reply; 5+ messages in thread
From: Dan Callahan @ 2008-07-27 1:56 UTC (permalink / raw)
To: grub-devel
Hi, I seem to be able to recreate the xfs "out of partition" error
using Debian's most recent grub-pc release, 1.96+20080724-2.
This bug is being tracked at
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=436943 , and was
first reported one year ago. A patch from Niels Böhm last month was
thought to resolve it, but I'm still seeing the issue.
A dd copy of the offending filesystem is available at
http://neoflux.net/tmp/xfs-boot.tar.gz (8.9 MB compressed, 243 MB
uncompressed, link should remain active through August.)
Mounted as a loopback device in grub-emu, ls (device) detects that it
is xfs, but ls (device)/ and ls (device)/grub fail with the out of
partition error.
Thanks,
-Dan
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: "Out of Partition" error on XFS still occuring
2008-07-27 1:56 "Out of Partition" error on XFS still occuring Dan Callahan
@ 2008-07-27 7:47 ` Pavel Roskin
2008-07-27 10:06 ` Bean
0 siblings, 1 reply; 5+ messages in thread
From: Pavel Roskin @ 2008-07-27 7:47 UTC (permalink / raw)
To: The development of GRUB 2
On Sat, 2008-07-26 at 20:56 -0500, Dan Callahan wrote:
> Hi, I seem to be able to recreate the xfs "out of partition" error
> using Debian's most recent grub-pc release, 1.96+20080724-2.
>
> This bug is being tracked at
> http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=436943 , and was
> first reported one year ago. A patch from Niels Böhm last month was
> thought to resolve it, but I'm still seeing the issue.
>
> A dd copy of the offending filesystem is available at
> http://neoflux.net/tmp/xfs-boot.tar.gz (8.9 MB compressed, 243 MB
> uncompressed, link should remain active through August.)
>
> Mounted as a loopback device in grub-emu, ls (device) detects that it
> is xfs, but ls (device)/ and ls (device)/grub fail with the out of
> partition error.
Valgrind on x86_64 indicates something interesting:
$ valgrind grub-fstest /home/proski/tmp/xfs/xfs-boot.img ls /
==23594== Memcheck, a memory error detector.
==23594== Copyright (C) 2002-2007, and GNU GPL'd, by Julian Seward et al.
==23594== Using LibVEX rev 1804, a library for dynamic binary translation.
==23594== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP.
==23594== Using valgrind-3.3.0, a dynamic binary instrumentation framework.
==23594== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al.
==23594== For more details, rerun with: -v
==23594==
em.map-2.6.25-2-amd64/ ==23594== Conditional jump or move depends on uninitialised value(s)
==23594== at 0x415FB9: call_hook.2389 (xfs.c:378)
==23594== by 0x4167DB: grub_xfs_iterate_dir (xfs.c:469)
==23594== by 0x41697C: grub_xfs_dir (xfs.c:659)
==23594== by 0x4083EC: grub_cmd_ls (ls.c:176)
==23594== by 0x4011C7: execute_command (grub-fstest.c:120)
==23594== by 0x401452: fstest (grub-fstest.c:305)
==23594== by 0x4016DF: main (grub-fstest.c:513)
"em.map-2.6.25-2-amd64/" is apparently the ls output. Yet Linux can
mount the volume, and it shows reasonable names.
--
Regards,
Pavel Roskin
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: "Out of Partition" error on XFS still occuring
2008-07-27 7:47 ` Pavel Roskin
@ 2008-07-27 10:06 ` Bean
2008-07-27 10:21 ` Bean
0 siblings, 1 reply; 5+ messages in thread
From: Bean @ 2008-07-27 10:06 UTC (permalink / raw)
To: The development of GRUB 2
[-- Attachment #1: Type: text/plain, Size: 2662 bytes --]
On Sun, Jul 27, 2008 at 3:47 PM, Pavel Roskin <proski@gnu.org> wrote:
> On Sat, 2008-07-26 at 20:56 -0500, Dan Callahan wrote:
>> Hi, I seem to be able to recreate the xfs "out of partition" error
>> using Debian's most recent grub-pc release, 1.96+20080724-2.
>>
>> This bug is being tracked at
>> http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=436943 , and was
>> first reported one year ago. A patch from Niels Böhm last month was
>> thought to resolve it, but I'm still seeing the issue.
>>
>> A dd copy of the offending filesystem is available at
>> http://neoflux.net/tmp/xfs-boot.tar.gz (8.9 MB compressed, 243 MB
>> uncompressed, link should remain active through August.)
>>
>> Mounted as a loopback device in grub-emu, ls (device) detects that it
>> is xfs, but ls (device)/ and ls (device)/grub fail with the out of
>> partition error.
>
> Valgrind on x86_64 indicates something interesting:
>
> $ valgrind grub-fstest /home/proski/tmp/xfs/xfs-boot.img ls /
> ==23594== Memcheck, a memory error detector.
> ==23594== Copyright (C) 2002-2007, and GNU GPL'd, by Julian Seward et al.
> ==23594== Using LibVEX rev 1804, a library for dynamic binary translation.
> ==23594== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP.
> ==23594== Using valgrind-3.3.0, a dynamic binary instrumentation framework.
> ==23594== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al.
> ==23594== For more details, rerun with: -v
> ==23594==
> em.map-2.6.25-2-amd64/ ==23594== Conditional jump or move depends on uninitialised value(s)
> ==23594== at 0x415FB9: call_hook.2389 (xfs.c:378)
> ==23594== by 0x4167DB: grub_xfs_iterate_dir (xfs.c:469)
> ==23594== by 0x41697C: grub_xfs_dir (xfs.c:659)
> ==23594== by 0x4083EC: grub_cmd_ls (ls.c:176)
> ==23594== by 0x4011C7: execute_command (grub-fstest.c:120)
> ==23594== by 0x401452: fstest (grub-fstest.c:305)
> ==23594== by 0x4016DF: main (grub-fstest.c:513)
>
> "em.map-2.6.25-2-amd64/" is apparently the ls output. Yet Linux can
> mount the volume, and it shows reasonable names.
Hi,
This problem is caused by the previous patch, it expands the size of
grub_xfs_dir_header:
struct grub_xfs_dir_header
{
grub_uint8_t count;
grub_uint8_t i8count;
union
{
grub_uint32_t i4;
grub_uint64_t i8;
} parent __attribute__ ((packed));
} __attribute__ ((packed));
The size is always 10 bytes, but in fact, when small inode is used, it
should be 6 bytes. Then, in struct grub_xfs_inode, grub_xfs_dir_header
cause subsequence fields to move.
This patch revert the change, it should be ok now.
--
Bean
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: xfs.diff --]
[-- Type: text/x-diff; name=xfs.diff, Size: 1327 bytes --]
diff --git a/fs/xfs.c b/fs/xfs.c
index 7da3e40..7b9d778 100644
--- a/fs/xfs.c
+++ b/fs/xfs.c
@@ -56,12 +56,8 @@ struct grub_xfs_sblock
struct grub_xfs_dir_header
{
grub_uint8_t count;
- grub_uint8_t i8count;
- union
- {
- grub_uint32_t i4;
- grub_uint64_t i8;
- } parent __attribute__ ((packed));
+ grub_uint8_t smallno;
+ grub_uint32_t parent;
} __attribute__ ((packed));
struct grub_xfs_dir_entry
@@ -423,7 +419,7 @@ grub_xfs_iterate_dir (grub_fshelp_node_t dir,
case XFS_INODE_FORMAT_INO:
{
struct grub_xfs_dir_entry *de = &diro->inode.data.dir.direntry[0];
- int smallino = !diro->inode.data.dir.dirhead.i8count;
+ int smallino = !diro->inode.data.dir.dirhead.smallno;
int i;
grub_uint64_t parent;
@@ -431,12 +427,12 @@ grub_xfs_iterate_dir (grub_fshelp_node_t dir,
parent inode number is small too. */
if (smallino)
{
- parent = grub_be_to_cpu32 (diro->inode.data.dir.dirhead.parent.i4);
+ parent = grub_be_to_cpu32 (diro->inode.data.dir.dirhead.parent);
parent = grub_cpu_to_be64 (parent);
}
else
{
- parent = diro->inode.data.dir.dirhead.parent.i8;
+ parent = *(grub_uint64_t *) &diro->inode.data.dir.dirhead.parent;
/* The header is a bit bigger than usual. */
de = (struct grub_xfs_dir_entry *) ((char *) de + 4);
}
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: "Out of Partition" error on XFS still occuring
2008-07-27 10:06 ` Bean
@ 2008-07-27 10:21 ` Bean
2008-08-01 23:52 ` Pavel Roskin
0 siblings, 1 reply; 5+ messages in thread
From: Bean @ 2008-07-27 10:21 UTC (permalink / raw)
To: The development of GRUB 2
[-- Attachment #1: Type: text/plain, Size: 702 bytes --]
On Sun, Jul 27, 2008 at 6:06 PM, Bean <bean123ch@gmail.com> wrote:
> Hi,
>
> This problem is caused by the previous patch, it expands the size of
> grub_xfs_dir_header:
>
> struct grub_xfs_dir_header
> {
> grub_uint8_t count;
> grub_uint8_t i8count;
> union
> {
> grub_uint32_t i4;
> grub_uint64_t i8;
> } parent __attribute__ ((packed));
> } __attribute__ ((packed));
>
> The size is always 10 bytes, but in fact, when small inode is used, it
> should be 6 bytes. Then, in struct grub_xfs_inode, grub_xfs_dir_header
> cause subsequence fields to move.
>
> This patch revert the change, it should be ok now.
>
> --
> Bean
>
Hi,
This new patch avoids the warning message of xfs.c
--
Bean
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: xfs.diff --]
[-- Type: text/x-diff; name=xfs.diff, Size: 1536 bytes --]
diff --git a/fs/xfs.c b/fs/xfs.c
index 7da3e40..72d6a5f 100644
--- a/fs/xfs.c
+++ b/fs/xfs.c
@@ -56,7 +56,7 @@ struct grub_xfs_sblock
struct grub_xfs_dir_header
{
grub_uint8_t count;
- grub_uint8_t i8count;
+ grub_uint8_t smallno;
union
{
grub_uint32_t i4;
@@ -423,7 +423,7 @@ grub_xfs_iterate_dir (grub_fshelp_node_t dir,
case XFS_INODE_FORMAT_INO:
{
struct grub_xfs_dir_entry *de = &diro->inode.data.dir.direntry[0];
- int smallino = !diro->inode.data.dir.dirhead.i8count;
+ int smallino = !diro->inode.data.dir.dirhead.smallno;
int i;
grub_uint64_t parent;
@@ -433,12 +433,12 @@ grub_xfs_iterate_dir (grub_fshelp_node_t dir,
{
parent = grub_be_to_cpu32 (diro->inode.data.dir.dirhead.parent.i4);
parent = grub_cpu_to_be64 (parent);
+ /* The header is a bit smaller than usual. */
+ de = (struct grub_xfs_dir_entry *) ((char *) de - 4);
}
else
{
- parent = diro->inode.data.dir.dirhead.parent.i8;
- /* The header is a bit bigger than usual. */
- de = (struct grub_xfs_dir_entry *) ((char *) de + 4);
+ parent = *(grub_uint64_t *) &diro->inode.data.dir.dirhead.parent.i8;
}
/* Synthesize the direntries for `.' and `..'. */
@@ -448,7 +448,7 @@ grub_xfs_iterate_dir (grub_fshelp_node_t dir,
if (call_hook (parent, ".."))
return 1;
- for (i = 0; i < diro->inode.data.dir.dirhead.count; i++)
+ for (i = 0; i < diro->inode.data.dir.dirhead.count; i++)
{
grub_uint64_t ino;
void *inopos = (((char *) de)
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: "Out of Partition" error on XFS still occuring
2008-07-27 10:21 ` Bean
@ 2008-08-01 23:52 ` Pavel Roskin
0 siblings, 0 replies; 5+ messages in thread
From: Pavel Roskin @ 2008-08-01 23:52 UTC (permalink / raw)
To: The development of GRUB 2
On Sun, 2008-07-27 at 18:21 +0800, Bean wrote:
> This new patch avoids the warning message of xfs.c
Thanks. Sorry for breaking it.
--
Regards,
Pavel Roskin
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2008-08-01 23:52 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-07-27 1:56 "Out of Partition" error on XFS still occuring Dan Callahan
2008-07-27 7:47 ` Pavel Roskin
2008-07-27 10:06 ` Bean
2008-07-27 10:21 ` Bean
2008-08-01 23:52 ` Pavel Roskin
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.