diff mbox

Using libext2fs in libe2p?

Message ID 20090203195645.GG20654@shell
State Not Applicable, archived
Headers show

Commit Message

Valerie Aurora Henson Feb. 3, 2009, 7:56 p.m. UTC
Nick Dokos noticed that libe2p now depends on libext2fs in the 64-bit
tree, since we use ext2fs_blocks_count() and friends (see diff below).

Possible solutions:

Link libext2fs with libe2p
Open code 64-bit block counts
Require users of libe2p to link with libext2fs
Move ext2fs_blocks_count() and friends into a header file and inline them

I am agnostic.

-VAL


--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Andreas Dilger Feb. 3, 2009, 8:31 p.m. UTC | #1
On Feb 03, 2009  14:56 -0500, Valerie Aurora Henson wrote:
> Possible solutions:
> 
> Link libext2fs with libe2p
> Open code 64-bit block counts
> Require users of libe2p to link with libext2fs
> Move ext2fs_blocks_count() and friends into a header file and inline them

I would probably do the latter.  The functions are small enough that
inlining them is likely equivalent in terms of instructions compared
to jumping to a new function.

> diff --git a/lib/e2p/ls.c b/lib/e2p/ls.c
> index 6d2ce70..1923793 100644
> --- a/lib/e2p/ls.c
> +++ b/lib/e2p/ls.c
> @@ -20,6 +20,7 @@
>  #include <time.h>
>  
>  #include "e2p.h"
> +#include "ext2fs/ext2fs.h"
>  
>  static void print_user (unsigned short uid, FILE *f)
>  {
> @@ -219,9 +220,9 @@ void list_super2(struct ext2_super_block * sb, FILE *f)
>         fprintf(f, "Filesystem OS type:       %s\n", str);
>         free(str);
>         fprintf(f, "Inode count:              %u\n", sb->s_inodes_count);
> -       fprintf(f, "Block count:              %u\n", sb->s_blocks_count);
> -       fprintf(f, "Reserved block count:     %u\n", sb->s_r_blocks_count);
> -       fprintf(f, "Free blocks:              %u\n", sb->s_free_blocks_count);
> +       fprintf(f, "Block count:              %llu\n", ext2fs_blocks_count(sb));
> +       fprintf(f, "Reserved block count:     %llu\n", ext2fs_r_blocks_count(sb));
> +       fprintf(f, "Free blocks:              %llu\n", ext2fs_free_blocks_count(sb));
>         fprintf(f, "Free inodes:              %u\n", sb->s_free_inodes_count);
>         fprintf(f, "First block:              %u\n", sb->s_first_data_block);
>         fprintf(f, "Block size:               %u\n", EXT2_BLOCK_SIZE(sb));
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

Cheers, Andreas
--
Andreas Dilger
Sr. Staff Engineer, Lustre Group
Sun Microsystems of Canada, Inc.

--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Theodore Ts'o Feb. 3, 2009, 9:06 p.m. UTC | #2
On Tue, Feb 03, 2009 at 02:56:45PM -0500, Valerie Aurora Henson wrote:
> Nick Dokos noticed that libe2p now depends on libext2fs in the 64-bit
> tree, since we use ext2fs_blocks_count() and friends (see diff below).

Fixed already in my rebased version of your patches:  

    http://github.com/tytso/e2fsprogs-64bit/tree/master
    git://github.com/tytso/e2fsprogs-64bit.git

> Possible solutions:
> 
> Link libext2fs with libe2p
> Open code 64-bit block counts
> Require users of libe2p to link with libext2fs
> Move ext2fs_blocks_count() and friends into a header file and inline them

I chose door #2.  Actually, I created new static functions in
lib/e2p/ls.c, named e2p_*_blocks_count().  It's in the patch:
Add-e2p-64bit-blocks-support.

Note: my patchset (which is against e2fsprogs 1.41.4 at the moment)
still has regression test failures, and I have done *zero* testing on
64-bit filesystems.  Hopefully Val can help me with that; the updated,
rebase patchset is the first step towards getting these commits merged
into e2fsprogs mainline.

						- Ted
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/lib/e2p/ls.c b/lib/e2p/ls.c
index 6d2ce70..1923793 100644
--- a/lib/e2p/ls.c
+++ b/lib/e2p/ls.c
@@ -20,6 +20,7 @@ 
 #include <time.h>
 
 #include "e2p.h"
+#include "ext2fs/ext2fs.h"
 
 static void print_user (unsigned short uid, FILE *f)
 {
@@ -219,9 +220,9 @@  void list_super2(struct ext2_super_block * sb, FILE *f)
        fprintf(f, "Filesystem OS type:       %s\n", str);
        free(str);
        fprintf(f, "Inode count:              %u\n", sb->s_inodes_count);
-       fprintf(f, "Block count:              %u\n", sb->s_blocks_count);
-       fprintf(f, "Reserved block count:     %u\n", sb->s_r_blocks_count);
-       fprintf(f, "Free blocks:              %u\n", sb->s_free_blocks_count);
+       fprintf(f, "Block count:              %llu\n", ext2fs_blocks_count(sb));
+       fprintf(f, "Reserved block count:     %llu\n", ext2fs_r_blocks_count(sb));
+       fprintf(f, "Free blocks:              %llu\n", ext2fs_free_blocks_count(sb));
        fprintf(f, "Free inodes:              %u\n", sb->s_free_inodes_count);
        fprintf(f, "First block:              %u\n", sb->s_first_data_block);
        fprintf(f, "Block size:               %u\n", EXT2_BLOCK_SIZE(sb));