Re: Discard request and write counters
From: Dave Chinner <david@fromorbit.com>
Date: 2011-03-23 23:40:20
Also in:
linux-fsdevel
On Wed, Mar 23, 2011 at 02:07:40PM +0100, Lukas Czerner wrote:
Hello, I have noticed that we do treat discard requests (REQ_DISCARD) as write requests which is probably right, but it has the side effect of increasing write counters as well (disk_stats->sectors[1]) which leads to confusing result. For example in ext4 filesystem we have counter s_kbytes_written which stores amount of kbytes written to the filesystem throughout its lifetime. Now, if you mount the filesystem with -o discard mount option, which means that with every commit blocks used by unlinked files are discarded, you'll get approx. twice as many kb writes as it should be (if you delete every file you have previously written of course). So this means that with -o discard the ext4 s_kbytes_written counter is no longer reliable. Now the question is how to fix that ? Should the users of the disk_stats->sectors[1] count with this behaviour as the REQ_DISCARD is treated as write and should be accounted for, or should we change that in block layer and do not count REQ_DISCARD as write in the first place ?
IMO discard needs to be accounted separately in new counters. Discards are not writes, but knowing how much data is being discarded along with read and write stats is definitely useful information about the IO load the device is under. Cheers, Dave. -- Dave Chinner david@fromorbit.com