[RHEL8,COMMIT] ploop: Change cmds return values

Submitted by Konstantin Khorenko on Oct. 25, 2019, 1:37 p.m.

Details

Message ID 201910251337.x9PDb0tN004100@finist_co8.work.ct
State New
Series "ploop: Change cmds return values"
Headers show

Commit Message

Konstantin Khorenko Oct. 25, 2019, 1:37 p.m.
The commit is pushed to "branch-rh8-4.18.0-80.1.2.vz8.2.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git
after rh8-4.18.0-80.1.2.vz8.2.3
------>
commit b9052ab77203d1e6e8cb81f0f6c47ea71446d22c
Author: Kirill Tkhai <ktkhai@virtuozzo.com>
Date:   Fri Oct 25 16:36:42 2019 +0300

    ploop: Change cmds return values
    
    Make get_delta_name, ploop_push_backup_read and push_backup_get_uuid
    return empty string in case of there is no delta or there is no bios,
    or there is no backup started to simplify parsing in userspace.
    
    Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>
---
 drivers/md/dm-ploop-cmd.c | 28 +++++++++++++++-------------
 1 file changed, 15 insertions(+), 13 deletions(-)

Patch hide | download patch | download mbox

diff --git a/drivers/md/dm-ploop-cmd.c b/drivers/md/dm-ploop-cmd.c
index 9c8ca8102774..98e5e0525a1b 100644
--- a/drivers/md/dm-ploop-cmd.c
+++ b/drivers/md/dm-ploop-cmd.c
@@ -902,11 +902,13 @@  static int ploop_get_delta_name_cmd(struct ploop *ploop, u8 level,
 				char *result, unsigned int maxlen)
 {
 	struct file *file;
-	int len, ret;
+	int len, ret = 1;
 	char *p;
 
-	if (level >= ploop->nr_deltas)
-		return -ENOENT;
+	if (level >= ploop->nr_deltas) {
+		result[0] = '\0';
+		goto out;
+	}
 
 	/*
 	 * Nobody can change deltas in parallel, since
@@ -918,7 +920,6 @@  static int ploop_get_delta_name_cmd(struct ploop *ploop, u8 level,
 	read_unlock_irq(&ploop->bat_rwlock);
 
 	p = file_path(file, result, maxlen);
-	ret = 1;
 	if (p == ERR_PTR(-ENAMETOOLONG)) {
 		/* Notify target_message(), there is not enough space */
 		memset(result, 'x', maxlen - 1);
@@ -933,6 +934,7 @@  static int ploop_get_delta_name_cmd(struct ploop *ploop, u8 level,
 	}
 
 	fput(file);
+out:
 	return ret;
 }
 
@@ -1391,7 +1393,7 @@  static int ploop_push_backup_stop(struct ploop *ploop, char *uuid,
 	cmd.ploop = ploop;
 
 	if (!ploop->pb)
-		return -ENOENT;
+		return -EBADF;
 	if (strcmp(ploop->pb->uuid, uuid))
 		return -EINVAL;
 
@@ -1412,10 +1414,10 @@  static int ploop_push_backup_get_uuid(struct ploop *ploop, char *result,
 	struct push_backup *pb = ploop->pb;
 	unsigned int sz = 0;
 
-	if (!pb)
-		return -EBADF;
-
-	DMEMIT("%s", pb->uuid);
+	if (pb)
+		DMEMIT("%s", pb->uuid);
+	else
+		result[0] = '\0';
 	return 1;
 }
 
@@ -1426,7 +1428,7 @@  static int ploop_push_backup_read(struct ploop *ploop, char *uuid,
 	struct push_backup *pb = ploop->pb;
 	unsigned int left, right, sz = 0;
 	struct rb_node *node;
-	int ret;
+	int ret = 1;
 
 	if (!pb)
 		return -EBADF;
@@ -1436,10 +1438,11 @@  static int ploop_push_backup_read(struct ploop *ploop, char *uuid,
 		return -ESTALE;
 
 	spin_lock_irq(&ploop->pb_lock);
-	ret = -ENOENT;
 	h = orig_h = list_first_entry_or_null(&pb->pending, typeof(*h), list);
-	if (!h)
+	if (!h) {
+		result[0] = '\0';
 		goto unlock;
+	}
 	list_del_init(&h->list);
 
 	left = right = h->cluster;
@@ -1461,7 +1464,6 @@  static int ploop_push_backup_read(struct ploop *ploop, char *uuid,
 	}
 
 	DMEMIT("%u:%u", left, right - left + 1);
-	ret = 1;
 unlock:
 	spin_unlock_irq(&ploop->pb_lock);
 	return ret;