diff options
Diffstat (limited to 'Documentation/filesystems')
-rw-r--r-- | Documentation/filesystems/Locking | 34 | ||||
-rw-r--r-- | Documentation/filesystems/befs.txt | 2 | ||||
-rw-r--r-- | Documentation/filesystems/debugfs.txt | 4 | ||||
-rw-r--r-- | Documentation/filesystems/ext3.txt | 13 | ||||
-rw-r--r-- | Documentation/filesystems/ext4.txt | 23 | ||||
-rw-r--r-- | Documentation/filesystems/nfs/Exporting | 9 | ||||
-rw-r--r-- | Documentation/filesystems/nfs/nfs41-server.txt | 33 | ||||
-rw-r--r-- | Documentation/filesystems/nfs/nfsroot.txt | 2 | ||||
-rw-r--r-- | Documentation/filesystems/porting | 28 | ||||
-rw-r--r-- | Documentation/filesystems/squashfs.txt | 4 | ||||
-rw-r--r-- | Documentation/filesystems/ubifs.txt | 28 | ||||
-rw-r--r-- | Documentation/filesystems/vfs.txt | 30 |
12 files changed, 101 insertions, 109 deletions
diff --git a/Documentation/filesystems/Locking b/Documentation/filesystems/Locking index 57d827d6071..653380793a6 100644 --- a/Documentation/filesystems/Locking +++ b/Documentation/filesystems/Locking | |||
@@ -52,7 +52,7 @@ ata *); | |||
52 | void (*put_link) (struct dentry *, struct nameidata *, void *); | 52 | void (*put_link) (struct dentry *, struct nameidata *, void *); |
53 | void (*truncate) (struct inode *); | 53 | void (*truncate) (struct inode *); |
54 | int (*permission) (struct inode *, int, unsigned int); | 54 | int (*permission) (struct inode *, int, unsigned int); |
55 | int (*check_acl)(struct inode *, int, unsigned int); | 55 | int (*get_acl)(struct inode *, int); |
56 | int (*setattr) (struct dentry *, struct iattr *); | 56 | int (*setattr) (struct dentry *, struct iattr *); |
57 | int (*getattr) (struct vfsmount *, struct dentry *, struct kstat *); | 57 | int (*getattr) (struct vfsmount *, struct dentry *, struct kstat *); |
58 | int (*setxattr) (struct dentry *, const char *,const void *,size_t,int); | 58 | int (*setxattr) (struct dentry *, const char *,const void *,size_t,int); |
@@ -80,7 +80,7 @@ put_link: no | |||
80 | truncate: yes (see below) | 80 | truncate: yes (see below) |
81 | setattr: yes | 81 | setattr: yes |
82 | permission: no (may not block if called in rcu-walk mode) | 82 | permission: no (may not block if called in rcu-walk mode) |
83 | check_acl: no | 83 | get_acl: no |
84 | getattr: no | 84 | getattr: no |
85 | setxattr: yes | 85 | setxattr: yes |
86 | getxattr: no | 86 | getxattr: no |
@@ -338,21 +338,21 @@ fl_release_private: maybe no | |||
338 | 338 | ||
339 | ----------------------- lock_manager_operations --------------------------- | 339 | ----------------------- lock_manager_operations --------------------------- |
340 | prototypes: | 340 | prototypes: |
341 | int (*fl_compare_owner)(struct file_lock *, struct file_lock *); | 341 | int (*lm_compare_owner)(struct file_lock *, struct file_lock *); |
342 | void (*fl_notify)(struct file_lock *); /* unblock callback */ | 342 | void (*lm_notify)(struct file_lock *); /* unblock callback */ |
343 | int (*fl_grant)(struct file_lock *, struct file_lock *, int); | 343 | int (*lm_grant)(struct file_lock *, struct file_lock *, int); |
344 | void (*fl_release_private)(struct file_lock *); | 344 | void (*lm_release_private)(struct file_lock *); |
345 | void (*fl_break)(struct file_lock *); /* break_lease callback */ | 345 | void (*lm_break)(struct file_lock *); /* break_lease callback */ |
346 | int (*fl_change)(struct file_lock **, int); | 346 | int (*lm_change)(struct file_lock **, int); |
347 | 347 | ||
348 | locking rules: | 348 | locking rules: |
349 | file_lock_lock may block | 349 | file_lock_lock may block |
350 | fl_compare_owner: yes no | 350 | lm_compare_owner: yes no |
351 | fl_notify: yes no | 351 | lm_notify: yes no |
352 | fl_grant: no no | 352 | lm_grant: no no |
353 | fl_release_private: maybe no | 353 | lm_release_private: maybe no |
354 | fl_break: yes no | 354 | lm_break: yes no |
355 | fl_change yes no | 355 | lm_change yes no |
356 | 356 | ||
357 | --------------------------- buffer_head ----------------------------------- | 357 | --------------------------- buffer_head ----------------------------------- |
358 | prototypes: | 358 | prototypes: |
@@ -412,7 +412,7 @@ prototypes: | |||
412 | int (*open) (struct inode *, struct file *); | 412 | int (*open) (struct inode *, struct file *); |
413 | int (*flush) (struct file *); | 413 | int (*flush) (struct file *); |
414 | int (*release) (struct inode *, struct file *); | 414 | int (*release) (struct inode *, struct file *); |
415 | int (*fsync) (struct file *, int datasync); | 415 | int (*fsync) (struct file *, loff_t start, loff_t end, int datasync); |
416 | int (*aio_fsync) (struct kiocb *, int datasync); | 416 | int (*aio_fsync) (struct kiocb *, int datasync); |
417 | int (*fasync) (int, struct file *, int); | 417 | int (*fasync) (int, struct file *, int); |
418 | int (*lock) (struct file *, int, struct file_lock *); | 418 | int (*lock) (struct file *, int, struct file_lock *); |
@@ -438,9 +438,7 @@ prototypes: | |||
438 | 438 | ||
439 | locking rules: | 439 | locking rules: |
440 | All may block except for ->setlease. | 440 | All may block except for ->setlease. |
441 | No VFS locks held on entry except for ->fsync and ->setlease. | 441 | No VFS locks held on entry except for ->setlease. |
442 | |||
443 | ->fsync() has i_mutex on inode. | ||
444 | 442 | ||
445 | ->setlease has the file_list_lock held and must not sleep. | 443 | ->setlease has the file_list_lock held and must not sleep. |
446 | 444 | ||
diff --git a/Documentation/filesystems/befs.txt b/Documentation/filesystems/befs.txt index 6e49c363938..da45e6c842b 100644 --- a/Documentation/filesystems/befs.txt +++ b/Documentation/filesystems/befs.txt | |||
@@ -27,7 +27,7 @@ His original code can still be found at: | |||
27 | Does anyone know of a more current email address for Makoto? He doesn't | 27 | Does anyone know of a more current email address for Makoto? He doesn't |
28 | respond to the address given above... | 28 | respond to the address given above... |
29 | 29 | ||
30 | Current maintainer: Sergey S. Kostyliov <rathamahata@php4.ru> | 30 | This filesystem doesn't have a maintainer. |
31 | 31 | ||
32 | WHAT IS THIS DRIVER? | 32 | WHAT IS THIS DRIVER? |
33 | ================== | 33 | ================== |
diff --git a/Documentation/filesystems/debugfs.txt b/Documentation/filesystems/debugfs.txt index ed52af60c2d..742cc06e138 100644 --- a/Documentation/filesystems/debugfs.txt +++ b/Documentation/filesystems/debugfs.txt | |||
@@ -73,8 +73,8 @@ the following functions can be used instead: | |||
73 | struct dentry *parent, u16 *value); | 73 | struct dentry *parent, u16 *value); |
74 | struct dentry *debugfs_create_x32(const char *name, mode_t mode, | 74 | struct dentry *debugfs_create_x32(const char *name, mode_t mode, |
75 | struct dentry *parent, u32 *value); | 75 | struct dentry *parent, u32 *value); |
76 | 76 | struct dentry *debugfs_create_x64(const char *name, mode_t mode, | |
77 | Note that there is no debugfs_create_x64(). | 77 | struct dentry *parent, u64 *value); |
78 | 78 | ||
79 | These functions are useful as long as the developer knows the size of the | 79 | These functions are useful as long as the developer knows the size of the |
80 | value to be exported. Some types can have different widths on different | 80 | value to be exported. Some types can have different widths on different |
diff --git a/Documentation/filesystems/ext3.txt b/Documentation/filesystems/ext3.txt index 272f80d5f96..22f3a0eda1d 100644 --- a/Documentation/filesystems/ext3.txt +++ b/Documentation/filesystems/ext3.txt | |||
@@ -147,15 +147,6 @@ grpjquota=<file> during journal replay. They replace the above | |||
147 | package for more details | 147 | package for more details |
148 | (http://sourceforge.net/projects/linuxquota). | 148 | (http://sourceforge.net/projects/linuxquota). |
149 | 149 | ||
150 | bh (*) ext3 associates buffer heads to data pages to | ||
151 | nobh (a) cache disk block mapping information | ||
152 | (b) link pages into transaction to provide | ||
153 | ordering guarantees. | ||
154 | "bh" option forces use of buffer heads. | ||
155 | "nobh" option tries to avoid associating buffer | ||
156 | heads (supported only for "writeback" mode). | ||
157 | |||
158 | |||
159 | Specification | 150 | Specification |
160 | ============= | 151 | ============= |
161 | Ext3 shares all disk implementation with the ext2 filesystem, and adds | 152 | Ext3 shares all disk implementation with the ext2 filesystem, and adds |
@@ -227,5 +218,5 @@ kernel source: <file:fs/ext3/> | |||
227 | programs: http://e2fsprogs.sourceforge.net/ | 218 | programs: http://e2fsprogs.sourceforge.net/ |
228 | http://ext2resize.sourceforge.net | 219 | http://ext2resize.sourceforge.net |
229 | 220 | ||
230 | useful links: http://www.ibm.com/developerworks/library/l-fs7.html | 221 | useful links: http://www.ibm.com/developerworks/library/l-fs7/index.html |
231 | http://www.ibm.com/developerworks/library/l-fs8.html | 222 | http://www.ibm.com/developerworks/library/l-fs8/index.html |
diff --git a/Documentation/filesystems/ext4.txt b/Documentation/filesystems/ext4.txt index 3ae9bc94352..232a575a0c4 100644 --- a/Documentation/filesystems/ext4.txt +++ b/Documentation/filesystems/ext4.txt | |||
@@ -68,12 +68,12 @@ Note: More extensive information for getting started with ext4 can be | |||
68 | '-o barriers=[0|1]' mount option for both ext3 and ext4 filesystems | 68 | '-o barriers=[0|1]' mount option for both ext3 and ext4 filesystems |
69 | for a fair comparison. When tuning ext3 for best benchmark numbers, | 69 | for a fair comparison. When tuning ext3 for best benchmark numbers, |
70 | it is often worthwhile to try changing the data journaling mode; '-o | 70 | it is often worthwhile to try changing the data journaling mode; '-o |
71 | data=writeback,nobh' can be faster for some workloads. (Note | 71 | data=writeback' can be faster for some workloads. (Note however that |
72 | however that running mounted with data=writeback can potentially | 72 | running mounted with data=writeback can potentially leave stale data |
73 | leave stale data exposed in recently written files in case of an | 73 | exposed in recently written files in case of an unclean shutdown, |
74 | unclean shutdown, which could be a security exposure in some | 74 | which could be a security exposure in some situations.) Configuring |
75 | situations.) Configuring the filesystem with a large journal can | 75 | the filesystem with a large journal can also be helpful for |
76 | also be helpful for metadata-intensive workloads. | 76 | metadata-intensive workloads. |
77 | 77 | ||
78 | 2. Features | 78 | 2. Features |
79 | =========== | 79 | =========== |
@@ -272,14 +272,6 @@ grpjquota=<file> during journal replay. They replace the above | |||
272 | package for more details | 272 | package for more details |
273 | (http://sourceforge.net/projects/linuxquota). | 273 | (http://sourceforge.net/projects/linuxquota). |
274 | 274 | ||
275 | bh (*) ext4 associates buffer heads to data pages to | ||
276 | nobh (a) cache disk block mapping information | ||
277 | (b) link pages into transaction to provide | ||
278 | ordering guarantees. | ||
279 | "bh" option forces use of buffer heads. | ||
280 | "nobh" option tries to avoid associating buffer | ||
281 | heads (supported only for "writeback" mode). | ||
282 | |||
283 | stripe=n Number of filesystem blocks that mballoc will try | 275 | stripe=n Number of filesystem blocks that mballoc will try |
284 | to use for allocation size and alignment. For RAID5/6 | 276 | to use for allocation size and alignment. For RAID5/6 |
285 | systems this should be the number of data | 277 | systems this should be the number of data |
@@ -393,8 +385,7 @@ dioread_nolock locking. If the dioread_nolock option is specified | |||
393 | write and convert the extent to initialized after IO | 385 | write and convert the extent to initialized after IO |
394 | completes. This approach allows ext4 code to avoid | 386 | completes. This approach allows ext4 code to avoid |
395 | using inode mutex, which improves scalability on high | 387 | using inode mutex, which improves scalability on high |
396 | speed storages. However this does not work with nobh | 388 | speed storages. However this does not work with |
397 | option and the mount will fail. Nor does it work with | ||
398 | data journaling and dioread_nolock option will be | 389 | data journaling and dioread_nolock option will be |
399 | ignored with kernel warning. Note that dioread_nolock | 390 | ignored with kernel warning. Note that dioread_nolock |
400 | code path is only used for extent-based files. | 391 | code path is only used for extent-based files. |
diff --git a/Documentation/filesystems/nfs/Exporting b/Documentation/filesystems/nfs/Exporting index 87019d2b598..09994c24728 100644 --- a/Documentation/filesystems/nfs/Exporting +++ b/Documentation/filesystems/nfs/Exporting | |||
@@ -92,7 +92,14 @@ For a filesystem to be exportable it must: | |||
92 | 1/ provide the filehandle fragment routines described below. | 92 | 1/ provide the filehandle fragment routines described below. |
93 | 2/ make sure that d_splice_alias is used rather than d_add | 93 | 2/ make sure that d_splice_alias is used rather than d_add |
94 | when ->lookup finds an inode for a given parent and name. | 94 | when ->lookup finds an inode for a given parent and name. |
95 | Typically the ->lookup routine will end with a: | 95 | |
96 | If inode is NULL, d_splice_alias(inode, dentry) is eqivalent to | ||
97 | |||
98 | d_add(dentry, inode), NULL | ||
99 | |||
100 | Similarly, d_splice_alias(ERR_PTR(err), dentry) = ERR_PTR(err) | ||
101 | |||
102 | Typically the ->lookup routine will simply end with a: | ||
96 | 103 | ||
97 | return d_splice_alias(inode, dentry); | 104 | return d_splice_alias(inode, dentry); |
98 | } | 105 | } |
diff --git a/Documentation/filesystems/nfs/nfs41-server.txt b/Documentation/filesystems/nfs/nfs41-server.txt index 04884914a1c..092fad92a3f 100644 --- a/Documentation/filesystems/nfs/nfs41-server.txt +++ b/Documentation/filesystems/nfs/nfs41-server.txt | |||
@@ -39,27 +39,17 @@ interoperability problems with future clients. Known issues: | |||
39 | from a linux client are possible, but we aren't really | 39 | from a linux client are possible, but we aren't really |
40 | conformant with the spec (for example, we don't use kerberos | 40 | conformant with the spec (for example, we don't use kerberos |
41 | on the backchannel correctly). | 41 | on the backchannel correctly). |
42 | - no trunking support: no clients currently take advantage of | ||
43 | trunking, but this is a mandatory feature, and its use is | ||
44 | recommended to clients in a number of places. (E.g. to ensure | ||
45 | timely renewal in case an existing connection's retry timeouts | ||
46 | have gotten too long; see section 8.3 of the RFC.) | ||
47 | Therefore, lack of this feature may cause future clients to | ||
48 | fail. | ||
49 | - Incomplete backchannel support: incomplete backchannel gss | 42 | - Incomplete backchannel support: incomplete backchannel gss |
50 | support and no support for BACKCHANNEL_CTL mean that | 43 | support and no support for BACKCHANNEL_CTL mean that |
51 | callbacks (hence delegations and layouts) may not be | 44 | callbacks (hence delegations and layouts) may not be |
52 | available and clients confused by the incomplete | 45 | available and clients confused by the incomplete |
53 | implementation may fail. | 46 | implementation may fail. |
54 | - Server reboot recovery is unsupported; if the server reboots, | ||
55 | clients may fail. | ||
56 | - We do not support SSV, which provides security for shared | 47 | - We do not support SSV, which provides security for shared |
57 | client-server state (thus preventing unauthorized tampering | 48 | client-server state (thus preventing unauthorized tampering |
58 | with locks and opens, for example). It is mandatory for | 49 | with locks and opens, for example). It is mandatory for |
59 | servers to support this, though no clients use it yet. | 50 | servers to support this, though no clients use it yet. |
60 | - Mandatory operations which we do not support, such as | 51 | - Mandatory operations which we do not support, such as |
61 | DESTROY_CLIENTID, FREE_STATEID, SECINFO_NO_NAME, and | 52 | DESTROY_CLIENTID, are not currently used by clients, but will be |
62 | TEST_STATEID, are not currently used by clients, but will be | ||
63 | (and the spec recommends their uses in common cases), and | 53 | (and the spec recommends their uses in common cases), and |
64 | clients should not be expected to know how to recover from the | 54 | clients should not be expected to know how to recover from the |
65 | case where they are not supported. This will eventually cause | 55 | case where they are not supported. This will eventually cause |
@@ -69,8 +59,9 @@ In addition, some limitations are inherited from the current NFSv4 | |||
69 | implementation: | 59 | implementation: |
70 | 60 | ||
71 | - Incomplete delegation enforcement: if a file is renamed or | 61 | - Incomplete delegation enforcement: if a file is renamed or |
72 | unlinked, a client holding a delegation may continue to | 62 | unlinked by a local process, a client holding a delegation may |
73 | indefinitely allow opens of the file under the old name. | 63 | continue to indefinitely allow opens of the file under the old |
64 | name. | ||
74 | 65 | ||
75 | The table below, taken from the NFSv4.1 document, lists | 66 | The table below, taken from the NFSv4.1 document, lists |
76 | the operations that are mandatory to implement (REQ), optional | 67 | the operations that are mandatory to implement (REQ), optional |
@@ -99,7 +90,7 @@ Operations | |||
99 | +----------------------+------------+--------------+----------------+ | 90 | +----------------------+------------+--------------+----------------+ |
100 | | ACCESS | REQ | | Section 18.1 | | 91 | | ACCESS | REQ | | Section 18.1 | |
101 | NS | BACKCHANNEL_CTL | REQ | | Section 18.33 | | 92 | NS | BACKCHANNEL_CTL | REQ | | Section 18.33 | |
102 | NS | BIND_CONN_TO_SESSION | REQ | | Section 18.34 | | 93 | I | BIND_CONN_TO_SESSION | REQ | | Section 18.34 | |
103 | | CLOSE | REQ | | Section 18.2 | | 94 | | CLOSE | REQ | | Section 18.2 | |
104 | | COMMIT | REQ | | Section 18.3 | | 95 | | COMMIT | REQ | | Section 18.3 | |
105 | | CREATE | REQ | | Section 18.4 | | 96 | | CREATE | REQ | | Section 18.4 | |
@@ -111,7 +102,7 @@ NS*| DELEGPURGE | OPT | FDELG (REQ) | Section 18.5 | | |||
111 | NS | DESTROY_CLIENTID | REQ | | Section 18.50 | | 102 | NS | DESTROY_CLIENTID | REQ | | Section 18.50 | |
112 | I | DESTROY_SESSION | REQ | | Section 18.37 | | 103 | I | DESTROY_SESSION | REQ | | Section 18.37 | |
113 | I | EXCHANGE_ID | REQ | | Section 18.35 | | 104 | I | EXCHANGE_ID | REQ | | Section 18.35 | |
114 | NS | FREE_STATEID | REQ | | Section 18.38 | | 105 | I | FREE_STATEID | REQ | | Section 18.38 | |
115 | | GETATTR | REQ | | Section 18.7 | | 106 | | GETATTR | REQ | | Section 18.7 | |
116 | P | GETDEVICEINFO | OPT | pNFS (REQ) | Section 18.40 | | 107 | P | GETDEVICEINFO | OPT | pNFS (REQ) | Section 18.40 | |
117 | P | GETDEVICELIST | OPT | pNFS (OPT) | Section 18.41 | | 108 | P | GETDEVICELIST | OPT | pNFS (OPT) | Section 18.41 | |
@@ -145,14 +136,14 @@ NS*| OPENATTR | OPT | | Section 18.17 | | |||
145 | | RESTOREFH | REQ | | Section 18.27 | | 136 | | RESTOREFH | REQ | | Section 18.27 | |
146 | | SAVEFH | REQ | | Section 18.28 | | 137 | | SAVEFH | REQ | | Section 18.28 | |
147 | | SECINFO | REQ | | Section 18.29 | | 138 | | SECINFO | REQ | | Section 18.29 | |
148 | NS | SECINFO_NO_NAME | REC | pNFS files | Section 18.45, | | 139 | I | SECINFO_NO_NAME | REC | pNFS files | Section 18.45, | |
149 | | | | layout (REQ) | Section 13.12 | | 140 | | | | layout (REQ) | Section 13.12 | |
150 | I | SEQUENCE | REQ | | Section 18.46 | | 141 | I | SEQUENCE | REQ | | Section 18.46 | |
151 | | SETATTR | REQ | | Section 18.30 | | 142 | | SETATTR | REQ | | Section 18.30 | |
152 | | SETCLIENTID | MNI | | N/A | | 143 | | SETCLIENTID | MNI | | N/A | |
153 | | SETCLIENTID_CONFIRM | MNI | | N/A | | 144 | | SETCLIENTID_CONFIRM | MNI | | N/A | |
154 | NS | SET_SSV | REQ | | Section 18.47 | | 145 | NS | SET_SSV | REQ | | Section 18.47 | |
155 | NS | TEST_STATEID | REQ | | Section 18.48 | | 146 | I | TEST_STATEID | REQ | | Section 18.48 | |
156 | | VERIFY | REQ | | Section 18.31 | | 147 | | VERIFY | REQ | | Section 18.31 | |
157 | NS*| WANT_DELEGATION | OPT | FDELG (OPT) | Section 18.49 | | 148 | NS*| WANT_DELEGATION | OPT | FDELG (OPT) | Section 18.49 | |
158 | | WRITE | REQ | | Section 18.32 | | 149 | | WRITE | REQ | | Section 18.32 | |
@@ -206,12 +197,6 @@ CREATE_SESSION: | |||
206 | SEQUENCE: | 197 | SEQUENCE: |
207 | * no support for dynamic slot table renegotiation (optional) | 198 | * no support for dynamic slot table renegotiation (optional) |
208 | 199 | ||
209 | nfsv4.1 COMPOUND rules: | ||
210 | The following cases aren't supported yet: | ||
211 | * Enforcing of NFS4ERR_NOT_ONLY_OP for: BIND_CONN_TO_SESSION, CREATE_SESSION, | ||
212 | DESTROY_CLIENTID, DESTROY_SESSION, EXCHANGE_ID. | ||
213 | * DESTROY_SESSION MUST be the final operation in the COMPOUND request. | ||
214 | |||
215 | Nonstandard compound limitations: | 200 | Nonstandard compound limitations: |
216 | * No support for a sessions fore channel RPC compound that requires both a | 201 | * No support for a sessions fore channel RPC compound that requires both a |
217 | ca_maxrequestsize request and a ca_maxresponsesize reply, so we may | 202 | ca_maxrequestsize request and a ca_maxresponsesize reply, so we may |
@@ -219,3 +204,5 @@ Nonstandard compound limitations: | |||
219 | negotiation. | 204 | negotiation. |
220 | * No more than one IO operation (read, write, readdir) allowed per | 205 | * No more than one IO operation (read, write, readdir) allowed per |
221 | compound. | 206 | compound. |
207 | |||
208 | See also http://wiki.linux-nfs.org/wiki/index.php/Server_4.0_and_4.1_issues. | ||
diff --git a/Documentation/filesystems/nfs/nfsroot.txt b/Documentation/filesystems/nfs/nfsroot.txt index 90c71c6f0d0..ffdd9d866ad 100644 --- a/Documentation/filesystems/nfs/nfsroot.txt +++ b/Documentation/filesystems/nfs/nfsroot.txt | |||
@@ -226,7 +226,7 @@ They depend on various facilities being available: | |||
226 | cdrecord. | 226 | cdrecord. |
227 | 227 | ||
228 | e.g. | 228 | e.g. |
229 | cdrecord dev=ATAPI:1,0,0 arch/i386/boot/image.iso | 229 | cdrecord dev=ATAPI:1,0,0 arch/x86/boot/image.iso |
230 | 230 | ||
231 | For more information on isolinux, including how to create bootdisks | 231 | For more information on isolinux, including how to create bootdisks |
232 | for prebuilt kernels, see http://syslinux.zytor.com/ | 232 | for prebuilt kernels, see http://syslinux.zytor.com/ |
diff --git a/Documentation/filesystems/porting b/Documentation/filesystems/porting index 6e29954851a..b4a3d765ff9 100644 --- a/Documentation/filesystems/porting +++ b/Documentation/filesystems/porting | |||
@@ -400,10 +400,32 @@ a file off. | |||
400 | 400 | ||
401 | -- | 401 | -- |
402 | [mandatory] | 402 | [mandatory] |
403 | |||
404 | -- | ||
405 | [mandatory] | ||
406 | ->get_sb() is gone. Switch to use of ->mount(). Typically it's just | 403 | ->get_sb() is gone. Switch to use of ->mount(). Typically it's just |
407 | a matter of switching from calling get_sb_... to mount_... and changing the | 404 | a matter of switching from calling get_sb_... to mount_... and changing the |
408 | function type. If you were doing it manually, just switch from setting ->mnt_root | 405 | function type. If you were doing it manually, just switch from setting ->mnt_root |
409 | to some pointer to returning that pointer. On errors return ERR_PTR(...). | 406 | to some pointer to returning that pointer. On errors return ERR_PTR(...). |
407 | |||
408 | -- | ||
409 | [mandatory] | ||
410 | ->permission() and generic_permission()have lost flags | ||
411 | argument; instead of passing IPERM_FLAG_RCU we add MAY_NOT_BLOCK into mask. | ||
412 | generic_permission() has also lost the check_acl argument; ACL checking | ||
413 | has been taken to VFS and filesystems need to provide a non-NULL ->i_op->get_acl | ||
414 | to read an ACL from disk. | ||
415 | |||
416 | -- | ||
417 | [mandatory] | ||
418 | If you implement your own ->llseek() you must handle SEEK_HOLE and | ||
419 | SEEK_DATA. You can hanle this by returning -EINVAL, but it would be nicer to | ||
420 | support it in some way. The generic handler assumes that the entire file is | ||
421 | data and there is a virtual hole at the end of the file. So if the provided | ||
422 | offset is less than i_size and SEEK_DATA is specified, return the same offset. | ||
423 | If the above is true for the offset and you are given SEEK_HOLE, return the end | ||
424 | of the file. If the offset is i_size or greater return -ENXIO in either case. | ||
425 | |||
426 | [mandatory] | ||
427 | If you have your own ->fsync() you must make sure to call | ||
428 | filemap_write_and_wait_range() so that all dirty pages are synced out properly. | ||
429 | You must also keep in mind that ->fsync() is not called with i_mutex held | ||
430 | anymore, so if you require i_mutex locking you must make sure to take it and | ||
431 | release it yourself. | ||
diff --git a/Documentation/filesystems/squashfs.txt b/Documentation/filesystems/squashfs.txt index d4d41465a0b..7db3ebda5a4 100644 --- a/Documentation/filesystems/squashfs.txt +++ b/Documentation/filesystems/squashfs.txt | |||
@@ -2,7 +2,7 @@ SQUASHFS 4.0 FILESYSTEM | |||
2 | ======================= | 2 | ======================= |
3 | 3 | ||
4 | Squashfs is a compressed read-only filesystem for Linux. | 4 | Squashfs is a compressed read-only filesystem for Linux. |
5 | It uses zlib/lzo compression to compress files, inodes and directories. | 5 | It uses zlib/lzo/xz compression to compress files, inodes and directories. |
6 | Inodes in the system are very small and all blocks are packed to minimise | 6 | Inodes in the system are very small and all blocks are packed to minimise |
7 | data overhead. Block sizes greater than 4K are supported up to a maximum | 7 | data overhead. Block sizes greater than 4K are supported up to a maximum |
8 | of 1Mbytes (default block size 128K). | 8 | of 1Mbytes (default block size 128K). |
@@ -55,6 +55,8 @@ create populated squashfs filesystems. This and other squashfs utilities | |||
55 | can be obtained from http://www.squashfs.org. Usage instructions can be | 55 | can be obtained from http://www.squashfs.org. Usage instructions can be |
56 | obtained from this site also. | 56 | obtained from this site also. |
57 | 57 | ||
58 | The squashfs-tools development tree is now located on kernel.org | ||
59 | git://git.kernel.org/pub/scm/fs/squashfs/squashfs-tools.git | ||
58 | 60 | ||
59 | 3. SQUASHFS FILESYSTEM DESIGN | 61 | 3. SQUASHFS FILESYSTEM DESIGN |
60 | ----------------------------- | 62 | ----------------------------- |
diff --git a/Documentation/filesystems/ubifs.txt b/Documentation/filesystems/ubifs.txt index 8e4fab639d9..a0a61d2f389 100644 --- a/Documentation/filesystems/ubifs.txt +++ b/Documentation/filesystems/ubifs.txt | |||
@@ -111,34 +111,6 @@ The following is an example of the kernel boot arguments to attach mtd0 | |||
111 | to UBI and mount volume "rootfs": | 111 | to UBI and mount volume "rootfs": |
112 | ubi.mtd=0 root=ubi0:rootfs rootfstype=ubifs | 112 | ubi.mtd=0 root=ubi0:rootfs rootfstype=ubifs |
113 | 113 | ||
114 | |||
115 | Module Parameters for Debugging | ||
116 | =============================== | ||
117 | |||
118 | When UBIFS has been compiled with debugging enabled, there are 2 module | ||
119 | parameters that are available to control aspects of testing and debugging. | ||
120 | |||
121 | debug_chks Selects extra checks that UBIFS can do while running: | ||
122 | |||
123 | Check Flag value | ||
124 | |||
125 | General checks 1 | ||
126 | Check Tree Node Cache (TNC) 2 | ||
127 | Check indexing tree size 4 | ||
128 | Check orphan area 8 | ||
129 | Check old indexing tree 16 | ||
130 | Check LEB properties (lprops) 32 | ||
131 | Check leaf nodes and inodes 64 | ||
132 | |||
133 | debug_tsts Selects a mode of testing, as follows: | ||
134 | |||
135 | Test mode Flag value | ||
136 | |||
137 | Failure mode for recovery testing 4 | ||
138 | |||
139 | For example, set debug_chks to 3 to enable general and TNC checks. | ||
140 | |||
141 | |||
142 | References | 114 | References |
143 | ========== | 115 | ========== |
144 | 116 | ||
diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt index 88b9f5519af..52d8fb81cff 100644 --- a/Documentation/filesystems/vfs.txt +++ b/Documentation/filesystems/vfs.txt | |||
@@ -229,6 +229,8 @@ struct super_operations { | |||
229 | 229 | ||
230 | ssize_t (*quota_read)(struct super_block *, int, char *, size_t, loff_t); | 230 | ssize_t (*quota_read)(struct super_block *, int, char *, size_t, loff_t); |
231 | ssize_t (*quota_write)(struct super_block *, int, const char *, size_t, loff_t); | 231 | ssize_t (*quota_write)(struct super_block *, int, const char *, size_t, loff_t); |
232 | int (*nr_cached_objects)(struct super_block *); | ||
233 | void (*free_cached_objects)(struct super_block *, int); | ||
232 | }; | 234 | }; |
233 | 235 | ||
234 | All methods are called without any locks being held, unless otherwise | 236 | All methods are called without any locks being held, unless otherwise |
@@ -301,6 +303,26 @@ or bottom half). | |||
301 | 303 | ||
302 | quota_write: called by the VFS to write to filesystem quota file. | 304 | quota_write: called by the VFS to write to filesystem quota file. |
303 | 305 | ||
306 | nr_cached_objects: called by the sb cache shrinking function for the | ||
307 | filesystem to return the number of freeable cached objects it contains. | ||
308 | Optional. | ||
309 | |||
310 | free_cache_objects: called by the sb cache shrinking function for the | ||
311 | filesystem to scan the number of objects indicated to try to free them. | ||
312 | Optional, but any filesystem implementing this method needs to also | ||
313 | implement ->nr_cached_objects for it to be called correctly. | ||
314 | |||
315 | We can't do anything with any errors that the filesystem might | ||
316 | encountered, hence the void return type. This will never be called if | ||
317 | the VM is trying to reclaim under GFP_NOFS conditions, hence this | ||
318 | method does not need to handle that situation itself. | ||
319 | |||
320 | Implementations must include conditional reschedule calls inside any | ||
321 | scanning loop that is done. This allows the VFS to determine | ||
322 | appropriate scan batch sizes without having to worry about whether | ||
323 | implementations will cause holdoff problems due to large scan batch | ||
324 | sizes. | ||
325 | |||
304 | Whoever sets up the inode is responsible for filling in the "i_op" field. This | 326 | Whoever sets up the inode is responsible for filling in the "i_op" field. This |
305 | is a pointer to a "struct inode_operations" which describes the methods that | 327 | is a pointer to a "struct inode_operations" which describes the methods that |
306 | can be performed on individual inodes. | 328 | can be performed on individual inodes. |
@@ -333,8 +355,8 @@ struct inode_operations { | |||
333 | void * (*follow_link) (struct dentry *, struct nameidata *); | 355 | void * (*follow_link) (struct dentry *, struct nameidata *); |
334 | void (*put_link) (struct dentry *, struct nameidata *, void *); | 356 | void (*put_link) (struct dentry *, struct nameidata *, void *); |
335 | void (*truncate) (struct inode *); | 357 | void (*truncate) (struct inode *); |
336 | int (*permission) (struct inode *, int, unsigned int); | 358 | int (*permission) (struct inode *, int); |
337 | int (*check_acl)(struct inode *, int, unsigned int); | 359 | int (*get_acl)(struct inode *, int); |
338 | int (*setattr) (struct dentry *, struct iattr *); | 360 | int (*setattr) (struct dentry *, struct iattr *); |
339 | int (*getattr) (struct vfsmount *mnt, struct dentry *, struct kstat *); | 361 | int (*getattr) (struct vfsmount *mnt, struct dentry *, struct kstat *); |
340 | int (*setxattr) (struct dentry *, const char *,const void *,size_t,int); | 362 | int (*setxattr) (struct dentry *, const char *,const void *,size_t,int); |
@@ -423,7 +445,7 @@ otherwise noted. | |||
423 | permission: called by the VFS to check for access rights on a POSIX-like | 445 | permission: called by the VFS to check for access rights on a POSIX-like |
424 | filesystem. | 446 | filesystem. |
425 | 447 | ||
426 | May be called in rcu-walk mode (flags & IPERM_FLAG_RCU). If in rcu-walk | 448 | May be called in rcu-walk mode (mask & MAY_NOT_BLOCK). If in rcu-walk |
427 | mode, the filesystem must check the permission without blocking or | 449 | mode, the filesystem must check the permission without blocking or |
428 | storing to the inode. | 450 | storing to the inode. |
429 | 451 | ||
@@ -755,7 +777,7 @@ struct file_operations { | |||
755 | int (*open) (struct inode *, struct file *); | 777 | int (*open) (struct inode *, struct file *); |
756 | int (*flush) (struct file *); | 778 | int (*flush) (struct file *); |
757 | int (*release) (struct inode *, struct file *); | 779 | int (*release) (struct inode *, struct file *); |
758 | int (*fsync) (struct file *, int datasync); | 780 | int (*fsync) (struct file *, loff_t, loff_t, int datasync); |
759 | int (*aio_fsync) (struct kiocb *, int datasync); | 781 | int (*aio_fsync) (struct kiocb *, int datasync); |
760 | int (*fasync) (int, struct file *, int); | 782 | int (*fasync) (int, struct file *, int); |
761 | int (*lock) (struct file *, int, struct file_lock *); | 783 | int (*lock) (struct file *, int, struct file_lock *); |