diff mbox

[v3,16/22] block: Wording tweaks to write zeroes limits

Message ID 1466721446-27737-17-git-send-email-eblake@redhat.com
State New
Headers show

Commit Message

Eric Blake June 23, 2016, 10:37 p.m. UTC
Improve the documentation of the write zeroes limits, to mention
additional constraints that drivers should observe.  Worth squashing
into commit cf081fca, if that hadn't been pushed already :)

Signed-off-by: Eric Blake <eblake@redhat.com>

---
v3: new patch, split off from "block: Switch discard length bounds..."
---
 include/block/block_int.h | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

Comments

Fam Zheng June 24, 2016, 6:12 a.m. UTC | #1
On Thu, 06/23 16:37, Eric Blake wrote:
> Improve the documentation of the write zeroes limits, to mention
> additional constraints that drivers should observe.  Worth squashing
> into commit cf081fca, if that hadn't been pushed already :)
> 
> Signed-off-by: Eric Blake <eblake@redhat.com>
> 
> ---
> v3: new patch, split off from "block: Switch discard length bounds..."
> ---
>  include/block/block_int.h | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/include/block/block_int.h b/include/block/block_int.h
> index 7d2b152..7a4a00f 100644
> --- a/include/block/block_int.h
> +++ b/include/block/block_int.h
> @@ -331,11 +331,14 @@ typedef struct BlockLimits {
>      int64_t discard_alignment;
> 
>      /* maximum number of bytes that can zeroized at once (since it is
> -     * signed, it must be < 2G, if set) */
> +     * signed, it must be < 2G, if set), should be multiple of
> +     * pwrite_zeroes_alignment. May be 0 if no inherent 32-bit limit */

"inherent 32-bit limit"? What is special about 32-bit other than this field is
32-bit? Anyway,

Reviewed-by: Fam Zheng <famz@redhat.com>

>      int32_t max_pwrite_zeroes;
> 
>      /* optimal alignment for write zeroes requests in bytes, must be
> -     * power of 2, and less than max_pwrite_zeroes if that is set */
> +     * power of 2, less than max_pwrite_zeroes if that is set, and
> +     * multiple of bs->request_alignment. May be 0 if
> +     * bs->request_alignment is good enough */
>      uint32_t pwrite_zeroes_alignment;
> 
>      /* optimal transfer length in bytes (must be power of 2, and
> -- 
> 2.5.5
>
Eric Blake June 24, 2016, 2:10 p.m. UTC | #2
On 06/24/2016 12:12 AM, Fam Zheng wrote:
> On Thu, 06/23 16:37, Eric Blake wrote:
>> Improve the documentation of the write zeroes limits, to mention
>> additional constraints that drivers should observe.  Worth squashing
>> into commit cf081fca, if that hadn't been pushed already :)
>>
>> Signed-off-by: Eric Blake <eblake@redhat.com>
>>
>> ---
>> v3: new patch, split off from "block: Switch discard length bounds..."
>> ---
>>  include/block/block_int.h | 7 +++++--
>>  1 file changed, 5 insertions(+), 2 deletions(-)
>>
>> diff --git a/include/block/block_int.h b/include/block/block_int.h
>> index 7d2b152..7a4a00f 100644
>> --- a/include/block/block_int.h
>> +++ b/include/block/block_int.h
>> @@ -331,11 +331,14 @@ typedef struct BlockLimits {
>>      int64_t discard_alignment;
>>
>>      /* maximum number of bytes that can zeroized at once (since it is
>> -     * signed, it must be < 2G, if set) */
>> +     * signed, it must be < 2G, if set), should be multiple of
>> +     * pwrite_zeroes_alignment. May be 0 if no inherent 32-bit limit */
> 
> "inherent 32-bit limit"? What is special about 32-bit other than this field is
> 32-bit? Anyway,
> 
> Reviewed-by: Fam Zheng <famz@redhat.com>

Someday, we may want to bump it up to a 64-bit field, and convert the
driver callback for write_zeroes to take a 64-bit size.  But first we'd
have to audit to make sure all drivers properly advertise their maximum
(for example, NBD is still hard-coded to a 32-bit maximum write_zeroes,
even if the callback would permit a 64-bit size).
diff mbox

Patch

diff --git a/include/block/block_int.h b/include/block/block_int.h
index 7d2b152..7a4a00f 100644
--- a/include/block/block_int.h
+++ b/include/block/block_int.h
@@ -331,11 +331,14 @@  typedef struct BlockLimits {
     int64_t discard_alignment;

     /* maximum number of bytes that can zeroized at once (since it is
-     * signed, it must be < 2G, if set) */
+     * signed, it must be < 2G, if set), should be multiple of
+     * pwrite_zeroes_alignment. May be 0 if no inherent 32-bit limit */
     int32_t max_pwrite_zeroes;

     /* optimal alignment for write zeroes requests in bytes, must be
-     * power of 2, and less than max_pwrite_zeroes if that is set */
+     * power of 2, less than max_pwrite_zeroes if that is set, and
+     * multiple of bs->request_alignment. May be 0 if
+     * bs->request_alignment is good enough */
     uint32_t pwrite_zeroes_alignment;

     /* optimal transfer length in bytes (must be power of 2, and