Repository navigation
Conversation
|
Code size report: |
b13e701 to
5131dbd
Compare
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #13470 +/- ##
==========================================
- Coverage 98.56% 98.56% -0.01%
==========================================
Files 169 169
Lines 21948 21949 +1
==========================================
Hits 21633 21633
- Misses 315 316 +1 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
I'm not sure that this is the best way to do it, because it adds a method, code size, and differs to other Vfs filesystems that don't support a label. How about instead copy the way the stm32 port does it, have a |
|
As it stands, you're probably right and I'll refactor this PR to fix the omission without addressing our specific use-case- I've got a fork with some minimal changes that allow USB Mass Storage mode builds to expose two filesystems (currently hard-coded, but then the whole USB MSC thing is a bit of an exception to the do-everything-USB-in-Python goal at the moment). In our - admittedly quite contrived - demo case, these two filesystems have distinct labels. The conceit is that we can have one filesystem that's writable from MicroPython, and one that's writeable from the host and use the formere as a means to support logging, saves, config changes and so forth while code is written into the latter from the host. Of course this is all highly experimental but it works and suggests there might be scope for some more esoteric FAT/MSC builds if we find the experience... tolerable. I am keenly aware of all the problems with filesystem syncing across multiple hosts from my tinkering with PiratePython (a CPython RAMdisk for Pi Zero). It might be that MicroPython is unconcerned with the slippery slope that is FAT/MSC and the answer is for us to build our own C module to implement this functionality (ala the Factory Reset style of some ports). I'm happy with that. (on the off chance anyone wants to replicate this dual FS weirdness, diff here - master...pimoroni:micropython:feature/multi-msc) |
This comment was marked as outdated.
This comment was marked as outdated.
5131dbd to
330843c
Compare
Signed-off-by: Phil Howard <[email protected]>
Set the USB mass storage label when the filesystem is created. Signed-off-by: Phil Howard <[email protected]>
330843c to
f8b35df
Compare
|
I have rebased/pushed this because I'm experimenting with FAT again. I believe the multiple-filesystems issue still presides, since as of 6aa3c94 you can select a portion of RP2s flash on which to create a filesystem, and potentially create as many filesystems as you like. That makes use of Perhaps a Edit: I should note that my current focus is on a single filesystem with a boot-time switch to select between mass-storage and runtime modes, avoiding any read/write conflicts between the host and device. So the |
|
Commit 390390e made it so the label is set to I can see how it would still be useful to allow Python to set the label (eg for multiple filesystems with different labels). That could either be done as per this PR (a new method, Whatever is added, it's going to cost a bit. But I guess that's just the cost of having good filesystem support. |
|
I discovered the hard way that changing/writing the filesystem label on boot will result in a corrupt filesystem more often than not, so making it part of I've since switched to preparing a pre-loaded filesystem up front and setting the label "offline" as such, so it's already set when the board boots. Anyway TLDR I think setting label during |
OK, sounds good. Then I'll close this PR and in the future someone can implement the |
This addresses discussion over at https://github.com/orgs/micropython/discussions/9590
For other boards which more conventionally use MSC, they call
f_setlabelfrom the factory reset code paths in C, eg:micropython/ports/renesas-ra/factoryreset.c
Line 88 in 16c6bc4
The C method uses
MICROPY_HW_FLASH_FS_LABEL, but I wasn't sure by what means we could incorporate that into RP2's Python filesystem bootstrapping. Perhaps callingvfs.label()without an argument could use this as the default value?