changeset 659:5ab6a21b3506

objstore/posix: rely on generic code's vdev private data allocation Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
author Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
date Sat, 02 Mar 2019 20:20:31 -0500
parents 6c8f926b1136
children ec184641e021
files src/objstore/posix/main.c
diffstat 1 files changed, 5 insertions(+), 26 deletions(-) [+]
line wrap: on
line diff
--- a/src/objstore/posix/main.c	Sat Mar 02 20:27:03 2019 -0500
+++ b/src/objstore/posix/main.c	Sat Mar 02 20:20:31 2019 -0500
@@ -78,30 +78,19 @@
 
 static int posix_create_vdev(struct objstore_vdev *vdev)
 {
-	struct posix_vdev *pvdev;
+	struct posix_vdev *pvdev = vdev->private;
 	int ret;
 
 	cmn_err(CE_WARN, "The POSIX objstore backend is still experimental");
 	cmn_err(CE_WARN, "Do not expect compatibility from version to version");
 
-	pvdev = malloc(sizeof(struct posix_vdev));
-	if (!pvdev)
-		return -ENOMEM;
-
 	pvdev->vdev = vdev;
 
 	ret = __create_vdev(pvdev);
 	if (ret)
-		goto err;
-
-	vdev->private = pvdev;
+		return ret;
 
 	return 0;
-
-err:
-	free(pvdev);
-
-	return ret;
 }
 
 static int __create_root_dir_ver_dirent(struct posix_vol *pvol, int verfd,
@@ -382,34 +371,24 @@
 static int posix_import_vdev(struct objstore_vdev *vdev,
 			     struct xuuid **vols)
 {
-	struct posix_vdev *pvdev;
+	struct posix_vdev *pvdev = vdev->private;
 	int ret;
 
 	cmn_err(CE_WARN, "The POSIX objstore backend is still experimental");
 	cmn_err(CE_WARN, "Do not expect compatibility from version to version");
 
-	pvdev = malloc(sizeof(struct posix_vdev));
-	if (!pvdev)
-		return -ENOMEM;
-
 	pvdev->vdev = vdev;
 
 	ret = __import_vdev(pvdev);
 	if (ret)
-		goto err;
-
-	vdev->private = pvdev;
+		return ret;
 
 	return 0;
-
-err:
-	free(pvdev);
-
-	return ret;
 }
 
 const struct objstore_vdev_def objvdev = {
 	.name = "posix",
+	.vdev_private_size = sizeof(struct posix_vdev),
 
 	.create_vdev = posix_create_vdev,
 	.import_vdev = posix_import_vdev,