extmod/vfs_lfs: Support mounting LFS filesystems in read-only mode.

Signed-off-by: Damien George <damien@micropython.org>
diff --git a/extmod/vfs_lfsx.c b/extmod/vfs_lfsx.c
index 35d5f03..f865e46 100644
--- a/extmod/vfs_lfsx.c
+++ b/extmod/vfs_lfsx.c
@@ -423,10 +423,16 @@
 STATIC MP_DEFINE_CONST_FUN_OBJ_2(MP_VFS_LFSx(statvfs_obj), MP_VFS_LFSx(statvfs));
 
 STATIC mp_obj_t MP_VFS_LFSx(mount)(mp_obj_t self_in, mp_obj_t readonly, mp_obj_t mkfs) {
-    (void)self_in;
-    (void)readonly;
+    MP_OBJ_VFS_LFSx *self = MP_OBJ_TO_PTR(self_in);
     (void)mkfs;
-    // already called LFSx_API(mount) in MP_VFS_LFSx(make_new)
+
+    // Make block device read-only if requested.
+    if (mp_obj_is_true(readonly)) {
+        self->blockdev.writeblocks[0] = MP_OBJ_NULL;
+    }
+
+    // Already called LFSx_API(mount) in MP_VFS_LFSx(make_new) so the filesystem is ready.
+
     return mp_const_none;
 }
 STATIC MP_DEFINE_CONST_FUN_OBJ_3(MP_VFS_LFSx(mount_obj), MP_VFS_LFSx(mount));
diff --git a/tests/extmod/vfs_lfs_mount.py b/tests/extmod/vfs_lfs_mount.py
index 2c40b29..3d8cec6 100644
--- a/tests/extmod/vfs_lfs_mount.py
+++ b/tests/extmod/vfs_lfs_mount.py
@@ -67,6 +67,23 @@
     # umount
     uos.umount("/lfs")
 
+    # mount read-only
+    vfs = vfs_class(bdev)
+    uos.mount(vfs, "/lfs", readonly=True)
+
+    # test reading works
+    with open("/lfs/subdir/lfsmod2.py") as f:
+        print("lfsmod2.py:", f.read())
+
+    # test writing fails
+    try:
+        open("/lfs/test_write", "w")
+    except OSError as er:
+        print(repr(er))
+
+    # umount
+    uos.umount("/lfs")
+
     # clear imported modules
     usys.modules.clear()
 
diff --git a/tests/extmod/vfs_lfs_mount.py.exp b/tests/extmod/vfs_lfs_mount.py.exp
index b5c5215..aa654eb 100644
--- a/tests/extmod/vfs_lfs_mount.py.exp
+++ b/tests/extmod/vfs_lfs_mount.py.exp
@@ -2,7 +2,13 @@
 hello from lfs
 package
 hello from lfs
+lfsmod2.py: print("hello from lfs")
+
+OSError(30,)
 test <class 'VfsLfs2'>
 hello from lfs
 package
 hello from lfs
+lfsmod2.py: print("hello from lfs")
+
+OSError(36,)