mirror of
https://github.com/MariaDB/server.git
synced 2025-01-27 17:33:44 +01:00
129616c70a
Thanks to references from Brad Smith, BSDs use getmntinfo as
a system call for mounted filesystems.
Most BSDs return statfs structures, (and we use OSX's statfs64),
but NetBSD uses a statvfs structure.
Simplify Linux getmntent_r to just use getmntent.
AIX uses getmntent.
An attempt at writing Solaris compatibility with
a small bit of HPUX compatibility was made based on man page
entries only. Fixes welcome.
statvfs structures now use f_bsize for consistency with statfs
Test case adjusted as PATH_MAX is OS defined (e.g. 1023 on AIX)
Fixes: 0ee5cf837e
also fixes:
MDEV-27818: Disk plugin does not show zpool mounted devices
This is because zpool mounted point don't begin with /.
Due to the proliferation of multiple filesystem types since this
was written, we restrict the entries listed in the disks plugin
to excude:
* read only mount points (no point monitoring, and
includes squash, snaps, sysfs, procfs, cgroups...)
* mount points that aren't directories (excludes /etc/hostname and
similar mounts in containers). (getmntent (Linux/AIX) only)
* exclude systems where there is no capacity listed (excludes various
virtual filesystem types).
Reviewer: Sergei Golubchik
24 lines
824 B
CMake
24 lines
824 B
CMake
INCLUDE (CheckIncludeFiles)
|
|
|
|
CHECK_SYMBOL_EXISTS (getmntent "mntent.h" HAVE_GETMNTENT)
|
|
CHECK_SYMBOL_EXISTS (getmntent "sys/mnttab.h" HAVE_GETMNTENT_IN_SYS_MNTAB)
|
|
CHECK_SYMBOL_EXISTS (setmntent "mntent.h" HAVE_SETMNTENT)
|
|
CHECK_SYMBOL_EXISTS (getmntinfo "sys/types.h;sys/mount.h" HAVE_GETMNTINFO)
|
|
CHECK_SYMBOL_EXISTS (getmntinfo64 "sys/types.h;sys/mount.h" HAVE_GETMNTINFO64)
|
|
|
|
IF (HAVE_GETMNTINFO)
|
|
CHECK_CXX_SOURCE_COMPILES("
|
|
#include <sys/types.h>
|
|
#include <sys/statvfs.h>
|
|
int main()
|
|
{
|
|
struct statvfs *s;
|
|
return getmntinfo(&s, ST_WAIT);
|
|
}
|
|
" HAVE_GETMNTINFO_TAKES_statvfs)
|
|
ENDIF()
|
|
IF (HAVE_GETMNTENT OR HAVE_GETMNTENT_IN_SYS_MNTAB OR
|
|
HAVE_GETMNTINFO OR HAVE_GETMNTINFO64)
|
|
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/sql)
|
|
MYSQL_ADD_PLUGIN(DISKS information_schema_disks.cc MODULE_ONLY RECOMPILE_FOR_EMBEDDED)
|
|
ENDIF()
|