Message ID | 1466721446-27737-17-git-send-email-eblake@redhat.com |
---|---|
State | New |
Headers | show |
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 >
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 --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
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(-)