mirror of
https://gitee.com/openharmony/third_party_f2fs-tools
synced 2024-11-26 19:51:32 +00:00
f8410857b7
NVM Express Zoned Namespace (ZNS) devices can have zone-capacity(zc) less than the zone-size. ZNS defines a per zone capacity which can be equal or less than the zone-size. Zone-capacity is the number of usable blocks in the zone. If zone-capacity is less than zone-size, then the segments which start at/after zone-capacity are considered unusable. Only those segments which start before the zone-capacity are considered as usable and added to the free_segment_count and free_segment_bitmap of the kernel. In such cases, the filesystem should not write/read beyond the zone-capacity. Update the super block with the usable number of blocks and free segment count in the ZNS device zones, if zone-capacity is less than zone-size. Set reserved segment count and overprovision ratio based on the usable segments in the zone. Allow fsck to find the free_segment_count based on the zone-capacity and compare with checkpoint values. Signed-off-by: Aravind Ramesh <aravind.ramesh@wdc.com> Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com> [Jaegeuk Kim: add UNUSED to is_usable_seg()] Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
231 lines
5.6 KiB
Plaintext
231 lines
5.6 KiB
Plaintext
# -*- Autoconf -*-
|
|
# Process this file with autoconf to produce a configure script.
|
|
|
|
AC_PREREQ([2.68])
|
|
|
|
# Get version from file VERSION
|
|
m4_define([f2fs_tools_version], m4_esyscmd([sed -n '1p' VERSION | tr -d '\n']))
|
|
m4_define([f2fs_tools_date], m4_esyscmd([sed -n '2p' VERSION | tr -d '\n']))
|
|
m4_define([f2fs_tools_gitdate],
|
|
m4_esyscmd([git log -1 --pretty=format:%ci 2> /dev/null]))
|
|
|
|
AC_INIT([F2FS tools], [f2fs_tools_version],
|
|
[linux-f2fs-devel@lists.sourceforge.net])
|
|
|
|
AC_DEFINE([F2FS_TOOLS_VERSION], "f2fs_tools_version", [f2fs-tools version])
|
|
AC_DEFINE([F2FS_MAJOR_VERSION], m4_bpatsubst(f2fs_tools_version,
|
|
[\([0-9]*\)\(\w\|\W\)*], [\1]),
|
|
[Major version for f2fs-tools])
|
|
AC_DEFINE([F2FS_MINOR_VERSION], m4_bpatsubst(f2fs_tools_version,
|
|
[\([0-9]*\).\([0-9]*\)\(\w\|\W\)*], [\2]),
|
|
[Minor version for f2fs-tools])
|
|
|
|
AS_IF([test -d .git],[
|
|
AC_DEFINE([F2FS_TOOLS_DATE],
|
|
"m4_bpatsubst(f2fs_tools_gitdate,
|
|
[\([0-9-]*\)\(\w\|\W\)*], [\1])",
|
|
[f2fs-tools date based on Git commits])],[
|
|
AC_DEFINE([F2FS_TOOLS_DATE],
|
|
"f2fs_tools_date",
|
|
[f2fs-tools date based on Source releases])])
|
|
|
|
AC_CONFIG_SRCDIR([config.h.in])
|
|
AC_CONFIG_HEADER([config.h])
|
|
AC_CONFIG_MACRO_DIR([m4])
|
|
AC_CONFIG_AUX_DIR([build-aux])
|
|
AM_INIT_AUTOMAKE([foreign tar-pax dist-xz])
|
|
|
|
# Test configure options.
|
|
AC_ARG_WITH([selinux],
|
|
AS_HELP_STRING([--without-selinux],
|
|
[Ignore presence of libselinux and disable selinux support]))
|
|
|
|
AC_ARG_WITH([blkid],
|
|
AS_HELP_STRING([--without-blkid],
|
|
[Ignore presence of libblkid and disable blkid support]))
|
|
|
|
# Checks for programs.
|
|
AC_PROG_CC
|
|
AC_PROG_LIBTOOL
|
|
AC_PATH_PROG([LDCONFIG], [ldconfig],
|
|
[AC_MSG_ERROR([ldconfig not found])],
|
|
[$PATH:/sbin])
|
|
|
|
# Checks for libraries.
|
|
PKG_CHECK_MODULES([libuuid], [uuid])
|
|
|
|
AS_IF([test "x$with_selinux" != "xno"],
|
|
[PKG_CHECK_MODULES([libselinux], [libselinux],
|
|
[have_selinux=yes], [have_selinux=no])],
|
|
[have_selinux=no]
|
|
)
|
|
|
|
AS_IF([test "x$have_selinux" = "xyes"],
|
|
[AC_DEFINE([HAVE_LIBSELINUX], [1], [Use libselinux])],
|
|
[AS_IF([test "x$with_selinux" = "xyes"],
|
|
[AC_MSG_ERROR([selinux support requested but libselinux not found])]
|
|
)]
|
|
)
|
|
|
|
AS_IF([test "x$with_blkid" != "xno"],
|
|
[PKG_CHECK_MODULES([libblkid], [blkid],
|
|
[have_blkid=yes], [have_blkid=no])],
|
|
[have_blkid=no]
|
|
)
|
|
|
|
AS_IF([test "x$have_blkid" = "xyes"],
|
|
[AC_DEFINE([HAVE_LIBBLKID], [1], [Use blkid])],
|
|
[AS_IF([test "x$with_blkid" = "xyes"],
|
|
[AC_MSG_ERROR([blkid support requested but libblkid not found])]
|
|
)]
|
|
)
|
|
|
|
# Checks for header files.
|
|
AC_CHECK_HEADERS(m4_flatten([
|
|
attr/xattr.h
|
|
byteswap.h
|
|
fcntl.h
|
|
linux/blkzoned.h
|
|
linux/falloc.h
|
|
linux/fs.h
|
|
linux/hdreg.h
|
|
linux/limits.h
|
|
linux/posix_acl.h
|
|
linux/types.h
|
|
linux/xattr.h
|
|
mach/mach_time.h
|
|
mntent.h
|
|
scsi/sg.h
|
|
stdlib.h
|
|
string.h
|
|
sys/acl.h
|
|
sys/ioctl.h
|
|
sys/syscall.h
|
|
sys/mount.h
|
|
sys/sysmacros.h
|
|
sys/utsname.h
|
|
sys/xattr.h
|
|
unistd.h
|
|
]))
|
|
|
|
# Checks for typedefs, structures, and compiler characteristics.
|
|
AC_C_INLINE
|
|
AC_TYPE_INT32_T
|
|
AC_TYPE_INT8_T
|
|
AC_TYPE_SIZE_T
|
|
|
|
# Checks for library functions.
|
|
AC_FUNC_GETMNTENT
|
|
AC_CHECK_FUNCS_ONCE([
|
|
add_key
|
|
fallocate
|
|
fsetxattr
|
|
fstat
|
|
fstat64
|
|
getmntent
|
|
keyctl
|
|
llseek
|
|
lseek64
|
|
memset
|
|
setmntent
|
|
])
|
|
|
|
AS_IF([test "$ac_cv_header_byteswap_h" = "yes"],
|
|
[AC_CHECK_DECLS([bswap_64],,,[#include <byteswap.h>])])
|
|
|
|
dnl
|
|
dnl Check to see if llseek() is declared in unistd.h. On some libc's
|
|
dnl it is, and on others it isn't..... Thank you glibc developers....
|
|
dnl
|
|
AC_CHECK_DECL(llseek,[AC_DEFINE(HAVE_LLSEEK_PROTOTYPE, 1,
|
|
[Define to 1 if llseek declared in unistd.h])],,
|
|
[#include <unistd.h>])
|
|
dnl
|
|
dnl Check to see if lseek64() is declared in unistd.h. Glibc's header files
|
|
dnl are so convoluted that I can't tell whether it will always be defined,
|
|
dnl and if it isn't defined while lseek64 is defined in the library,
|
|
dnl disaster will strike.
|
|
dnl
|
|
dnl Warning! Use of --enable-gcc-wall may throw off this test.
|
|
dnl
|
|
dnl
|
|
AC_CHECK_DECL(lseek64,[AC_DEFINE(HAVE_LSEEK64_PROTOTYPE, 1,
|
|
[Define to 1 if lseek64 declared in unistd.h])],,
|
|
[#define _LARGEFILE_SOURCE
|
|
#define _LARGEFILE64_SOURCE
|
|
#include <unistd.h>])
|
|
dnl
|
|
dnl Word sizes...
|
|
dnl
|
|
|
|
# AC_CANONICAL_HOST is needed to access the 'host_os' variable
|
|
AC_CANONICAL_HOST
|
|
|
|
build_linux=no
|
|
build_windows=no
|
|
build_mac=no
|
|
|
|
# Detect the target system
|
|
case "${host_os}" in
|
|
linux*|uclinux*)
|
|
build_linux=yes
|
|
;;
|
|
cygwin*|mingw*)
|
|
build_windows=yes
|
|
;;
|
|
darwin*)
|
|
build_mac=yes
|
|
;;
|
|
*)
|
|
AC_MSG_ERROR(["OS $host_os is not supported"])
|
|
;;
|
|
esac
|
|
|
|
# Pass the conditionals to automake
|
|
AM_CONDITIONAL([LINUX], [test "$build_linux" = "yes"])
|
|
AM_CONDITIONAL([WINDOWS], [test "$build_windows" = "yes"])
|
|
AM_CONDITIONAL([OSX], [test "$build_mac" = "yes"])
|
|
|
|
# Install directories
|
|
#AC_PREFIX_DEFAULT([/usr])
|
|
#AC_SUBST([sbindir], [/sbin])
|
|
#AC_SUBST([sysconfdir], [/etc])
|
|
#AC_SUBST([localstatedir], [/var])
|
|
|
|
AC_ARG_WITH([root-libdir],
|
|
[ --with-root-libdir=DIR override location for /lib/libf2fs.so],
|
|
root_libdir=$withval,
|
|
root_libdir=NONE)dnl
|
|
|
|
if test "$root_libdir" = NONE ; then
|
|
root_libdir="$libdir"
|
|
fi
|
|
AC_SUBST(root_libdir)
|
|
|
|
AC_CONFIG_FILES([
|
|
Makefile
|
|
man/Makefile
|
|
lib/Makefile
|
|
mkfs/Makefile
|
|
fsck/Makefile
|
|
tools/Makefile
|
|
tools/sg_write_buffer/Makefile
|
|
tools/f2fs_io/Makefile
|
|
])
|
|
|
|
AC_CHECK_MEMBER([struct blk_zone.capacity],
|
|
[AC_DEFINE(HAVE_BLK_ZONE_REP_V2, [1], [report zones includes zone capacity])],
|
|
[], [[#include <linux/blkzoned.h>]])
|
|
|
|
# export library version info for mkfs/libf2fs_format_la
|
|
AC_SUBST(FMT_CURRENT, 6)
|
|
AC_SUBST(FMT_REVISION, 0)
|
|
AC_SUBST(FMT_AGE, 0)
|
|
|
|
# export library version info for lib/libf2fs_la
|
|
AC_SUBST(LIBF2FS_CURRENT, 7)
|
|
AC_SUBST(LIBF2FS_REVISION, 0)
|
|
AC_SUBST(LIBF2FS_AGE, 0)
|
|
|
|
AC_OUTPUT
|