[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 11/12] block: add bdrv_is_file_on_fuse helper
From: |
Vladimir Sementsov-Ogievskiy |
Subject: |
[PATCH v3 11/12] block: add bdrv_is_file_on_fuse helper |
Date: |
Mon, 17 Aug 2020 12:15:52 +0300 |
Add a function to check, is it a file-posix node on top of file in
FUSE file system.
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
---
include/block/block.h | 2 ++
block/file-posix.c | 21 +++++++++++++++++++++
2 files changed, 23 insertions(+)
diff --git a/include/block/block.h b/include/block/block.h
index 877fda06a4..51e957f6fb 100644
--- a/include/block/block.h
+++ b/include/block/block.h
@@ -787,4 +787,6 @@ int coroutine_fn bdrv_co_copy_range(BdrvChild *src,
uint64_t src_offset,
BdrvChild *dst, uint64_t dst_offset,
uint64_t bytes, BdrvRequestFlags
read_flags,
BdrvRequestFlags write_flags);
+
+bool bdrv_is_file_on_fuse(BlockDriverState *bs);
#endif
diff --git a/block/file-posix.c b/block/file-posix.c
index 560d1c0a94..4100b8dc89 100644
--- a/block/file-posix.c
+++ b/block/file-posix.c
@@ -324,6 +324,27 @@ static bool dio_byte_aligned(int fd)
return false;
}
+static bool is_fuse(int fd)
+{
+#ifdef __linux__
+ struct statfs buf;
+ int ret;
+
+ ret = fstatfs(fd, &buf);
+ if (ret == 0 && buf.f_type == FUSE_SUPER_MAGIC) {
+ return true;
+ }
+#endif
+ return false;
+}
+
+bool bdrv_is_file_on_fuse(BlockDriverState *bs)
+{
+ BDRVRawState *s = bs->opaque;
+
+ return !strcmp(bs->drv->format_name, "file") && is_fuse(s->fd);
+}
+
/* Check if read is allowed with given memory buffer and length.
*
* This function is used to check O_DIRECT memory buffer and request alignment.
--
2.18.0
- [PATCH v3 04/12] block/io: bdrv_wait_serialising_requests_locked: drop extra bs arg, (continued)
- [PATCH v3 04/12] block/io: bdrv_wait_serialising_requests_locked: drop extra bs arg, Vladimir Sementsov-Ogievskiy, 2020/08/17
- [PATCH v3 06/12] block: introduce BDRV_REQ_NO_WAIT flag, Vladimir Sementsov-Ogievskiy, 2020/08/17
- [PATCH v3 05/12] block: bdrv_mark_request_serialising: split non-waiting function, Vladimir Sementsov-Ogievskiy, 2020/08/17
- [PATCH v3 07/12] block: introduce preallocate filter, Vladimir Sementsov-Ogievskiy, 2020/08/17
- [PATCH v3 08/12] iotests.py: add verify_o_direct helper, Vladimir Sementsov-Ogievskiy, 2020/08/17
- [PATCH v3 11/12] block: add bdrv_is_file_on_fuse helper,
Vladimir Sementsov-Ogievskiy <=
- [PATCH v3 09/12] iotests.py: add filter_img_check, Vladimir Sementsov-Ogievskiy, 2020/08/17
- [PATCH v3 10/12] iotests: add 298 to test new preallocate filter driver, Vladimir Sementsov-Ogievskiy, 2020/08/17
- [PATCH v3 12/12] block/qcow2: automatically insert preallocate filter when on FUSE, Vladimir Sementsov-Ogievskiy, 2020/08/17
- Re: [PATCH v3 00/12] preallocate filter, no-reply, 2020/08/17
- Re: [PATCH v3 00/12] preallocate filter, no-reply, 2020/08/17