squashfs: update documentation to include description of xattr layout
Signed-off-by: Phillip Lougher <phillip@lougher.demon.co.uk>
This commit is contained in:
		
							parent
							
								
									5c80f5aa40
								
							
						
					
					
						commit
						899f453033
					
				| @ -38,7 +38,8 @@ Hard link support:		yes			no | ||||
| Real inode numbers:		yes			no | ||||
| 32-bit uids/gids:		yes			no | ||||
| File creation time:		yes			no | ||||
| Xattr and ACL support:		no			no | ||||
| Xattr support:			yes			no | ||||
| ACL support:			no			no | ||||
| 
 | ||||
| Squashfs compresses data, inodes and directories.  In addition, inode and | ||||
| directory data are highly compacted, and packed on byte boundaries.  Each | ||||
| @ -58,7 +59,7 @@ obtained from this site also. | ||||
| 3. SQUASHFS FILESYSTEM DESIGN | ||||
| ----------------------------- | ||||
| 
 | ||||
| A squashfs filesystem consists of seven parts, packed together on a byte | ||||
| A squashfs filesystem consists of a maximum of eight parts, packed together on a byte | ||||
| alignment: | ||||
| 
 | ||||
| 	 --------------- | ||||
| @ -80,6 +81,9 @@ alignment: | ||||
| 	|---------------| | ||||
| 	|    uid/gid	| | ||||
| 	|  lookup table	| | ||||
| 	|---------------| | ||||
| 	|     xattr     | | ||||
| 	|     table	| | ||||
| 	 --------------- | ||||
| 
 | ||||
| Compressed data blocks are written to the filesystem as files are read from | ||||
| @ -192,6 +196,26 @@ This table is stored compressed into metadata blocks.  A second index table is | ||||
| used to locate these.  This second index table for speed of access (and because | ||||
| it is small) is read at mount time and cached in memory. | ||||
| 
 | ||||
| 3.7 Xattr table | ||||
| --------------- | ||||
| 
 | ||||
| The xattr table contains extended attributes for each inode.  The xattrs | ||||
| for each inode are stored in a list, each list entry containing a type, | ||||
| name and value field.  The type field encodes the xattr prefix | ||||
| ("user.", "trusted." etc) and it also encodes how the name/value fields | ||||
| should be interpreted.  Currently the type indicates whether the value | ||||
| is stored inline (in which case the value field contains the xattr value), | ||||
| or if it is stored out of line (in which case the value field stores a | ||||
| reference to where the actual value is stored).  This allows large values | ||||
| to be stored out of line improving scanning and lookup performance and it | ||||
| also allows values to be de-duplicated, the value being stored once, and | ||||
| all other occurences holding an out of line reference to that value. | ||||
| 
 | ||||
| The xattr lists are packed into compressed 8K metadata blocks. | ||||
| To reduce overhead in inodes, rather than storing the on-disk | ||||
| location of the xattr list inside each inode, a 32-bit xattr id | ||||
| is stored.  This xattr id is mapped into the location of the xattr | ||||
| list using a second xattr id lookup table. | ||||
| 
 | ||||
| 4. TODOS AND OUTSTANDING ISSUES | ||||
| ------------------------------- | ||||
| @ -199,9 +223,7 @@ it is small) is read at mount time and cached in memory. | ||||
| 4.1 Todo list | ||||
| ------------- | ||||
| 
 | ||||
| Implement Xattr and ACL support.  The Squashfs 4.0 filesystem layout has hooks | ||||
| for these but the code has not been written.  Once the code has been written | ||||
| the existing layout should not require modification. | ||||
| Implement ACL support. | ||||
| 
 | ||||
| 4.2 Squashfs internal cache | ||||
| --------------------------- | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user