diff options
Diffstat (limited to 'Documentation/filesystems')
-rw-r--r-- | Documentation/filesystems/Locking | 8 | ||||
-rw-r--r-- | Documentation/filesystems/btrfs.txt | 4 | ||||
-rw-r--r-- | Documentation/filesystems/ceph.txt | 18 | ||||
-rw-r--r-- | Documentation/filesystems/configfs/configfs.txt | 2 | ||||
-rw-r--r-- | Documentation/filesystems/debugfs.txt | 56 | ||||
-rw-r--r-- | Documentation/filesystems/ext4.txt | 7 | ||||
-rw-r--r-- | Documentation/filesystems/nfs/00-INDEX | 2 | ||||
-rw-r--r-- | Documentation/filesystems/nfs/fault_injection.txt | 69 | ||||
-rw-r--r-- | Documentation/filesystems/proc.txt | 42 | ||||
-rw-r--r-- | Documentation/filesystems/squashfs.txt | 6 | ||||
-rw-r--r-- | Documentation/filesystems/sysfs.txt | 2 | ||||
-rw-r--r-- | Documentation/filesystems/vfs.txt | 8 |
12 files changed, 191 insertions, 33 deletions
diff --git a/Documentation/filesystems/Locking b/Documentation/filesystems/Locking index d819ba16a0c7..4fca82e5276e 100644 --- a/Documentation/filesystems/Locking +++ b/Documentation/filesystems/Locking | |||
@@ -37,15 +37,15 @@ d_manage: no no yes (ref-walk) maybe | |||
37 | 37 | ||
38 | --------------------------- inode_operations --------------------------- | 38 | --------------------------- inode_operations --------------------------- |
39 | prototypes: | 39 | prototypes: |
40 | int (*create) (struct inode *,struct dentry *,int, struct nameidata *); | 40 | int (*create) (struct inode *,struct dentry *,umode_t, struct nameidata *); |
41 | struct dentry * (*lookup) (struct inode *,struct dentry *, struct nameid | 41 | struct dentry * (*lookup) (struct inode *,struct dentry *, struct nameid |
42 | ata *); | 42 | ata *); |
43 | int (*link) (struct dentry *,struct inode *,struct dentry *); | 43 | int (*link) (struct dentry *,struct inode *,struct dentry *); |
44 | int (*unlink) (struct inode *,struct dentry *); | 44 | int (*unlink) (struct inode *,struct dentry *); |
45 | int (*symlink) (struct inode *,struct dentry *,const char *); | 45 | int (*symlink) (struct inode *,struct dentry *,const char *); |
46 | int (*mkdir) (struct inode *,struct dentry *,int); | 46 | int (*mkdir) (struct inode *,struct dentry *,umode_t); |
47 | int (*rmdir) (struct inode *,struct dentry *); | 47 | int (*rmdir) (struct inode *,struct dentry *); |
48 | int (*mknod) (struct inode *,struct dentry *,int,dev_t); | 48 | int (*mknod) (struct inode *,struct dentry *,umode_t,dev_t); |
49 | int (*rename) (struct inode *, struct dentry *, | 49 | int (*rename) (struct inode *, struct dentry *, |
50 | struct inode *, struct dentry *); | 50 | struct inode *, struct dentry *); |
51 | int (*readlink) (struct dentry *, char __user *,int); | 51 | int (*readlink) (struct dentry *, char __user *,int); |
@@ -117,7 +117,7 @@ prototypes: | |||
117 | int (*statfs) (struct dentry *, struct kstatfs *); | 117 | int (*statfs) (struct dentry *, struct kstatfs *); |
118 | int (*remount_fs) (struct super_block *, int *, char *); | 118 | int (*remount_fs) (struct super_block *, int *, char *); |
119 | void (*umount_begin) (struct super_block *); | 119 | void (*umount_begin) (struct super_block *); |
120 | int (*show_options)(struct seq_file *, struct vfsmount *); | 120 | int (*show_options)(struct seq_file *, struct dentry *); |
121 | ssize_t (*quota_read)(struct super_block *, int, char *, size_t, loff_t); | 121 | ssize_t (*quota_read)(struct super_block *, int, char *, size_t, loff_t); |
122 | ssize_t (*quota_write)(struct super_block *, int, const char *, size_t, loff_t); | 122 | ssize_t (*quota_write)(struct super_block *, int, const char *, size_t, loff_t); |
123 | int (*bdev_try_to_free_page)(struct super_block*, struct page*, gfp_t); | 123 | int (*bdev_try_to_free_page)(struct super_block*, struct page*, gfp_t); |
diff --git a/Documentation/filesystems/btrfs.txt b/Documentation/filesystems/btrfs.txt index 64087c34327f..7671352216f1 100644 --- a/Documentation/filesystems/btrfs.txt +++ b/Documentation/filesystems/btrfs.txt | |||
@@ -63,8 +63,8 @@ IRC network. | |||
63 | Userspace tools for creating and manipulating Btrfs file systems are | 63 | Userspace tools for creating and manipulating Btrfs file systems are |
64 | available from the git repository at the following location: | 64 | available from the git repository at the following location: |
65 | 65 | ||
66 | http://git.kernel.org/?p=linux/kernel/git/mason/btrfs-progs-unstable.git | 66 | http://git.kernel.org/?p=linux/kernel/git/mason/btrfs-progs.git |
67 | git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-progs-unstable.git | 67 | git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-progs.git |
68 | 68 | ||
69 | These include the following tools: | 69 | These include the following tools: |
70 | 70 | ||
diff --git a/Documentation/filesystems/ceph.txt b/Documentation/filesystems/ceph.txt index 763d8ebbbebd..d6030aa33376 100644 --- a/Documentation/filesystems/ceph.txt +++ b/Documentation/filesystems/ceph.txt | |||
@@ -119,12 +119,20 @@ Mount Options | |||
119 | must rely on TCP's error correction to detect data corruption | 119 | must rely on TCP's error correction to detect data corruption |
120 | in the data payload. | 120 | in the data payload. |
121 | 121 | ||
122 | noasyncreaddir | 122 | dcache |
123 | Disable client's use its local cache to satisfy readdir | 123 | Use the dcache contents to perform negative lookups and |
124 | requests. (This does not change correctness; the client uses | 124 | readdir when the client has the entire directory contents in |
125 | cached metadata only when a lease or capability ensures it is | 125 | its cache. (This does not change correctness; the client uses |
126 | valid.) | 126 | cached metadata only when a lease or capability ensures it is |
127 | valid.) | ||
128 | |||
129 | nodcache | ||
130 | Do not use the dcache as above. This avoids a significant amount of | ||
131 | complex code, sacrificing performance without affecting correctness, | ||
132 | and is useful for tracking down bugs. | ||
127 | 133 | ||
134 | noasyncreaddir | ||
135 | Do not use the dcache as above for readdir. | ||
128 | 136 | ||
129 | More Information | 137 | More Information |
130 | ================ | 138 | ================ |
diff --git a/Documentation/filesystems/configfs/configfs.txt b/Documentation/filesystems/configfs/configfs.txt index dd57bb6bb390..b40fec9d3f53 100644 --- a/Documentation/filesystems/configfs/configfs.txt +++ b/Documentation/filesystems/configfs/configfs.txt | |||
@@ -192,7 +192,7 @@ attribute value uses the store_attribute() method. | |||
192 | struct configfs_attribute { | 192 | struct configfs_attribute { |
193 | char *ca_name; | 193 | char *ca_name; |
194 | struct module *ca_owner; | 194 | struct module *ca_owner; |
195 | mode_t ca_mode; | 195 | umode_t ca_mode; |
196 | }; | 196 | }; |
197 | 197 | ||
198 | When a config_item wants an attribute to appear as a file in the item's | 198 | When a config_item wants an attribute to appear as a file in the item's |
diff --git a/Documentation/filesystems/debugfs.txt b/Documentation/filesystems/debugfs.txt index 742cc06e138f..6872c91bce35 100644 --- a/Documentation/filesystems/debugfs.txt +++ b/Documentation/filesystems/debugfs.txt | |||
@@ -35,7 +35,7 @@ described below will work. | |||
35 | 35 | ||
36 | The most general way to create a file within a debugfs directory is with: | 36 | The most general way to create a file within a debugfs directory is with: |
37 | 37 | ||
38 | struct dentry *debugfs_create_file(const char *name, mode_t mode, | 38 | struct dentry *debugfs_create_file(const char *name, umode_t mode, |
39 | struct dentry *parent, void *data, | 39 | struct dentry *parent, void *data, |
40 | const struct file_operations *fops); | 40 | const struct file_operations *fops); |
41 | 41 | ||
@@ -53,13 +53,13 @@ actually necessary; the debugfs code provides a number of helper functions | |||
53 | for simple situations. Files containing a single integer value can be | 53 | for simple situations. Files containing a single integer value can be |
54 | created with any of: | 54 | created with any of: |
55 | 55 | ||
56 | struct dentry *debugfs_create_u8(const char *name, mode_t mode, | 56 | struct dentry *debugfs_create_u8(const char *name, umode_t mode, |
57 | struct dentry *parent, u8 *value); | 57 | struct dentry *parent, u8 *value); |
58 | struct dentry *debugfs_create_u16(const char *name, mode_t mode, | 58 | struct dentry *debugfs_create_u16(const char *name, umode_t mode, |
59 | struct dentry *parent, u16 *value); | 59 | struct dentry *parent, u16 *value); |
60 | struct dentry *debugfs_create_u32(const char *name, mode_t mode, | 60 | struct dentry *debugfs_create_u32(const char *name, umode_t mode, |
61 | struct dentry *parent, u32 *value); | 61 | struct dentry *parent, u32 *value); |
62 | struct dentry *debugfs_create_u64(const char *name, mode_t mode, | 62 | struct dentry *debugfs_create_u64(const char *name, umode_t mode, |
63 | struct dentry *parent, u64 *value); | 63 | struct dentry *parent, u64 *value); |
64 | 64 | ||
65 | These files support both reading and writing the given value; if a specific | 65 | These files support both reading and writing the given value; if a specific |
@@ -67,13 +67,13 @@ file should not be written to, simply set the mode bits accordingly. The | |||
67 | values in these files are in decimal; if hexadecimal is more appropriate, | 67 | values in these files are in decimal; if hexadecimal is more appropriate, |
68 | the following functions can be used instead: | 68 | the following functions can be used instead: |
69 | 69 | ||
70 | struct dentry *debugfs_create_x8(const char *name, mode_t mode, | 70 | struct dentry *debugfs_create_x8(const char *name, umode_t mode, |
71 | struct dentry *parent, u8 *value); | 71 | struct dentry *parent, u8 *value); |
72 | struct dentry *debugfs_create_x16(const char *name, mode_t mode, | 72 | struct dentry *debugfs_create_x16(const char *name, umode_t mode, |
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, umode_t mode, |
75 | struct dentry *parent, u32 *value); | 75 | struct dentry *parent, u32 *value); |
76 | struct dentry *debugfs_create_x64(const char *name, mode_t mode, | 76 | struct dentry *debugfs_create_x64(const char *name, umode_t mode, |
77 | struct dentry *parent, u64 *value); | 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 |
@@ -81,7 +81,7 @@ value to be exported. Some types can have different widths on different | |||
81 | architectures, though, complicating the situation somewhat. There is a | 81 | architectures, though, complicating the situation somewhat. There is a |
82 | function meant to help out in one special case: | 82 | function meant to help out in one special case: |
83 | 83 | ||
84 | struct dentry *debugfs_create_size_t(const char *name, mode_t mode, | 84 | struct dentry *debugfs_create_size_t(const char *name, umode_t mode, |
85 | struct dentry *parent, | 85 | struct dentry *parent, |
86 | size_t *value); | 86 | size_t *value); |
87 | 87 | ||
@@ -90,21 +90,22 @@ a variable of type size_t. | |||
90 | 90 | ||
91 | Boolean values can be placed in debugfs with: | 91 | Boolean values can be placed in debugfs with: |
92 | 92 | ||
93 | struct dentry *debugfs_create_bool(const char *name, mode_t mode, | 93 | struct dentry *debugfs_create_bool(const char *name, umode_t mode, |
94 | struct dentry *parent, u32 *value); | 94 | struct dentry *parent, u32 *value); |
95 | 95 | ||
96 | A read on the resulting file will yield either Y (for non-zero values) or | 96 | A read on the resulting file will yield either Y (for non-zero values) or |
97 | N, followed by a newline. If written to, it will accept either upper- or | 97 | N, followed by a newline. If written to, it will accept either upper- or |
98 | lower-case values, or 1 or 0. Any other input will be silently ignored. | 98 | lower-case values, or 1 or 0. Any other input will be silently ignored. |
99 | 99 | ||
100 | Finally, a block of arbitrary binary data can be exported with: | 100 | Another option is exporting a block of arbitrary binary data, with |
101 | this structure and function: | ||
101 | 102 | ||
102 | struct debugfs_blob_wrapper { | 103 | struct debugfs_blob_wrapper { |
103 | void *data; | 104 | void *data; |
104 | unsigned long size; | 105 | unsigned long size; |
105 | }; | 106 | }; |
106 | 107 | ||
107 | struct dentry *debugfs_create_blob(const char *name, mode_t mode, | 108 | struct dentry *debugfs_create_blob(const char *name, umode_t mode, |
108 | struct dentry *parent, | 109 | struct dentry *parent, |
109 | struct debugfs_blob_wrapper *blob); | 110 | struct debugfs_blob_wrapper *blob); |
110 | 111 | ||
@@ -115,6 +116,35 @@ can be used to export binary information, but there does not appear to be | |||
115 | any code which does so in the mainline. Note that all files created with | 116 | any code which does so in the mainline. Note that all files created with |
116 | debugfs_create_blob() are read-only. | 117 | debugfs_create_blob() are read-only. |
117 | 118 | ||
119 | If you want to dump a block of registers (something that happens quite | ||
120 | often during development, even if little such code reaches mainline. | ||
121 | Debugfs offers two functions: one to make a registers-only file, and | ||
122 | another to insert a register block in the middle of another sequential | ||
123 | file. | ||
124 | |||
125 | struct debugfs_reg32 { | ||
126 | char *name; | ||
127 | unsigned long offset; | ||
128 | }; | ||
129 | |||
130 | struct debugfs_regset32 { | ||
131 | struct debugfs_reg32 *regs; | ||
132 | int nregs; | ||
133 | void __iomem *base; | ||
134 | }; | ||
135 | |||
136 | struct dentry *debugfs_create_regset32(const char *name, mode_t mode, | ||
137 | struct dentry *parent, | ||
138 | struct debugfs_regset32 *regset); | ||
139 | |||
140 | int debugfs_print_regs32(struct seq_file *s, struct debugfs_reg32 *regs, | ||
141 | int nregs, void __iomem *base, char *prefix); | ||
142 | |||
143 | The "base" argument may be 0, but you may want to build the reg32 array | ||
144 | using __stringify, and a number of register names (macros) are actually | ||
145 | byte offsets over a base for the register block. | ||
146 | |||
147 | |||
118 | There are a couple of other directory-oriented helper functions: | 148 | There are a couple of other directory-oriented helper functions: |
119 | 149 | ||
120 | struct dentry *debugfs_rename(struct dentry *old_dir, | 150 | struct dentry *debugfs_rename(struct dentry *old_dir, |
diff --git a/Documentation/filesystems/ext4.txt b/Documentation/filesystems/ext4.txt index 4917cf24a5e0..10ec4639f152 100644 --- a/Documentation/filesystems/ext4.txt +++ b/Documentation/filesystems/ext4.txt | |||
@@ -581,6 +581,13 @@ Table of Ext4 specific ioctls | |||
581 | behaviour may change in the future as it is | 581 | behaviour may change in the future as it is |
582 | not necessary and has been done this way only | 582 | not necessary and has been done this way only |
583 | for sake of simplicity. | 583 | for sake of simplicity. |
584 | |||
585 | EXT4_IOC_RESIZE_FS Resize the filesystem to a new size. The number | ||
586 | of blocks of resized filesystem is passed in via | ||
587 | 64 bit integer argument. The kernel allocates | ||
588 | bitmaps and inode table, the userspace tool thus | ||
589 | just passes the new number of blocks. | ||
590 | |||
584 | .............................................................................. | 591 | .............................................................................. |
585 | 592 | ||
586 | References | 593 | References |
diff --git a/Documentation/filesystems/nfs/00-INDEX b/Documentation/filesystems/nfs/00-INDEX index a57e12411d2a..1716874a651e 100644 --- a/Documentation/filesystems/nfs/00-INDEX +++ b/Documentation/filesystems/nfs/00-INDEX | |||
@@ -2,6 +2,8 @@ | |||
2 | - this file (nfs-related documentation). | 2 | - this file (nfs-related documentation). |
3 | Exporting | 3 | Exporting |
4 | - explanation of how to make filesystems exportable. | 4 | - explanation of how to make filesystems exportable. |
5 | fault_injection.txt | ||
6 | - information for using fault injection on the server | ||
5 | knfsd-stats.txt | 7 | knfsd-stats.txt |
6 | - statistics which the NFS server makes available to user space. | 8 | - statistics which the NFS server makes available to user space. |
7 | nfs.txt | 9 | nfs.txt |
diff --git a/Documentation/filesystems/nfs/fault_injection.txt b/Documentation/filesystems/nfs/fault_injection.txt new file mode 100644 index 000000000000..426d166089a3 --- /dev/null +++ b/Documentation/filesystems/nfs/fault_injection.txt | |||
@@ -0,0 +1,69 @@ | |||
1 | |||
2 | Fault Injection | ||
3 | =============== | ||
4 | Fault injection is a method for forcing errors that may not normally occur, or | ||
5 | may be difficult to reproduce. Forcing these errors in a controlled environment | ||
6 | can help the developer find and fix bugs before their code is shipped in a | ||
7 | production system. Injecting an error on the Linux NFS server will allow us to | ||
8 | observe how the client reacts and if it manages to recover its state correctly. | ||
9 | |||
10 | NFSD_FAULT_INJECTION must be selected when configuring the kernel to use this | ||
11 | feature. | ||
12 | |||
13 | |||
14 | Using Fault Injection | ||
15 | ===================== | ||
16 | On the client, mount the fault injection server through NFS v4.0+ and do some | ||
17 | work over NFS (open files, take locks, ...). | ||
18 | |||
19 | On the server, mount the debugfs filesystem to <debug_dir> and ls | ||
20 | <debug_dir>/nfsd. This will show a list of files that will be used for | ||
21 | injecting faults on the NFS server. As root, write a number n to the file | ||
22 | corresponding to the action you want the server to take. The server will then | ||
23 | process the first n items it finds. So if you want to forget 5 locks, echo '5' | ||
24 | to <debug_dir>/nfsd/forget_locks. A value of 0 will tell the server to forget | ||
25 | all corresponding items. A log message will be created containing the number | ||
26 | of items forgotten (check dmesg). | ||
27 | |||
28 | Go back to work on the client and check if the client recovered from the error | ||
29 | correctly. | ||
30 | |||
31 | |||
32 | Available Faults | ||
33 | ================ | ||
34 | forget_clients: | ||
35 | The NFS server keeps a list of clients that have placed a mount call. If | ||
36 | this list is cleared, the server will have no knowledge of who the client | ||
37 | is, forcing the client to reauthenticate with the server. | ||
38 | |||
39 | forget_openowners: | ||
40 | The NFS server keeps a list of what files are currently opened and who | ||
41 | they were opened by. Clearing this list will force the client to reopen | ||
42 | its files. | ||
43 | |||
44 | forget_locks: | ||
45 | The NFS server keeps a list of what files are currently locked in the VFS. | ||
46 | Clearing this list will force the client to reclaim its locks (files are | ||
47 | unlocked through the VFS as they are cleared from this list). | ||
48 | |||
49 | forget_delegations: | ||
50 | A delegation is used to assure the client that a file, or part of a file, | ||
51 | has not changed since the delegation was awarded. Clearing this list will | ||
52 | force the client to reaquire its delegation before accessing the file | ||
53 | again. | ||
54 | |||
55 | recall_delegations: | ||
56 | Delegations can be recalled by the server when another client attempts to | ||
57 | access a file. This test will notify the client that its delegation has | ||
58 | been revoked, forcing the client to reaquire the delegation before using | ||
59 | the file again. | ||
60 | |||
61 | |||
62 | tools/nfs/inject_faults.sh script | ||
63 | ================================= | ||
64 | This script has been created to ease the fault injection process. This script | ||
65 | will detect the mounted debugfs directory and write to the files located there | ||
66 | based on the arguments passed by the user. For example, running | ||
67 | `inject_faults.sh forget_locks 1` as root will instruct the server to forget | ||
68 | one lock. Running `inject_faults forget_locks` will instruct the server to | ||
69 | forgetall locks. | ||
diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt index 0ec91f03422e..a76a26a1db8a 100644 --- a/Documentation/filesystems/proc.txt +++ b/Documentation/filesystems/proc.txt | |||
@@ -41,6 +41,8 @@ Table of Contents | |||
41 | 3.5 /proc/<pid>/mountinfo - Information about mounts | 41 | 3.5 /proc/<pid>/mountinfo - Information about mounts |
42 | 3.6 /proc/<pid>/comm & /proc/<pid>/task/<tid>/comm | 42 | 3.6 /proc/<pid>/comm & /proc/<pid>/task/<tid>/comm |
43 | 43 | ||
44 | 4 Configuring procfs | ||
45 | 4.1 Mount options | ||
44 | 46 | ||
45 | ------------------------------------------------------------------------------ | 47 | ------------------------------------------------------------------------------ |
46 | Preface | 48 | Preface |
@@ -305,6 +307,9 @@ Table 1-4: Contents of the stat files (as of 2.6.30-rc7) | |||
305 | blkio_ticks time spent waiting for block IO | 307 | blkio_ticks time spent waiting for block IO |
306 | gtime guest time of the task in jiffies | 308 | gtime guest time of the task in jiffies |
307 | cgtime guest time of the task children in jiffies | 309 | cgtime guest time of the task children in jiffies |
310 | start_data address above which program data+bss is placed | ||
311 | end_data address below which program data+bss is placed | ||
312 | start_brk address above which program heap can be expanded with brk() | ||
308 | .............................................................................. | 313 | .............................................................................. |
309 | 314 | ||
310 | The /proc/PID/maps file containing the currently mapped memory regions and | 315 | The /proc/PID/maps file containing the currently mapped memory regions and |
@@ -1542,3 +1547,40 @@ a task to set its own or one of its thread siblings comm value. The comm value | |||
1542 | is limited in size compared to the cmdline value, so writing anything longer | 1547 | is limited in size compared to the cmdline value, so writing anything longer |
1543 | then the kernel's TASK_COMM_LEN (currently 16 chars) will result in a truncated | 1548 | then the kernel's TASK_COMM_LEN (currently 16 chars) will result in a truncated |
1544 | comm value. | 1549 | comm value. |
1550 | |||
1551 | |||
1552 | ------------------------------------------------------------------------------ | ||
1553 | Configuring procfs | ||
1554 | ------------------------------------------------------------------------------ | ||
1555 | |||
1556 | 4.1 Mount options | ||
1557 | --------------------- | ||
1558 | |||
1559 | The following mount options are supported: | ||
1560 | |||
1561 | hidepid= Set /proc/<pid>/ access mode. | ||
1562 | gid= Set the group authorized to learn processes information. | ||
1563 | |||
1564 | hidepid=0 means classic mode - everybody may access all /proc/<pid>/ directories | ||
1565 | (default). | ||
1566 | |||
1567 | hidepid=1 means users may not access any /proc/<pid>/ directories but their | ||
1568 | own. Sensitive files like cmdline, sched*, status are now protected against | ||
1569 | other users. This makes it impossible to learn whether any user runs | ||
1570 | specific program (given the program doesn't reveal itself by its behaviour). | ||
1571 | As an additional bonus, as /proc/<pid>/cmdline is unaccessible for other users, | ||
1572 | poorly written programs passing sensitive information via program arguments are | ||
1573 | now protected against local eavesdroppers. | ||
1574 | |||
1575 | hidepid=2 means hidepid=1 plus all /proc/<pid>/ will be fully invisible to other | ||
1576 | users. It doesn't mean that it hides a fact whether a process with a specific | ||
1577 | pid value exists (it can be learned by other means, e.g. by "kill -0 $PID"), | ||
1578 | but it hides process' uid and gid, which may be learned by stat()'ing | ||
1579 | /proc/<pid>/ otherwise. It greatly complicates an intruder's task of gathering | ||
1580 | information about running processes, whether some daemon runs with elevated | ||
1581 | privileges, whether other user runs some sensitive program, whether other users | ||
1582 | run any program at all, etc. | ||
1583 | |||
1584 | gid= defines a group authorized to learn processes information otherwise | ||
1585 | prohibited by hidepid=. If you use some daemon like identd which needs to learn | ||
1586 | information about processes information, just add identd to this group. | ||
diff --git a/Documentation/filesystems/squashfs.txt b/Documentation/filesystems/squashfs.txt index 7db3ebda5a4c..403c090aca39 100644 --- a/Documentation/filesystems/squashfs.txt +++ b/Documentation/filesystems/squashfs.txt | |||
@@ -93,8 +93,8 @@ byte alignment: | |||
93 | 93 | ||
94 | Compressed data blocks are written to the filesystem as files are read from | 94 | Compressed data blocks are written to the filesystem as files are read from |
95 | the source directory, and checked for duplicates. Once all file data has been | 95 | the source directory, and checked for duplicates. Once all file data has been |
96 | written the completed inode, directory, fragment, export and uid/gid lookup | 96 | written the completed inode, directory, fragment, export, uid/gid lookup and |
97 | tables are written. | 97 | xattr tables are written. |
98 | 98 | ||
99 | 3.1 Compression options | 99 | 3.1 Compression options |
100 | ----------------------- | 100 | ----------------------- |
@@ -151,7 +151,7 @@ in each metadata block. Directories are sorted in alphabetical order, | |||
151 | and at lookup the index is scanned linearly looking for the first filename | 151 | and at lookup the index is scanned linearly looking for the first filename |
152 | alphabetically larger than the filename being looked up. At this point the | 152 | alphabetically larger than the filename being looked up. At this point the |
153 | location of the metadata block the filename is in has been found. | 153 | location of the metadata block the filename is in has been found. |
154 | The general idea of the index is ensure only one metadata block needs to be | 154 | The general idea of the index is to ensure only one metadata block needs to be |
155 | decompressed to do a lookup irrespective of the length of the directory. | 155 | decompressed to do a lookup irrespective of the length of the directory. |
156 | This scheme has the advantage that it doesn't require extra memory overhead | 156 | This scheme has the advantage that it doesn't require extra memory overhead |
157 | and doesn't require much extra storage on disk. | 157 | and doesn't require much extra storage on disk. |
diff --git a/Documentation/filesystems/sysfs.txt b/Documentation/filesystems/sysfs.txt index 07235caec22c..a6619b7064b9 100644 --- a/Documentation/filesystems/sysfs.txt +++ b/Documentation/filesystems/sysfs.txt | |||
@@ -70,7 +70,7 @@ An attribute definition is simply: | |||
70 | struct attribute { | 70 | struct attribute { |
71 | char * name; | 71 | char * name; |
72 | struct module *owner; | 72 | struct module *owner; |
73 | mode_t mode; | 73 | umode_t mode; |
74 | }; | 74 | }; |
75 | 75 | ||
76 | 76 | ||
diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt index 43cbd0821721..3d9393b845b8 100644 --- a/Documentation/filesystems/vfs.txt +++ b/Documentation/filesystems/vfs.txt | |||
@@ -225,7 +225,7 @@ struct super_operations { | |||
225 | void (*clear_inode) (struct inode *); | 225 | void (*clear_inode) (struct inode *); |
226 | void (*umount_begin) (struct super_block *); | 226 | void (*umount_begin) (struct super_block *); |
227 | 227 | ||
228 | int (*show_options)(struct seq_file *, struct vfsmount *); | 228 | int (*show_options)(struct seq_file *, struct dentry *); |
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); |
@@ -341,14 +341,14 @@ This describes how the VFS can manipulate an inode in your | |||
341 | filesystem. As of kernel 2.6.22, the following members are defined: | 341 | filesystem. As of kernel 2.6.22, the following members are defined: |
342 | 342 | ||
343 | struct inode_operations { | 343 | struct inode_operations { |
344 | int (*create) (struct inode *,struct dentry *,int, struct nameidata *); | 344 | int (*create) (struct inode *,struct dentry *, umode_t, struct nameidata *); |
345 | struct dentry * (*lookup) (struct inode *,struct dentry *, struct nameidata *); | 345 | struct dentry * (*lookup) (struct inode *,struct dentry *, struct nameidata *); |
346 | int (*link) (struct dentry *,struct inode *,struct dentry *); | 346 | int (*link) (struct dentry *,struct inode *,struct dentry *); |
347 | int (*unlink) (struct inode *,struct dentry *); | 347 | int (*unlink) (struct inode *,struct dentry *); |
348 | int (*symlink) (struct inode *,struct dentry *,const char *); | 348 | int (*symlink) (struct inode *,struct dentry *,const char *); |
349 | int (*mkdir) (struct inode *,struct dentry *,int); | 349 | int (*mkdir) (struct inode *,struct dentry *,umode_t); |
350 | int (*rmdir) (struct inode *,struct dentry *); | 350 | int (*rmdir) (struct inode *,struct dentry *); |
351 | int (*mknod) (struct inode *,struct dentry *,int,dev_t); | 351 | int (*mknod) (struct inode *,struct dentry *,umode_t,dev_t); |
352 | int (*rename) (struct inode *, struct dentry *, | 352 | int (*rename) (struct inode *, struct dentry *, |
353 | struct inode *, struct dentry *); | 353 | struct inode *, struct dentry *); |
354 | int (*readlink) (struct dentry *, char __user *,int); | 354 | int (*readlink) (struct dentry *, char __user *,int); |