diff options
author | Jaegeuk Kim <jaegeuk@kernel.org> | 2020-12-23 10:13:59 -0800 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk@kernel.org> | 2022-04-26 16:05:34 -0700 |
commit | ea9921f4f5b947084a70a94573c472bd953e1c0d (patch) | |
tree | a3d5b54dbac6867d67c6097acbd7560b8f20b978 | |
parent | a8fefc20bd4c030069f1d9e527ee04a0bb20e419 (diff) | |
download | f2fs-tools-ea9921f4f5b947084a70a94573c472bd953e1c0d.tar.gz |
f2fs-tools: support zoned device in Android
This requires to change Android.bp in AOSP.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Change-Id: I28a4a701513cb2420cdf0e0e2aa3f60e712f2fcb
-rw-r--r-- | configure.ac | 9 | ||||
-rw-r--r-- | fsck/fsck.c | 2 | ||||
-rw-r--r-- | include/android_config.h | 4 | ||||
-rw-r--r-- | include/f2fs_fs.h | 4 | ||||
-rw-r--r-- | lib/libf2fs.c | 10 |
5 files changed, 19 insertions, 10 deletions
diff --git a/configure.ac b/configure.ac index f0ed5f6..e8ce005 100644 --- a/configure.ac +++ b/configure.ac @@ -95,6 +95,7 @@ AC_CHECK_HEADERS(m4_flatten([ blkid/blkid.h byteswap.h fcntl.h + kernel/uapi/linux/blkzoned.h linux/blkzoned.h linux/falloc.h linux/fiemap.h @@ -222,7 +223,13 @@ AC_CONFIG_FILES([ AC_CHECK_MEMBER([struct blk_zone.capacity], [AC_DEFINE(HAVE_BLK_ZONE_REP_V2, [1], [report zones includes zone capacity])], - [], [[#include <linux/blkzoned.h>]]) + [], [[ +#ifdef HAVE_KERNEL_UAPI_LINUX_BLKZONED_H +#include <kernel/uapi/linux/blkzoned.h> +#elif defined(HAVE_LINUX_BLKZONED_H) +#include <linux/blkzoned.h> +#endif + ]]) # export library version info for mkfs/libf2fs_format_la AC_SUBST(FMT_CURRENT, 7) diff --git a/fsck/fsck.c b/fsck/fsck.c index 19a28b0..3b37519 100644 --- a/fsck/fsck.c +++ b/fsck/fsck.c @@ -2994,7 +2994,7 @@ struct write_pointer_check_data { int dev_index; }; -static int chk_and_fix_wp_with_sit(int i, void *blkzone, void *opaque) +static int chk_and_fix_wp_with_sit(int UNUSED(i), void *blkzone, void *opaque) { struct blk_zone *blkz = (struct blk_zone *)blkzone; struct write_pointer_check_data *wpd = opaque; diff --git a/include/android_config.h b/include/android_config.h index ce67233..d7e4f60 100644 --- a/include/android_config.h +++ b/include/android_config.h @@ -1,7 +1,10 @@ #if defined(__linux__) +#define HAVE_BLK_ZONE_REP_V2 1 #define HAVE_BYTESWAP_H 1 #define HAVE_FCNTL_H 1 #define HAVE_FALLOC_H 1 +#define HAVE_KERNEL_UAPI_LINUX_BLKZONED_H 1 +#define HAVE_LINUX_BLKZONED_H 1 #define HAVE_LINUX_HDREG_H 1 #define HAVE_LINUX_LIMITS_H 1 #define HAVE_POSIX_ACL_H 1 @@ -19,6 +22,7 @@ #define HAVE_SYS_SYSMACROS_H 1 #define HAVE_SYS_XATTR_H 1 #define HAVE_UNISTD_H 1 +#define HAVE_SCSI_SG_H 1 #define HAVE_FALLOCATE 1 #define HAVE_FSETXATTR 1 diff --git a/include/f2fs_fs.h b/include/f2fs_fs.h index 1d7103c..d637427 100644 --- a/include/f2fs_fs.h +++ b/include/f2fs_fs.h @@ -50,7 +50,9 @@ #endif #include <sys/types.h> -#ifdef HAVE_LINUX_BLKZONED_H +#ifdef HAVE_KERNEL_UAPI_LINUX_BLKZONED_H +#include <kernel/uapi/linux/blkzoned.h> +#elif defined(HAVE_LINUX_BLKZONED_H) #include <linux/blkzoned.h> #endif diff --git a/lib/libf2fs.c b/lib/libf2fs.c index 63d07f2..afdbbbe 100644 --- a/lib/libf2fs.c +++ b/lib/libf2fs.c @@ -34,11 +34,9 @@ #ifdef HAVE_SYS_UTSNAME_H #include <sys/utsname.h> #endif -#ifndef WITH_ANDROID #ifdef HAVE_SCSI_SG_H #include <scsi/sg.h> #endif -#endif #ifdef HAVE_LINUX_HDREG_H #include <linux/hdreg.h> #endif @@ -46,10 +44,8 @@ #include <linux/limits.h> #endif -#ifndef WITH_ANDROID /* SCSI command for standard inquiry*/ #define MODELINQUIRY 0x12,0x00,0x00,0x00,0x4A,0x00 -#endif #ifndef _WIN32 /* O_BINARY is windows-specific flag */ #define O_BINARY 0 @@ -900,7 +896,7 @@ int get_device_info(int i) #ifdef HDIO_GETGIO struct hd_geometry geom; #endif -#if !defined(WITH_ANDROID) && defined(__linux__) +#ifdef __linux__ sg_io_hdr_t io_hdr; unsigned char reply_buffer[96] = {0}; unsigned char model_inq[6] = {MODELINQUIRY}; @@ -1002,7 +998,7 @@ int get_device_info(int i) #endif } -#if !defined(WITH_ANDROID) && defined(__linux__) +#ifdef __linux__ /* Send INQUIRY command */ memset(&io_hdr, 0, sizeof(sg_io_hdr_t)); io_hdr.interface_id = 'S'; @@ -1033,7 +1029,7 @@ int get_device_info(int i) return -1; } -#if !defined(WITH_ANDROID) && defined(__linux__) +#ifdef __linux__ if (S_ISBLK(stat_buf->st_mode)) { if (f2fs_get_zoned_model(i) < 0) { free(stat_buf); |