btrfs-progs: Use sysconf instead of getpagesize
authorEric Sandeen <sandeen@redhat.com>
Sat, 19 Jan 2013 18:06:17 +0000 (13:06 -0500)
committerDavid Sterba <dsterba@suse.cz>
Wed, 23 Jan 2013 18:27:13 +0000 (19:27 +0100)
Rawhide is getting cranky with posix compliance, and a few
things have stopped building.

getpagesize() is now only available -with- __USE_XOPEN_EXTENDED
or __USE_BSD, and NOT __USE_XOPEN2K.

_GNU_SOURCE must define __USE_XOPEN2K because getpagesize()
has gone away for mkfs.  I gave up and used sysconf.

Also, something used to pull in stat that no longer does, so
things like S_ISREG weren't getting defined.

The following fixes things for me.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
btrfsck.c
mkfs.c

index a851008..6274ff7 100644 (file)
--- a/btrfsck.c
+++ b/btrfsck.c
@@ -22,7 +22,9 @@
 #include <stdlib.h>
 #include <unistd.h>
 #include <fcntl.h>
+#include <sys/types.h>
 #include <sys/stat.h>
+#include <unistd.h>
 #include <getopt.h>
 #include "kerncompat.h"
 #include "ctree.h"
diff --git a/mkfs.c b/mkfs.c
index 56c1d9b..384f2c6 100644 (file)
--- a/mkfs.c
+++ b/mkfs.c
@@ -1206,7 +1206,7 @@ int main(int ac, char **av)
        u64 alloc_start = 0;
        u64 metadata_profile = 0;
        u64 data_profile = 0;
-       u32 leafsize = getpagesize();
+       u32 leafsize = sysconf(_SC_PAGESIZE);
        u32 sectorsize = 4096;
        u32 nodesize = leafsize;
        u32 stripesize = 4096;
@@ -1282,7 +1282,7 @@ int main(int ac, char **av)
                                print_usage();
                }
        }
-       sectorsize = max(sectorsize, (u32)getpagesize());
+       sectorsize = max(sectorsize, (u32)sysconf(_SC_PAGESIZE));
        if (check_leaf_or_node_size(leafsize, sectorsize))
                exit(1);
        if (check_leaf_or_node_size(nodesize, sectorsize))