OSDN Git Service

md: Fix missing unused status line of /proc/mdstat
authorJan Glauber <jglauber@digitalocean.com>
Wed, 17 Mar 2021 14:04:39 +0000 (15:04 +0100)
committerSong Liu <songliubraving@fb.com>
Wed, 24 Mar 2021 23:29:07 +0000 (16:29 -0700)
Reading /proc/mdstat with a read buffer size that would not
fit the unused status line in the first read will skip this
line from the output.

So 'dd if=/proc/mdstat bs=64 2>/dev/null' will not print something
like: unused devices: <none>

Don't return NULL immediately in start() for v=2 but call
show() once to print the status line also for multiple reads.

Cc: stable@vger.kernel.org
Fixes: 1f4aace60b0e ("fs/seq_file.c: simplify seq_file iteration code and interface")
Signed-off-by: Jan Glauber <jglauber@digitalocean.com>
Signed-off-by: Song Liu <songliubraving@fb.com>
drivers/md/md.c

index 498a1c2..368cad6 100644 (file)
@@ -8153,7 +8153,11 @@ static void *md_seq_start(struct seq_file *seq, loff_t *pos)
        loff_t l = *pos;
        struct mddev *mddev;
 
-       if (l >= 0x10000)
+       if (l == 0x10000) {
+               ++*pos;
+               return (void *)2;
+       }
+       if (l > 0x10000)
                return NULL;
        if (!l--)
                /* header */