[CRIU] [PATCH 1/3] files-reg: Rework strip_deleted

Cyrill Gorcunov gorcunov at openvz.org
Mon Aug 10 01:34:25 PDT 2015


At moment here are two postfixes kernel supports,
so rework the routine to handle both.

Signed-off-by: Cyrill Gorcunov <gorcunov at openvz.org>
---
 files-reg.c | 30 +++++++++++++++++++++++-------
 1 file changed, 23 insertions(+), 7 deletions(-)

diff --git a/files-reg.c b/files-reg.c
index 2a6269b2a550..1a89e45a89bd 100644
--- a/files-reg.c
+++ b/files-reg.c
@@ -647,16 +647,32 @@ static inline bool nfs_silly_rename(char *rpath, const struct fd_parms *parms)
 
 static void strip_deleted(struct fd_link *link)
 {
-	const char postfix[] = " (deleted)";
-	const size_t plen = strlen(postfix);
+	struct dcache_prepends {
+		const char	*str;
+		size_t		len;
+	} static const prepends[] = {
+		{
+			.str	= " (deleted)",
+			.len	= 10,
+		}, {
+			.str	= "//deleted",
+			.len	= 10,
+		}
+	};
+	size_t i;
+
+	for (i = 0; i < ARRAY_SIZE(prepends); i++) {
+		size_t at;
+
+		if (link->len <= prepends[i].len)
+			continue;
 
-	if (link->len > plen) {
-		size_t at = link->len - plen;
-		if (!strcmp(&link->name[at], postfix)) {
+		at = link->len - prepends[i].len;
+		if (!strcmp(&link->name[at], prepends[i].str)) {
 			pr_debug("Stip %s' tag from '%s'\n",
-				 postfix, link->name);
+				 prepends[i].str, link->name);
 			link->name[at] = '\0';
-			link->len -= plen;
+			link->len -= prepends[i].len;
 		}
 	}
 }
-- 
2.4.3



More information about the CRIU mailing list