mirror of
https://github.com/apache/nuttx.git
synced 2026-09-25 09:15:09 +08:00
fs/userfs: There are some deadlock issues that make the UserFS un-usable at the current time. Added to the TODO list; also feature is now marked EXPERIMENTAL.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
NuttX TODO List (Last updated November 1, 2017)
|
||||
NuttX TODO List (Last updated November 2, 2017)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
This file summarizes known NuttX bugs, limitations, inconsistencies with
|
||||
@@ -23,7 +23,7 @@ nuttx/:
|
||||
(4) USB (drivers/usbdev, drivers/usbhost)
|
||||
(0) Other drivers (drivers/)
|
||||
(12) Libraries (libc/, libm/)
|
||||
(10) File system/Generic drivers (fs/, drivers/)
|
||||
(11) File system/Generic drivers (fs/, drivers/)
|
||||
(9) Graphics Subsystem (graphics/)
|
||||
(3) Build system / Toolchains
|
||||
(3) Linux/Cywgin simulation (arch/sim)
|
||||
@@ -1963,6 +1963,28 @@ o File system / Generic drivers (fs/, drivers/)
|
||||
ignored by readder() logic. This the file does not
|
||||
appear in the 'ls'.
|
||||
|
||||
Title: DEADLOCKS WITH USERFS
|
||||
Description: UserFS support has been added to NuttX. However, the current
|
||||
version is not very usable due to problems with deadlocks. These
|
||||
deadlocks occur because: (1) logic on the NSH thread locks the
|
||||
inode tree to prevent modification while travering file system
|
||||
entities, but (2) Logic in the UserFS daemon also needs to lock
|
||||
the inode tree. This leads to the deadlock because the logic on
|
||||
the NSH thread cannot unlock the inode tree until the traversal
|
||||
completes but the logic on the UserFS daemon thread is blocked
|
||||
waiting to lock the inodes.
|
||||
|
||||
This can be seen with the NSH mount command which locks the
|
||||
inode tree while traversing all of the mountpoints and also
|
||||
with a simple directory listing with the 'ls' command which
|
||||
locks the inode tree while the directory entries are enumerate.
|
||||
|
||||
Support UserFS is currently marked EXPERIMENTAL to prevent
|
||||
accidentlly enabling the feature.
|
||||
Status: Open
|
||||
Priority: Since this is a new feature, the priority must be low (unless,
|
||||
of course, someone is in dire need of the featurea).
|
||||
|
||||
o Graphics Subsystem (graphics/)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ CONFIG_DISABLE_POLL=y
|
||||
CONFIG_EXAMPLES_NSH=y
|
||||
CONFIG_EXAMPLES_USERFS_STACKSIZE=8192
|
||||
CONFIG_EXAMPLES_USERFS=y
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_FAT_LCNAMES=y
|
||||
CONFIG_FAT_LFN=y
|
||||
CONFIG_FS_FAT=y
|
||||
|
||||
+1
-1
@@ -6,7 +6,7 @@
|
||||
config FS_USERFS
|
||||
bool "User file system"
|
||||
default n
|
||||
depends on NET_LOCAL
|
||||
depends on NET_LOCAL && EXPERIMENTAL
|
||||
---help---
|
||||
Enable support for user file system. See include/nuttx/fs/userfs.h
|
||||
|
||||
|
||||
Reference in New Issue
Block a user