On Wed, Jun 14, 2017 at 11:34:42AM +0900, Daeho Jeong wrote: > Now, when we mount ext4 filesystem with '-o discard' option, we have to > issue all the discard commands for the blocks to be deallocated and > wait for the completion of the commands on the commit complete phase. > Because this procedure might involve a lot of sequential combinations of > issuing discard commands and waiting for that, the delay of this > procedure might be too much long, even to 17.0s in our test, > and it results in long commit delay and fsync() performance degradation. > > To reduce this kind of delay, instead of adding callback for each > extent and handling all of them in a sequential manner on commit phase, > we instead add a separate list of extents to free to the superblock and > then process this list at once after transaction commits so that > we can issue all the discard commands in a parallel manner like XFS > filesystem. > > Finally, we could enhance the discard command handling performance. > The result was such that 17.0s delay of a single commit in the worst > case has been enhanced to 4.8s. > > Signed-off-by: Daeho Jeong <daeho.jeong@xxxxxxxxxxx> > Tested-by: Hobin Woo <hobin.woo@xxxxxxxxxxx> > Tested-by: Kitae Lee <kitae87.lee@xxxxxxxxxxx> > Reviewed-by: Jan Kara <jack@xxxxxxx> Thanks, applied. Since the one-line summary was longer than 80 characters, I shortened it to: ext4: send parallel discards on commit completions - Ted