Using libext2fs in libe2p?
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
lib/e2p/ls.c +4 -3
@@ -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));
Quoted 6 lines · Valerie Aurora Henson
Possible solutions:
Link libext2fs with libe2p
Open code 64-bit block counts
Require users of libe2p to link with libext2fs
Moveext2fs_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.
Quoted 27 lines
lib/e2p/ls.c +4
-4@@ -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)); --
Quoted 3 lines
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to [email protected]
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.
Quoted 2 lines · Valerie Aurora Henson
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
Quoted 6 lines
Possible solutions:
Link libext2fs with libe2p
Open code 64-bit block counts
Require users of libe2p to link with libext2fs
Moveext2fs_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