]> sourceware.org Git - lvm2.git/commitdiff
libdm: add configure.in checks for fiemap.h and magic.h
authorBryn M. Reeves <bmr@redhat.com>
Fri, 8 Jul 2016 22:38:32 +0000 (23:38 +0100)
committerBryn M. Reeves <bmr@redhat.com>
Fri, 8 Jul 2016 22:42:32 +0000 (23:42 +0100)
configure
configure.in
include/configure.h.in
libdm/libdm-stats.c

index 83d5964e6f75a1ab16f6ba22e13939b5b0c18325..8253bfc04d75c66b8e59984cdbfd7b09a8dfbaf3 100755 (executable)
--- a/configure
+++ b/configure
@@ -5875,7 +5875,7 @@ fi
 done
 
 
-for ac_header in termios.h sys/statvfs.h sys/timerfd.h
+for ac_header in termios.h sys/statvfs.h sys/timerfd.h linux/magic.h linux/fiemap.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
index b87f8ff899f9943d4d9143bcd4286eb80ee87091..33b5c766a0c1fcdb60c0f648b36e9a1bfc037bf3 100644 (file)
@@ -103,7 +103,7 @@ AC_CHECK_HEADERS([assert.h ctype.h dirent.h errno.h fcntl.h float.h \
   sys/time.h sys/types.h sys/utsname.h sys/wait.h time.h \
   unistd.h], , [AC_MSG_ERROR(bailing out)])
 
-AC_CHECK_HEADERS(termios.h sys/statvfs.h sys/timerfd.h)
+AC_CHECK_HEADERS(termios.h sys/statvfs.h sys/timerfd.h linux/magic.h linux/fiemap.h)
 
 case "$host_os" in
        linux*)
index d94d55d45c0c57a1b771629ba2644d579ad10a81..3c43bd52948dc99f59173dbceef4f4d31d2ba9f9 100644 (file)
 /* Define to 1 if you have the <limits.h> header file. */
 #undef HAVE_LIMITS_H
 
+/* Define to 1 if you have the <linux/fiemap.h> header file. */
+#undef HAVE_LINUX_FIEMAP_H
+
 /* Define to 1 if you have the <linux/fs.h> header file. */
 #undef HAVE_LINUX_FS_H
 
+/* Define to 1 if you have the <linux/magic.h> header file. */
+#undef HAVE_LINUX_MAGIC_H
+
 /* Define to 1 if you have the <locale.h> header file. */
 #undef HAVE_LOCALE_H
 
index 612f9bff8c4b60175f20252e79d6e0ca9fca14db..57ef11d4a6455863fcd2fb06223c399ffc4ee0ed 100644 (file)
 
 #include <sys/ioctl.h>
 #include <sys/vfs.h> /* fstatfs */
-#include <linux/fs.h> /* FS_IOC_FIEMAP */
-#include <linux/fiemap.h> /* fiemap */
-#include <linux/magic.h> /* BTRFS_SUPER_MAGIC */
+
+#ifdef __linux__
+  #include <linux/fs.h> /* FS_IOC_FIEMAP */
+#endif
+
+#ifdef HAVE_LINUX_FIEMAP_H
+  #include <linux/fiemap.h> /* fiemap */
+#endif
+
+#ifdef HAVE_LINUX_MAGIC_H
+  #include <linux/magic.h> /* BTRFS_SUPER_MAGIC */
+#endif
 
 #define DM_STATS_REGION_NOT_PRESENT UINT64_MAX
 #define DM_STATS_GROUP_NOT_PRESENT DM_STATS_GROUP_NONE
@@ -4064,6 +4073,7 @@ int dm_stats_get_group_descriptor(const struct dm_stats *dms,
        return 1;
 }
 
+#ifdef HAVE_LINUX_FIEMAP_H
 /*
  * Group a table of region_ids corresponding to the extents of a file.
  */
@@ -4258,6 +4268,7 @@ static uint64_t *_stats_create_file_regions(struct dm_stats *dms, int fd,
        struct statfs fsbuf;
        struct stat buf;
 
+#ifdef BTRFS_SUPER_MAGIC
        if (fstatfs(fd, &fsbuf)) {
                log_error("fstatfs failed for fd %d", fd);
                return 0;
@@ -4268,6 +4279,7 @@ static uint64_t *_stats_create_file_regions(struct dm_stats *dms, int fd,
                          "physical FIEMAP extent data.");
                return 0;
        }
+#endif
 
        if (fstat(fd, &buf)) {
                log_error("fstat failed for fd %d", fd);
@@ -4360,6 +4372,17 @@ out:
        return NULL;
 }
 
+#else /* HAVE_LINUX_FIEMAP */
+uint64_t *dm_stats_create_regions_from_fd(struct dm_stats *dms, int fd,
+                                         int group, int precise,
+                                         struct dm_histogram *bounds,
+                                         const char *alias)
+{
+       log_error("File mapping requires FIEMAP ioctl support.");
+       return 0;
+}
+#endif /* HAVE_LINUX_FIEMAP */
+
 /*
  * Backward compatible dm_stats_create_region() implementations.
  *
This page took 0.082295 seconds and 5 git commands to generate.