Fix non-Linux build

loopdev.c, test_pager, and get_max_number_of_cpus() are linux-specific.
get_linux_version will only work on Linux, let's introduce
system_supports_ext4_ext2() which assumes that mounting ext2 with ext4
is not supported on non-Linux systems.

[kzak@redhat.com: - use #ifdef SYS_sched_getaffinity rather than __linux__]

Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
Samuel Thibault 2012-08-08 17:19:43 +02:00 committed by Karel Zak
parent 109896c36b
commit 4797b1e592
3 changed files with 19 additions and 7 deletions

View File

@ -10,7 +10,6 @@ libcommon_la_SOURCES = \
lib/env.c \
lib/fileutils.c \
lib/ismounted.c \
lib/loopdev.c \
lib/mangle.c \
lib/match.c \
lib/mbsalign.c \
@ -27,7 +26,9 @@ libcommon_la_SOURCES = \
lib/xgetpass.c
if LINUX
libcommon_la_SOURCES += lib/linux_version.c
libcommon_la_SOURCES += \
lib/linux_version.c \
lib/loopdev.c
endif
if !HAVE_LANGINFO
@ -41,7 +42,6 @@ check_PROGRAMS += \
test_fileutils \
test_ismounted \
test_mangle \
test_pager \
test_procutils \
test_randutils \
test_strutils \
@ -54,7 +54,8 @@ check_PROGRAMS += test_cpuset
endif
check_PROGRAMS += \
test_sysfs \
test_loopdev
test_loopdev \
test_pager
endif
test_blkdev_SOURCES = lib/blkdev.c

View File

@ -59,6 +59,7 @@ static const char *nexttoken(const char *q, int sep)
*/
int get_max_number_of_cpus(void)
{
#ifdef SYS_sched_getaffinity
int n, cpus = 2048;
size_t setsize;
cpu_set_t *set = cpuset_alloc(cpus, &setsize, NULL);
@ -83,6 +84,7 @@ int get_max_number_of_cpus(void)
cpuset_free(set);
return n * 8;
}
#endif
return -1;
}

View File

@ -257,6 +257,15 @@ static int system_supports_ext4dev(void)
ret = (fs_proc_check("ext4dev") || check_for_modules("ext4dev"));
return ret;
}
static int system_supports_ext4_ext2(void)
{
#ifdef __linux__
return get_linux_version() >= EXT4_SUPPORTS_EXT2;
#else
return 0;
#endif
}
/*
* reads superblock and returns:
* fc = feature_compat
@ -352,7 +361,7 @@ static int probe_ext2(blkid_probe pr,
*/
if (!system_supports_ext2() &&
(system_supports_ext4() || system_supports_ext4dev()) &&
get_linux_version() >= EXT4_SUPPORTS_EXT2)
system_supports_ext4_ext2())
return -BLKID_ERR_PARAM;
ext_get_info(pr, 2, es);
@ -405,7 +414,7 @@ static int probe_ext4dev(blkid_probe pr,
if (!(fc & EXT3_FEATURE_COMPAT_HAS_JOURNAL) &&
!system_supports_ext2() && !system_supports_ext4() &&
system_supports_ext4dev() &&
get_linux_version() >= EXT4_SUPPORTS_EXT2)
system_supports_ext4_ext2())
goto force_ext4dev;
/*
@ -450,7 +459,7 @@ static int probe_ext4(blkid_probe pr,
*/
if (!(fc & EXT3_FEATURE_COMPAT_HAS_JOURNAL) &&
!system_supports_ext2() && system_supports_ext4() &&
get_linux_version() >= EXT4_SUPPORTS_EXT2)
system_supports_ext4_ext2())
goto force_ext4;
/* Ext4 has at least one feature which ext3 doesn't understand */