If you want to get the maximum number of hard links to one file in
specified filesystem, using the below interface. if there is no such
limits, return -1
int tst_fs_get_max_hardlinks(const char *filesystem);
If you want to get the maximum subdirectories per directory in
specified filesystem, using the below interface. if there is no such
limits, return -1.
int tst_fs_max_subdirs_per_dir(const char *filesystem);
Signed-off-by: Xiaoguang Wang <[email protected]>
---
configure.ac | 1 +
include/test.h | 15 ++++++++++
lib/tst_fs_link_count.c | 71 ++++++++++++++++++++++++++++++++++++++++++++++++
m4/ltp-ext-filesystem.m4 | 38 ++++++++++++++++++++++++++
4 files changed, 125 insertions(+)
create mode 100644 lib/tst_fs_link_count.c
create mode 100644 m4/ltp-ext-filesystem.m4
diff --git a/configure.ac b/configure.ac
index 8698c47..5a5d7b5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -182,5 +182,6 @@ LTP_CHECK_FALLOCATE
LTP_CHECK_SYSCALL_FCNTL
LTP_CHECK_SYSCALL_PERF_EVENT_OPEN
LTP_CHECK_TIRPC
+LTP_CHECK_EXT_FILESYSTEM
AC_OUTPUT
diff --git a/include/test.h b/include/test.h
index 43fdc8b..6077a4f 100644
--- a/include/test.h
+++ b/include/test.h
@@ -321,6 +321,21 @@ const char *tst_strerrno(int err);
int tst_path_has_mnt_flags(void (cleanup_fn)(void),
const char *path, const char *flags[]);
+/*
+ * lib/tst_fs_link_count.c
+ * Return the maximum number of hard links to one file in specified filesystem.
+ * If the filesystem does not have such limits or currently we do not have
+ * knowledge about the filesystem, return -1.
+ */
+int tst_fs_get_max_hardlinks(const char *filesystem);
+
+/* lib/tst_fs_link_count.c
+ * Return the maximum subdirectories per directory in specified filesystem.
+ * If the filesystem does not have such limits or currently we do not have
+ * knowledge about the filesystem, return -1.
+ */
+int tst_fs_max_subdirs_per_dir(const char *filesystem);
+
#ifdef TST_USE_COMPAT16_SYSCALL
#define TCID_BIT_SUFFIX "_16"
#elif TST_USE_NEWER64_SYSCALL
diff --git a/lib/tst_fs_link_count.c b/lib/tst_fs_link_count.c
new file mode 100644
index 0000000..16722e0
--- /dev/null
+++ b/lib/tst_fs_link_count.c
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2014 Fujitsu Ltd.
+ * Author: Xiaoguang Wang <[email protected]>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it would be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include "test.h"
+
+int tst_fs_get_max_hardlinks(const char *filesystem)
+{
+ if (strcmp(filesystem, "ext2") == 0 ||
+ strcmp(filesystem, "ext3") == 0) {
+#if defined(HAVE_EXT4_USE_FOR_EXT23)
+ tst_resm(TINFO, "kernel config option CONFIG_EXT4_USE_FOR_EXT23"
+ " is enabled, so ext4 file system driver will be used "
+ "for %s file system mounts", filesystem);
+ return 65000;
+#else
+ return 32000;
+#endif
+ } else if (strcmp(filesystem, "ext4") == 0) {
+ return 65000;
+ } else if (strcmp(filesystem, "xfs") == 0) {
+ return -1;
+ } else if (strcmp(filesystem, "btrfs") == 0) {
+ return 65535;
+ } else {
+ tst_resm(TINFO, "Currently we do not have knowledge about "
+ "filesystem %s, or it is not a valid filesystem "
+ "name", filesystem);
+ return -1;
+ }
+}
+
+int tst_fs_max_subdirs_per_dir(const char *filesystem)
+{
+ if (strcmp(filesystem, "ext2") == 0 ||
+ strcmp(filesystem, "ext3") == 0) {
+#if defined(HAVE_EXT4_USE_FOR_EXT23)
+ tst_resm(TINFO, "kernel config option CONFIG_EXT4_USE_FOR_EXT23"
+ " is enabled, so ext4 file system driver will be used "
+ "for %s file system mounts", filesystem);
+ return -1;
+#else
+ return 32000;
+#endif
+ } else if (strcmp(filesystem, "ext4") == 0) {
+ return -1;
+ } else if (strcmp(filesystem, "xfs") == 0) {
+ return -1;
+ } else if (strcmp(filesystem, "btrfs") == 0) {
+ return -1;
+ } else {
+ tst_resm(TINFO, "for filesystem:%s, currently there is no "
+ "exact information about the max subdirectories per"
+ " directory or this is not a valid filesystem name",
+ filesystem);
+ return -1;
+ }
+}
diff --git a/m4/ltp-ext-filesystem.m4 b/m4/ltp-ext-filesystem.m4
new file mode 100644
index 0000000..bbc0a54
--- /dev/null
+++ b/m4/ltp-ext-filesystem.m4
@@ -0,0 +1,38 @@
+dnl
+dnl Copyright (c) 2014 Fujitsu Ltd.
+dnl Author: Xiaoguang Wang <[email protected]>
+dnl
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 2 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
+dnl the GNU General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write to the Free Software
+dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
USA
+dnl
+
+dnl
+dnl LTP_CHECK_EXT_FILESYSTEM
+dnl ----------------------------
+dnl
+AC_DEFUN([LTP_CHECK_EXT_FILESYSTEM],[dnl
+ AC_MSG_CHECKING([check kernel config option CONFIG_EXT4_USE_FOR_EXT23])
+
+ has_ext4_use_for_ext23=no
+ if grep "CONFIG_EXT4_USE_FOR_EXT23=y" /boot/config-$(uname -r); then
+ has_ext4_use_for_ext23=yes
+ fi
+
+ if test "$has_ext4_use_for_ext23" = "yes"; then
+ AC_DEFINE(HAVE_EXT4_USE_FOR_EXT23,1,[Define to 1 if kernel
config option CONFIG_EXT4_USE_FOR_EXT23 is defined])
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_RESULT(no)
+ fi
+])
--
1.8.2.1
------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list