sandbox: Open host file for read-only access if needed

Some files cannot be written but read-only access is still useful for
tests. Add a fallback to read-only access when needed.

This is useful in CI when opening a large data file provided by docker,
where read/write access would result in copying the file, thus needing
a lot of extra disk space.

Signed-off-by: Simon Glass <sjg@chromium.org>
diff --git a/drivers/block/sandbox.c b/drivers/block/sandbox.c
index 53925ce..1388498 100644
--- a/drivers/block/sandbox.c
+++ b/drivers/block/sandbox.c
@@ -125,9 +125,14 @@
 
 	fd = os_open(filename, OS_O_RDWR);
 	if (fd == -1) {
-		printf("Failed to access host backing file '%s'\n", filename);
-		ret = -ENOENT;
-		goto err;
+		printf("Failed to access host backing file '%s', trying read-only\n",
+		       filename);
+		fd = os_open(filename, OS_O_RDONLY);
+		if (fd == -1) {
+			printf("- still failed\n");
+			ret = -ENOENT;
+			goto err;
+		}
 	}
 	ret = blk_create_device(gd->dm_root, "sandbox_host_blk", str,
 				IF_TYPE_HOST, devnum, 512,