Skip to contentSkip to conversation

fix up userspace for newer glibc

PATCH New Eric Sandeen 1 participant 1 message Jan 20, 2010 Btrfs file system

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 fix up userspace for newer glibc

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.

---

btrfsck.c +3 -0
Index: btrfs-progs-0.19/btrfsck.c
===================================================================
@@ -21,6 +21,9 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <fcntl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
 #include "kerncompat.h"
 #include "ctree.h"
 #include "disk-io.h"
mkfs.c +2 -2
Index: btrfs-progs-0.19/mkfs.c
===================================================================
@@ -341,7 +341,7 @@ int main(int ac, char **av)
 	u64 alloc_start = 0;
 	u64 metadata_profile = BTRFS_BLOCK_GROUP_RAID1 | BTRFS_BLOCK_GROUP_DUP;
 	u64 data_profile = BTRFS_BLOCK_GROUP_RAID0;
-	u32 leafsize = getpagesize();
+	u32 leafsize = sysconf(_SC_PAGESIZE);
 	u32 sectorsize = 4096;
 	u32 nodesize = leafsize;
 	u32 stripesize = 4096;
@@ -398,7 +398,7 @@ int main(int ac, char **av)
 				print_usage();
 		}
 	}
-	sectorsize = max(sectorsize, (u32)getpagesize());
+	sectorsize = max(sectorsize, (u32)sysconf(_SC_PAGESIZE));
 	if (leafsize < sectorsize || (leafsize & (sectorsize - 1))) {
 		fprintf(stderr, "Illegal leafsize %u\n", leafsize);
 		exit(1);