diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2014-11-19 13:02:53 -0500 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2014-11-19 13:02:53 -0500 |
commit | 8ce74dd6057832618957fc2cbd38fa959c3a0a6c (patch) | |
tree | af3bede951087ebc58988ad073182a85bf899e27 /Documentation/filesystems | |
parent | 78d28e651f97866d608d9b41f8ad291e65d47dd5 (diff) | |
parent | 9761536e1d9e9e1f325fb04d4ad46b15a39eb94a (diff) |
Merge tag 'trace-seq-file-cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace into for-next
Pull the beginning of seq_file cleanup from Steven:
"I'm looking to clean up the seq_file code and to eventually merge the
trace_seq code with seq_file as well, since they basically do the same thing.
Part of this process is to remove the return code of seq_printf() and friends
as they are rather inconsistent. It is better to use the new function
seq_has_overflowed() if you want to stop processing when the buffer
is full. Note, if the buffer is full, the seq_file code will throw away
the contents, allocate a bigger buffer, and then call your code again
to fill in the data. The only thing that breaking out of the function
early does is to save a little time which is probably never noticed.
I started with patches from Joe Perches and modified them as well.
There's many more places that need to be updated before we can convert
seq_printf() and friends to return void. But this patch set introduces
the seq_has_overflowed() and does some initial updates."
Diffstat (limited to 'Documentation/filesystems')
-rw-r--r-- | Documentation/filesystems/debugfs.txt | 2 | ||||
-rw-r--r-- | Documentation/filesystems/seq_file.txt | 22 | ||||
-rw-r--r-- | Documentation/filesystems/vfs.txt | 2 |
3 files changed, 15 insertions, 11 deletions
diff --git a/Documentation/filesystems/debugfs.txt b/Documentation/filesystems/debugfs.txt index 3a863f692728..88ab81c79109 100644 --- a/Documentation/filesystems/debugfs.txt +++ b/Documentation/filesystems/debugfs.txt | |||
@@ -140,7 +140,7 @@ file. | |||
140 | struct dentry *parent, | 140 | struct dentry *parent, |
141 | struct debugfs_regset32 *regset); | 141 | struct debugfs_regset32 *regset); |
142 | 142 | ||
143 | int debugfs_print_regs32(struct seq_file *s, struct debugfs_reg32 *regs, | 143 | void debugfs_print_regs32(struct seq_file *s, struct debugfs_reg32 *regs, |
144 | int nregs, void __iomem *base, char *prefix); | 144 | int nregs, void __iomem *base, char *prefix); |
145 | 145 | ||
146 | The "base" argument may be 0, but you may want to build the reg32 array | 146 | The "base" argument may be 0, but you may want to build the reg32 array |
diff --git a/Documentation/filesystems/seq_file.txt b/Documentation/filesystems/seq_file.txt index 8ea3e90ace07..b797ed38de46 100644 --- a/Documentation/filesystems/seq_file.txt +++ b/Documentation/filesystems/seq_file.txt | |||
@@ -180,23 +180,19 @@ output must be passed to the seq_file code. Some utility functions have | |||
180 | been defined which make this task easy. | 180 | been defined which make this task easy. |
181 | 181 | ||
182 | Most code will simply use seq_printf(), which works pretty much like | 182 | Most code will simply use seq_printf(), which works pretty much like |
183 | printk(), but which requires the seq_file pointer as an argument. It is | 183 | printk(), but which requires the seq_file pointer as an argument. |
184 | common to ignore the return value from seq_printf(), but a function | ||
185 | producing complicated output may want to check that value and quit if | ||
186 | something non-zero is returned; an error return means that the seq_file | ||
187 | buffer has been filled and further output will be discarded. | ||
188 | 184 | ||
189 | For straight character output, the following functions may be used: | 185 | For straight character output, the following functions may be used: |
190 | 186 | ||
191 | int seq_putc(struct seq_file *m, char c); | 187 | seq_putc(struct seq_file *m, char c); |
192 | int seq_puts(struct seq_file *m, const char *s); | 188 | seq_puts(struct seq_file *m, const char *s); |
193 | int seq_escape(struct seq_file *m, const char *s, const char *esc); | 189 | seq_escape(struct seq_file *m, const char *s, const char *esc); |
194 | 190 | ||
195 | The first two output a single character and a string, just like one would | 191 | The first two output a single character and a string, just like one would |
196 | expect. seq_escape() is like seq_puts(), except that any character in s | 192 | expect. seq_escape() is like seq_puts(), except that any character in s |
197 | which is in the string esc will be represented in octal form in the output. | 193 | which is in the string esc will be represented in octal form in the output. |
198 | 194 | ||
199 | There is also a pair of functions for printing filenames: | 195 | There are also a pair of functions for printing filenames: |
200 | 196 | ||
201 | int seq_path(struct seq_file *m, struct path *path, char *esc); | 197 | int seq_path(struct seq_file *m, struct path *path, char *esc); |
202 | int seq_path_root(struct seq_file *m, struct path *path, | 198 | int seq_path_root(struct seq_file *m, struct path *path, |
@@ -209,6 +205,14 @@ root is desired, it can be used with seq_path_root(). Note that, if it | |||
209 | turns out that path cannot be reached from root, the value of root will be | 205 | turns out that path cannot be reached from root, the value of root will be |
210 | changed in seq_file_root() to a root which *does* work. | 206 | changed in seq_file_root() to a root which *does* work. |
211 | 207 | ||
208 | A function producing complicated output may want to check | ||
209 | bool seq_has_overflowed(struct seq_file *m); | ||
210 | and avoid further seq_<output> calls if true is returned. | ||
211 | |||
212 | A true return from seq_has_overflowed means that the seq_file buffer will | ||
213 | be discarded and the seq_show function will attempt to allocate a larger | ||
214 | buffer and retry printing. | ||
215 | |||
212 | 216 | ||
213 | Making it all work | 217 | Making it all work |
214 | 218 | ||
diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt index 20bf204426ca..43ce0507ee25 100644 --- a/Documentation/filesystems/vfs.txt +++ b/Documentation/filesystems/vfs.txt | |||
@@ -835,7 +835,7 @@ struct file_operations { | |||
835 | ssize_t (*splice_read)(struct file *, struct pipe_inode_info *, size_t, unsigned int); | 835 | ssize_t (*splice_read)(struct file *, struct pipe_inode_info *, size_t, unsigned int); |
836 | int (*setlease)(struct file *, long arg, struct file_lock **, void **); | 836 | int (*setlease)(struct file *, long arg, struct file_lock **, void **); |
837 | long (*fallocate)(struct file *, int mode, loff_t offset, loff_t len); | 837 | long (*fallocate)(struct file *, int mode, loff_t offset, loff_t len); |
838 | int (*show_fdinfo)(struct seq_file *m, struct file *f); | 838 | void (*show_fdinfo)(struct seq_file *m, struct file *f); |
839 | }; | 839 | }; |
840 | 840 | ||
841 | Again, all methods are called without any locks being held, unless | 841 | Again, all methods are called without any locks being held, unless |