diff options
author | Damien George <damien@micropython.org> | 2020-07-29 01:01:48 +1000 |
---|---|---|
committer | Damien George <damien@micropython.org> | 2020-08-25 17:35:19 +1000 |
commit | 2acc087880de39d7e17abc9344b8d2faba3478dd (patch) | |
tree | e7a8e21a14bad32ef1b78b351c8d754962e18d1c /docs | |
parent | ee50a6effebf315c38d4a129dc9f65ee722eb5b6 (diff) |
extmod/vfs_lfs: Add mtime support to littlefs files.
This commit adds support for modification time of files on littlefs v2
filesystems, using file attributes. For some background see issue #6114.
Features/properties of this implementation:
- Only supported on littlefs2 (not littlefs1).
- Uses littlefs2's general file attributes to store the timestamp.
- The timestamp is 64-bits and stores nanoseconds since 1970/1/1 (if the
range to the year 2554 is not enough then additional bits can be added to
this timestamp by adding another file attribute).
- mtime is enabled by default but can be disabled in the constructor, eg:
uos.mount(uos.VfsLfs2(bdev, mtime=False), '/flash')
- It's fully backwards compatible, existing littlefs2 filesystems will work
without reformatting and timestamps will be added transparently to
existing files (once they are opened for writing).
- Files without timestamps will open correctly, and stat will just return 0
for their timestamp.
- mtime can be disabled or enabled each mount time and timestamps will only
be updated if mtime is enabled (otherwise they will be untouched).
Signed-off-by: Damien George <damien@micropython.org>
Diffstat (limited to 'docs')
-rw-r--r-- | docs/library/uos.rst | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/docs/library/uos.rst b/docs/library/uos.rst index 051247b71..edc94556b 100644 --- a/docs/library/uos.rst +++ b/docs/library/uos.rst @@ -178,7 +178,7 @@ represented by VFS classes. Build a FAT filesystem on *block_dev*. -.. class:: VfsLfs1(block_dev) +.. class:: VfsLfs1(block_dev, readsize=32, progsize=32, lookahead=32) Create a filesystem object that uses the `littlefs v1 filesystem format`_. Storage of the littlefs filesystem is provided by *block_dev*, which must @@ -187,23 +187,31 @@ represented by VFS classes. See :ref:`filesystem` for more information. - .. staticmethod:: mkfs(block_dev) + .. staticmethod:: mkfs(block_dev, readsize=32, progsize=32, lookahead=32) Build a Lfs1 filesystem on *block_dev*. .. note:: There are reports of littlefs v1 failing in certain situations, for details see `littlefs issue 347`_. -.. class:: VfsLfs2(block_dev) +.. class:: VfsLfs2(block_dev, readsize=32, progsize=32, lookahead=32, mtime=True) Create a filesystem object that uses the `littlefs v2 filesystem format`_. Storage of the littlefs filesystem is provided by *block_dev*, which must support the :ref:`extended interface <block-device-interface>`. Objects created by this constructor can be mounted using :func:`mount`. + The *mtime* argument enables modification timestamps for files, stored using + littlefs attributes. This option can be disabled or enabled differently each + mount time and timestamps will only be added or updated if *mtime* is enabled, + otherwise the timestamps will remain untouched. Littlefs v2 filesystems without + timestamps will work without reformatting and timestamps will be added + transparently to existing files once they are opened for writing. When *mtime* + is enabled `uos.stat` on files without timestamps will return 0 for the timestamp. + See :ref:`filesystem` for more information. - .. staticmethod:: mkfs(block_dev) + .. staticmethod:: mkfs(block_dev, readsize=32, progsize=32, lookahead=32) Build a Lfs2 filesystem on *block_dev*. |