struct cached_dev *dc = container_of(kobj, struct cached_dev,
                                             disk.kobj);
        const char *states[] = { "no cache", "clean", "dirty", "inconsistent" };
+       int wb = dc->writeback_running;
 
 #define var(stat)              (dc->stat)
 
        var_printf(writeback_running,   "%i");
        var_print(writeback_delay);
        var_print(writeback_percent);
-       sysfs_hprint(writeback_rate,    dc->writeback_rate.rate << 9);
+       sysfs_hprint(writeback_rate,    wb ? dc->writeback_rate.rate << 9 : 0);
        sysfs_hprint(io_errors,         atomic_read(&dc->io_errors));
        sysfs_printf(io_error_limit,    "%i", dc->error_limit);
        sysfs_printf(io_disable,        "%i", dc->io_disable);
                char change[20];
                s64 next_io;
 
-               bch_hprint(rate,        dc->writeback_rate.rate << 9);
-               bch_hprint(dirty,       bcache_dev_sectors_dirty(&dc->disk) << 9);
-               bch_hprint(target,      dc->writeback_rate_target << 9);
-               bch_hprint(proportional,dc->writeback_rate_proportional << 9);
-               bch_hprint(integral,    dc->writeback_rate_integral_scaled << 9);
-               bch_hprint(change,      dc->writeback_rate_change << 9);
-
-               next_io = div64_s64(dc->writeback_rate.next - local_clock(),
-                                   NSEC_PER_MSEC);
+               /*
+                * Except for dirty and target, other values should
+                * be 0 if writeback is not running.
+                */
+               bch_hprint(rate, wb ? dc->writeback_rate.rate << 9 : 0);
+               bch_hprint(dirty, bcache_dev_sectors_dirty(&dc->disk) << 9);
+               bch_hprint(target, dc->writeback_rate_target << 9);
+               bch_hprint(proportional,
+                          wb ? dc->writeback_rate_proportional << 9 : 0);
+               bch_hprint(integral,
+                          wb ? dc->writeback_rate_integral_scaled << 9 : 0);
+               bch_hprint(change, wb ? dc->writeback_rate_change << 9 : 0);
+               next_io = wb ? div64_s64(dc->writeback_rate.next-local_clock(),
+                                        NSEC_PER_MSEC) : 0;
 
                return sprintf(buf,
                               "rate:\t\t%s/sec\n"