In memory of Ben “bushing” Byer, who passed away on Monday, February 8th, 2016.

Difference between revisions of "/dev/fs"

From WiiBrew
Jump to navigation Jump to search
 
(12 intermediate revisions by 2 users not shown)
Line 38: Line 38:
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x1
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x1
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Format
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Format
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 0
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | -
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | 0
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | -
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Deletes the entire FS, not like the [[System Menu]] button. Will probably brick the console. Do not use!
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Can only be called by UID 0.
 +
Deletes the entire FS, not like the [[System Menu]] button. Will probably brick the console. Do not use!
 
|- style="background-color: #ddd;"
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x2
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x2
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | GetStats
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | GetStats
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | ?
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | -
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | ?
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | 0x1C bytes: 7 u32's: cluster size, free clusters, used clusters, bad clusters, reserved clusters, free inodes, used inodes.
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |  
 
|- style="background-color: #ddd;"
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x3
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x3
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | CreateDir
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | CreateDir
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 0x4C bytes: 4 for owner ID, 2 for group ID, 0x40 filename, 1 for each owner/group/other permissions, 1 for attributes, 2 unused (?)
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 0x4A bytes: 4 for owner ID, 2 for group ID, 0x40 filename, 1 for each owner/group/other permissions, 1 for attributes.
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | 0
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | 0
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
Line 63: Line 64:
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x5
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x5
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | SetAttr
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | SetAttr
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | ?
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | See CreateDir input.
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | ?
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | -
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
 
|- style="background-color: #ddd;"
 
|- style="background-color: #ddd;"
Line 70: Line 71:
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | GetAttr
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | GetAttr
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 64 bytes for filename
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 64 bytes for filename
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | 78 bytes for file attributes
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | See CreateDir input.
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
 
|- style="background-color: #ddd;"
 
|- style="background-color: #ddd;"
Line 76: Line 77:
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Delete
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Delete
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 64 bytes for filename
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 64 bytes for filename
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | 0
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | -
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
 
|- style="background-color: #ddd;"
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x8
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x8
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Rename
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Rename
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | ?
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 64 bytes for source, 64 bytes for destination
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | 0
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | -
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
 
|- style="background-color: #ddd;"
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x9
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x9
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | CreateFile
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | CreateFile
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 0x4C bytes: 4 for owner ID, 2 for group ID, 0x40 filename, 1 for each owner/group/other permissions, 1 for attributes, 2 unused (?)
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | See CreateDir input. Owner ID and group ID will not be used.
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | 0
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | 0
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
Line 99: Line 100:
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0xb
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0xb
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | GetFileStats
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | GetFileStats
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | ?
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | -
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | ?
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | 8 bytes: 4 bytes for file size, 4 bytes for seek position
 +
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
 +
|- style="background-color: #ddd;"
 +
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0xc <ioctlv>
 +
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | GetUsage
 +
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 64 bytes for filename
 +
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | 4 bytes for used clusters, 4 bytes for used inodes
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
 
|- style="background-color: #ddd;"
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0xd
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0xd
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Shutdown
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Shutdown
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" |
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | -
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" |  
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | -
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Disables the NAND and refuses any further IPC requests with error -119.
 
+
|- style="background-color: #ddd;"
 +
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0xe <ioctlv>
 +
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ?????
 +
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | List of paths for the files to create. Last vector is an array of u32's with the file sizes.
 +
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | -
 +
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Creates and allocates a list of files in one go.
 +
Somehow not used by ES, despite probably being the one to benefit the most from such a function.
 
|- style="background-color: #ddd;"
 
|- style="background-color: #ddd;"
 
|}
 
|}
Line 139: Line 152:
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | EBUSY
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | EBUSY
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Resource busy (IOS error)
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Resource busy (IOS error)
 +
|- style="background-color: #ddd;"
 +
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -11
 +
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ?
 +
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | ECC error (corrected)
 
|- style="background-color: #ddd;"
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -12
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -12
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | EIO ?
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | EIO ?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | returned on ECC error (IOS error)
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | ECC error (uncorrectable)
 +
|- style="background-color: #ddd;"
 +
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -13
 +
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | EIO ?
 +
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | This block is bad
 
|- style="background-color: #ddd;"
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -22
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -22
Line 159: Line 180:
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | EIO?
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | EIO?
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | returned for "corrupted" NAND
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | returned for "corrupted" NAND
 +
|- style="background-color: #ddd;"
 +
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -104
 +
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ?
 +
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Filesystem not initialized(?)
 +
ES will call Format if GetStats returns this error code.
 
|- style="background-color: #ddd;"
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -105
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -105
Line 169: Line 195:
 
|- style="background-color: #ddd;"
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -107
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -107
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ENFILE
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ENOSPC?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Too many fds open
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Filesystem is full (no free inodes)
 
|- style="background-color: #ddd;"
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -108
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -108
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ?
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ENOSPC
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Memory is full
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Filesystem is full (no free clusters)
 
|- style="background-color: #ddd;"
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -109
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -109
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ENFILE
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ENFILE
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Too many fds open
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Too many fds open (16; includes /dev/fs)
 
|- style="background-color: #ddd;"
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -110
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -110
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ENAMETOOLONG
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ENAMETOOLONG?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | pathname is too long
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Max directory depth exceeded (8)
 
|- style="background-color: #ddd;"
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -111
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -111
 +
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ETXTBSY
 +
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Trying to delete a currently open file
 +
|- style="background-color: #ddd;"
 +
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -112
 +
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ?
 +
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | This block is bad (=-13)
 +
|- style="background-color: #ddd;"
 +
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -113
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ?
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | FD is already open
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | ECC error (corrected) (=-11)
 
|- style="background-color: #ddd;"
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -114
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -114
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | EIO?
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | EIO?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | returned on ECC error
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | ECC error (uncorrectable) (=-12)
 
|- style="background-color: #ddd;"
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -115
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -115
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ENOTEMPTY
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Directory not empty
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | File is not empty
 +
(?? both SetAttr and SetFileVerCtrl complain about this)
 
|- style="background-color: #ddd;"
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -116
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -116
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ENAMETOOLONG?
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | max directory depth exceeded
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Cluster has been tampered with{{check}}
 +
|- style="background-color: #ddd;"
 +
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -117
 +
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | -
 +
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | unknown error
 
|- style="background-color: #ddd;"
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -118
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -118
Line 205: Line 244:
 
|- style="background-color: #ddd;"
 
|- style="background-color: #ddd;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -119
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -119
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ?
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ESHUTDOWN
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | fatal error
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | The filesystem has been shut down
 
|- style="background-color: #ddd;"
 
|- style="background-color: #ddd;"
 
|}
 
|}
  
 
[[Category:IOS API documentation]]
 
[[Category:IOS API documentation]]

Latest revision as of 21:18, 3 April 2025

The filesystem can be directly accessed through "/dev/fs".

There are several IOS functions for FS like Delete/Create/List/Rename/.. .

Files can be directly opened with IOS_Open("/tmp/data.bin",1);

The root folder contains these subfolders, some of which have their own pages:

/tmp

/meta

/import

/shared1

/shared2

/title

/ticket

/sys

/wfs (4.3 only)

Ioctl listing

Request number Name input output notes
0x1 Format - - Can only be called by UID 0.

Deletes the entire FS, not like the System Menu button. Will probably brick the console. Do not use!

0x2 GetStats - 0x1C bytes: 7 u32's: cluster size, free clusters, used clusters, bad clusters, reserved clusters, free inodes, used inodes.
0x3 CreateDir 0x4A bytes: 4 for owner ID, 2 for group ID, 0x40 filename, 1 for each owner/group/other permissions, 1 for attributes. 0
0x4 ReadDir Directory name (0x40), Max file count (0x4) File names (0x13*maxFileCount), File count (0x4)
0x5 SetAttr See CreateDir input. -
0x6 GetAttr 64 bytes for filename See CreateDir input.
0x7 Delete 64 bytes for filename -
0x8 Rename 64 bytes for source, 64 bytes for destination -
0x9 CreateFile See CreateDir input. Owner ID and group ID will not be used. 0
0xa SetFileVerCtrl ? ?
0xb GetFileStats - 8 bytes: 4 bytes for file size, 4 bytes for seek position
0xc <ioctlv> GetUsage 64 bytes for filename 4 bytes for used clusters, 4 bytes for used inodes
0xd Shutdown - - Disables the NAND and refuses any further IPC requests with error -119.
0xe <ioctlv> ????? List of paths for the files to create. Last vector is an array of u32's with the file sizes. - Creates and allocates a list of files in one go.

Somehow not used by ES, despite probably being the one to benefit the most from such a function.

/dev/fs error codes

Error code POSIX equivalent notes
-1 EACCES Permission denied (IOS error)
-2 EEXIST File exists (IOS error)
-4 EINVAL Invalid argument (IOS error)
-6 ENOENT File not found (IOS error)
-8 EBUSY Resource busy (IOS error)
-11 ? ECC error (corrected)
-12 EIO ? ECC error (uncorrectable)
-13 EIO ? This block is bad
-22 ENOMEM Alloc failed during request (IOS error)
-101 EINVAL Invalid argument (again? Returned e.g. by /dev/fs IOCtls)
-102 EACCESS Permission denied
-103 EIO? returned for "corrupted" NAND
-104 ? Filesystem not initialized(?)

ES will call Format if GetStats returns this error code.

-105 EEXIST File exists
-106 ENOENT File not found
-107 ENOSPC? Filesystem is full (no free inodes)
-108 ENOSPC Filesystem is full (no free clusters)
-109 ENFILE Too many fds open (16; includes /dev/fs)
-110 ENAMETOOLONG? Max directory depth exceeded (8)
-111 ETXTBSY Trying to delete a currently open file
-112 ? This block is bad (=-13)
-113 ? ECC error (corrected) (=-11)
-114 EIO? ECC error (uncorrectable) (=-12)
-115 ? File is not empty

(?? both SetAttr and SetFileVerCtrl complain about this)

-116 ? Cluster has been tampered with[check]
-117 - unknown error
-118 EBUSY Resource busy
-119 ESHUTDOWN The filesystem has been shut down