seq_file: don't call bitmap_scnprintf_len()
authorLai Jiangshan <[email protected]>
Sun, 19 Oct 2008 03:28:18 +0000 (20:28 -0700)
committerLinus Torvalds <[email protected]>
Mon, 20 Oct 2008 15:52:39 +0000 (08:52 -0700)
"m->count + len < m->size" is true commonly, so bitmap_scnprintf()
is commonly called. this fix saves a call to bitmap_scnprintf_len().

Signed-off-by: Lai Jiangshan <[email protected]>
Cc: Alexey Dobriyan <[email protected]>
Cc: Paul Menage <[email protected]>
Cc: Paul Jackson <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
fs/seq_file.c

index bd20f7f5a93342b57a4802010c788683deb63247..11c85fec6b4f60b25a83480adb77fa62f098d015 100644 (file)
@@ -452,17 +452,18 @@ int seq_dentry(struct seq_file *m, struct dentry *dentry, char *esc)
 
 int seq_bitmap(struct seq_file *m, unsigned long *bits, unsigned int nr_bits)
 {
-       size_t len = bitmap_scnprintf_len(nr_bits);
-
-       if (m->count + len < m->size) {
-               bitmap_scnprintf(m->buf + m->count, m->size - m->count,
-                                bits, nr_bits);
-               m->count += len;
-               return 0;
+       if (m->count < m->size) {
+               int len = bitmap_scnprintf(m->buf + m->count,
+                               m->size - m->count, bits, nr_bits);
+               if (m->count + len < m->size) {
+                       m->count += len;
+                       return 0;
+               }
        }
        m->count = m->size;
        return -1;
 }
+EXPORT_SYMBOL(seq_bitmap);
 
 static void *single_start(struct seq_file *p, loff_t *pos)
 {