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 <s...@chromium.org>
---

 drivers/block/sandbox.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/block/sandbox.c b/drivers/block/sandbox.c
index 53925ce9b6..1388498a1d 100644
--- a/drivers/block/sandbox.c
+++ b/drivers/block/sandbox.c
@@ -125,9 +125,14 @@ int host_dev_bind(int devnum, char *filename, bool 
removable)
 
        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,
-- 
2.35.1.574.g5d30c73bfb-goog

Reply via email to