-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

here are some more infos about this bug.
First thing I noted that xfs_growfs read /proc/self/mounts as default,
not /etc/mtab as the man page suggests. So I used "-t /etc/mtab", but
with the same result: my partition is not recognized.

I debugged the program and set a breakpoint at the
paths.c:fs_table_lookup() function:
Breakpoint 2, fs_table_lookup (dir=0xafb3735a "/dev/hda1", flags=1)
Then, I printed the fs_table[i] entry, and the sbuf
(gdb) n
54                      if (sbuf.st_dev == fs_table[i].fs_datadev)
(gdb) p fs_table[i]
$1 = {fs_name = 0x80939a8 "/dev/hda1", fs_datadev = 769, fs_log = 0x0,
fs_logdev = 0, fs_rt = 0x0, fs_rtdev = 0,
  fs_dir = 0x8093998 "/", fs_flags = 1, fs_prid = 0}
(gdb) p sbuf
$2 = {st_dev = 13, __pad1 = 0, __st_ino = 7665, st_mode = 25008,
st_nlink = 1, st_uid = 0, st_gid = 6, st_rdev = 769,
  __pad2 = 0, st_size = 0, st_blksize = 4096, st_blocks = 0, st_atim =
{tv_sec = 1150746572, tv_nsec = 0}, st_mtim = {
    tv_sec = 1150746553, tv_nsec = 231185576}, st_ctim = {tv_sec =
1150746553, tv_nsec = 0}, st_ino = 7665}

I saw that fs_table[i].fs_datadev=769, which seems to match
sbuf.st_rdev, but not sbuf.st_dev. I replaced sbuf.st_dev with
sbuf.st_rdev and it found the partition:
$ xfs_growfs -n -t/etc/mtab /dev/hda1
meta-data=/dev/hda1              isize=256    agcount=8, agsize=6023 blks
         =                       sectsz=512   attr=0
data     =                       bsize=4096   blocks=48184, imaxpct=25
         =                       sunit=0      swidth=0 blks, unwritten=1
naming   =version 2              bsize=4096
log      =internal               bsize=4096   blocks=1200, version=1
         =                       sectsz=512   sunit=0 blks
realtime =none                   extsz=65536  blocks=0, rtextents=0

Attached is the patch I made. I don't if it breaks any other platforms,
but on my box it runs now :)

Regards,
  Bastian
- --
  ,''`.                  Bastian Kleineidam
 : :' :                    GnuPG Schlüssel
 `. `'    gpg --keyserver wwwkeys.pgp.net --recv-keys 32EC6F3E
   `-

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFEmvaZeBwlBDLsbz4RAg//AJ99RzXAPEBis49godRehdx9CW5PKwCgtK9N
7a2Tyloox6CXSqwqxJrT3rY=
=W9yQ
-----END PGP SIGNATURE-----
--- libxcmd/paths.c_    2006-06-22 21:50:21.128187788 +0200
+++ libxcmd/paths.c     2006-06-22 21:50:07.359265175 +0200
@@ -35,7 +35,7 @@
 struct fs_path *fs_path;
 
 char *mtab_file;
-#define PROC_MOUNTS    "/proc/self/mounts"
+#define PROC_MOUNTS    "/etc/mtab"
 
 struct fs_path *
 fs_table_lookup(
@@ -51,7 +51,7 @@
        for (i = 0; i < fs_count; i++) {
                if ((flags & fs_table[i].fs_flags) == 0)
                        continue;
-               if (sbuf.st_dev == fs_table[i].fs_datadev)
+               if (sbuf.st_rdev == fs_table[i].fs_datadev)
                        return &fs_table[i];
        }
        return NULL;

Reply via email to