[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PATCH v6 14/25] block/nfs: Implement bdrv_dirname()
From: |
Max Reitz |
Subject: |
[Qemu-block] [PATCH v6 14/25] block/nfs: Implement bdrv_dirname() |
Date: |
Fri, 29 Sep 2017 18:53:36 +0200 |
While the basic idea is obvious and could be handled by the default
bdrv_dirname() implementation, we cannot generate a directory name if
the gid or uid are set, so we have to explicitly return NULL in those
cases.
Signed-off-by: Max Reitz <address@hidden>
---
block/nfs.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/block/nfs.c b/block/nfs.c
index 337fcd9c84..0152a9bd32 100644
--- a/block/nfs.c
+++ b/block/nfs.c
@@ -875,6 +875,19 @@ static void nfs_refresh_filename(BlockDriverState *bs,
QDict *options)
bs->full_open_options = opts;
}
+static char *nfs_dirname(BlockDriverState *bs, Error **errp)
+{
+ NFSClient *client = bs->opaque;
+
+ if (client->uid || client->gid) {
+ error_setg(errp, "Cannot generate a base directory for NBD node '%s'",
+ bs->filename);
+ return NULL;
+ }
+
+ return g_strdup_printf("nfs://%s%s/", client->server->host, client->path);
+}
+
#ifdef LIBNFS_FEATURE_PAGECACHE
static void nfs_invalidate_cache(BlockDriverState *bs,
Error **errp)
@@ -908,6 +921,7 @@ static BlockDriver bdrv_nfs = {
.bdrv_detach_aio_context = nfs_detach_aio_context,
.bdrv_attach_aio_context = nfs_attach_aio_context,
.bdrv_refresh_filename = nfs_refresh_filename,
+ .bdrv_dirname = nfs_dirname,
#ifdef LIBNFS_FEATURE_PAGECACHE
.bdrv_invalidate_cache = nfs_invalidate_cache,
--
2.13.6
- [Qemu-block] [PATCH v6 04/25] block: Respect backing bs in bdrv_refresh_filename, (continued)
- [Qemu-block] [PATCH v6 04/25] block: Respect backing bs in bdrv_refresh_filename, Max Reitz, 2017/09/29
- [Qemu-block] [PATCH v6 05/25] block: Make path_combine() return the path, Max Reitz, 2017/09/29
- [Qemu-block] [PATCH v6 06/25] block: bdrv_get_full_backing_filename_from_...'s ret. val., Max Reitz, 2017/09/29
- [Qemu-block] [PATCH v6 07/25] block: bdrv_get_full_backing_filename's ret. val., Max Reitz, 2017/09/29
- [Qemu-block] [PATCH v6 08/25] block: Add bdrv_make_absolute_filename(), Max Reitz, 2017/09/29
- [Qemu-block] [PATCH v6 09/25] block: Fix bdrv_find_backing_image(), Max Reitz, 2017/09/29
- [Qemu-block] [PATCH v6 10/25] block: Add bdrv_dirname(), Max Reitz, 2017/09/29
- [Qemu-block] [PATCH v6 11/25] blkverify: Make bdrv_dirname() return NULL, Max Reitz, 2017/09/29
- [Qemu-block] [PATCH v6 12/25] quorum: Make bdrv_dirname() return NULL, Max Reitz, 2017/09/29
- [Qemu-block] [PATCH v6 13/25] block/nbd: Make bdrv_dirname() return NULL, Max Reitz, 2017/09/29
- [Qemu-block] [PATCH v6 14/25] block/nfs: Implement bdrv_dirname(),
Max Reitz <=
- [Qemu-block] [PATCH v6 15/25] block: Use bdrv_dirname() for relative filenames, Max Reitz, 2017/09/29
- [Qemu-block] [PATCH v6 16/25] block: Add 'base-directory' BDS option, Max Reitz, 2017/09/29
- [Qemu-block] [PATCH v6 17/25] iotests: Add quorum case to test 110, Max Reitz, 2017/09/29
- [Qemu-block] [PATCH v6 18/25] block: Add sgfnt_runtime_opts to BlockDriver, Max Reitz, 2017/09/29
- [Qemu-block] [PATCH v6 19/25] block: Add BlockDriver.bdrv_gather_child_options, Max Reitz, 2017/09/29
- [Qemu-block] [PATCH v6 20/25] block: Generically refresh runtime options, Max Reitz, 2017/09/29
- [Qemu-block] [PATCH v6 21/25] block: Purify .bdrv_refresh_filename(), Max Reitz, 2017/09/29
- [Qemu-block] [PATCH v6 22/25] block: Do not copy exact_filename from format file, Max Reitz, 2017/09/29
- [Qemu-block] [PATCH v6 23/25] block: Fix FIXME from "Add BDS.backing_overridden", Max Reitz, 2017/09/29
- [Qemu-block] [PATCH v6 24/25] block/curl: Implement bdrv_refresh_filename(), Max Reitz, 2017/09/29