[Top] [All Lists]

[PATCH v2 0/3] block: improvements for discard alignment

To: linux-kernel@xxxxxxxxxxxxxxx
Subject: [PATCH v2 0/3] block: improvements for discard alignment
From: Paolo Bonzini <pbonzini@xxxxxxxxxx>
Date: Mon, 2 Jul 2012 15:20:22 +0200
Cc: snitzer@xxxxxxxxxx, david@xxxxxxxxxxxxx, dm-devel@xxxxxxxxxx, xfs@xxxxxxxxxxx, hch@xxxxxx, martin.petersen@xxxxxxxxxx, axboe@xxxxxxxxx
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:x-mailer; bh=b85amQJ3SByQR8+BZm/FifstTgo0eWlumLKuVn7bso4=; b=UjZddRmTg1QOxCljojlnLiTBIMznAhVzD+0Hg4zod8BX5bcB6FW+U/6obSFZzoFUn0 TXi+jgtjmyyc28xJ2Y7CK7f2GaSmXRSne4HsGp53mAyCbH9E4oisOmDVWNpIZJwWXmsA ZnoF0K7NJS9flM/TgYl9xS5C8Cb5tsYh/p0yYNmTGWcGOBvFgWyX/pg57T163EBkLDtd fi6elr2JPc8qZATr56LGC2FuHm7b3eaEwA1/xScA3Ssv2rOG3zvCUPTtsbFU1mGyIVm2 rFFdnOdWp9RKYI5TNnqe4mHjIUmpQPiUdh1yNY+4l1bJgwfQnyXDnC3f/NcI802E5/6j AIFw==
Sender: Paolo Bonzini <paolo.bonzini@xxxxxxxxx>
When a disk has a large discard_granularity, discards are not split with
optimal alignment; the pessimization gets bigger as discard_granularity
and max_discard_sectors become closer.

Take the limit case of discard_granularity == max_discard_sectors == 64.
Then, if a request is submitted for 256 sectors 2..257 it will be split
like this: 2..65, 66..129, 130..193, 194..257.  None of these requests
is aligned, so in fact you might end up with no discarded logical blocks
at all.  With this patch, the split will be 2..63, 64..127, 128..191,
192..255, 256..257.  The patches also take the discard_alignment into

For ease of debugging, patch 1 adds a sysfs entry for discard_alignment.
Patch 2 adjusts the computation of the granularity-adjusted
max_discard_sectors so that it prepares for the new code in patch 3,
which 3 actually adjusts the split.

v1->v2: added patch 1, fixed line length

Paolo Bonzini (3):
  block: add sysfs entry for discard_alignment
  block: reorganize rounding of max_discard_sectors
  block: split discard into aligned requests

 block/blk-lib.c   |   41 ++++++++++++++++++++++++++++-------------
 block/blk-sysfs.c |   11 +++++++++++
 2 files changed, 39 insertions(+), 13 deletions(-)

<Prev in Thread] Current Thread [Next in Thread>