Thread (5 messages) 5 messages, 2 authors, 2020-05-12

Re: [PATCH V2] allow RAID5 to grow to RAID6 with a backup_file

From: Jes Sorensen <hidden>
Date: 2020-05-08 14:01:18

On 5/5/20 2:35 PM, Nigel Croxon wrote:
quoted hunk ↗ jump to hunk
This problem came in, as the user did not specify a full path with
the backup_file option when growing an RAID5 array to RAID6.
When the full path is specified, the symbolic link is created
properly (/run/mdadm/backup_file-mdX). But the code did not support
the symbolic link when looking for the backup_file. Added two
checks for symlink.

This addresses https://www.spinics.net/lists/raid/msg48910.html
and numerous customer reported problems.

V2:
- Removed unneeded break; in both case-statements
- Returned the error checking on call to lstat

Signed-off-by: Nigel Croxon <redacted>
---
 Grow.c | 21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)
diff --git a/Grow.c b/Grow.c
index 764374f..53245d7 100644
--- a/Grow.c
+++ b/Grow.c
@@ -1135,6 +1135,15 @@ int reshape_open_backup_file(char *backup_file,
 	unsigned int dev;
 	int i;
 
+	if (lstat(backup_file, &stb) != -1) {
+		switch (stb.st_mode & S_IFMT) {
+		case S_IFLNK:
+			return 1;
+		default:
+			break;
+		}
+	}
+
Sorry for being a pita on this, but in this case you do the thing if the
lstat completes correctly, but what if it fails? In that case we should
error out rather than just continuing.

Jes
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help