* [PATCH 0/1] LUKS: Fix error message when underlying fs don't support large enough files @ 2020-04-16 9:50 Maxim Levitsky 2020-04-16 9:50 ` [PATCH 1/1] block/crypto: better error message when creating too large files Maxim Levitsky 2020-04-16 9:54 ` [PATCH 0/1] LUKS: Fix error message when underlying fs don't support large enough files Maxim Levitsky 0 siblings, 2 replies; 5+ messages in thread From: Maxim Levitsky @ 2020-04-16 9:50 UTC (permalink / raw) To: qemu-devel; +Cc: Kevin Wolf, Maxim Levitsky, qemu-block, Max Reitz This is a repost of the same trivial patch I already, which fell through the cracks. Could someone queue it up so I close the bugzilla I have for this? Best regards, Maxim Levitsky Maxim Levitsky (1): block/crypto: better error message when creating too large files block/crypto.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) -- 2.17.2 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/1] block/crypto: better error message when creating too large files 2020-04-16 9:50 [PATCH 0/1] LUKS: Fix error message when underlying fs don't support large enough files Maxim Levitsky @ 2020-04-16 9:50 ` Maxim Levitsky 2020-04-20 9:02 ` Kevin Wolf 2020-04-16 9:54 ` [PATCH 0/1] LUKS: Fix error message when underlying fs don't support large enough files Maxim Levitsky 1 sibling, 1 reply; 5+ messages in thread From: Maxim Levitsky @ 2020-04-16 9:50 UTC (permalink / raw) To: qemu-devel; +Cc: Kevin Wolf, Maxim Levitsky, qemu-block, Max Reitz Currently if you attampt to create too large file with luks you get the following error message: Formatting 'test.luks', fmt=luks size=17592186044416 key-secret=sec0 qemu-img: test.luks: Could not resize file: File too large While for raw format the error message is qemu-img: test.img: The image size is too large for file format 'raw' The reason for this is that qemu-img checks for errno of the failure, and presents the later error when it is -EFBIG However crypto generic code 'swallows' the errno and replaces it with -EIO. As an attempt to make it better, we can make luks driver, detect -EFBIG and in this case present a better error message, which is what this patch does The new error message is: qemu-img: error creating test.luks: The requested file size is too large Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1534898 Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> --- block/crypto.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/block/crypto.c b/block/crypto.c index d577f89659..1b604beb30 100644 --- a/block/crypto.c +++ b/block/crypto.c @@ -104,18 +104,35 @@ static ssize_t block_crypto_init_func(QCryptoBlock *block, Error **errp) { struct BlockCryptoCreateData *data = opaque; + Error *local_error = NULL; + int ret; if (data->size > INT64_MAX || headerlen > INT64_MAX - data->size) { - error_setg(errp, "The requested file size is too large"); - return -EFBIG; + ret = -EFBIG; + goto error; } /* User provided size should reflect amount of space made * available to the guest, so we must take account of that * which will be used by the crypto header */ - return blk_truncate(data->blk, data->size + headerlen, false, + ret = blk_truncate(data->blk, data->size + headerlen, false, data->prealloc, errp); + + if (ret >= 0) { + return ret; + } + +error: + if (ret == -EFBIG) { + /* Replace the error message with a better one */ + error_free(local_error); + error_setg(errp, "The requested file size is too large"); + } else { + error_propagate(errp, local_error); + } + + return ret; } -- 2.17.2 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/1] block/crypto: better error message when creating too large files 2020-04-16 9:50 ` [PATCH 1/1] block/crypto: better error message when creating too large files Maxim Levitsky @ 2020-04-20 9:02 ` Kevin Wolf 2020-04-20 9:16 ` Maxim Levitsky 0 siblings, 1 reply; 5+ messages in thread From: Kevin Wolf @ 2020-04-20 9:02 UTC (permalink / raw) To: Maxim Levitsky; +Cc: qemu-devel, qemu-block, Max Reitz Am 16.04.2020 um 11:50 hat Maxim Levitsky geschrieben: > Currently if you attampt to create too large file with luks you > get the following error message: > > Formatting 'test.luks', fmt=luks size=17592186044416 key-secret=sec0 > qemu-img: test.luks: Could not resize file: File too large > > While for raw format the error message is > qemu-img: test.img: The image size is too large for file format 'raw' > > > The reason for this is that qemu-img checks for errno of the failure, > and presents the later error when it is -EFBIG > > However crypto generic code 'swallows' the errno and replaces it > with -EIO. > > As an attempt to make it better, we can make luks driver, > detect -EFBIG and in this case present a better error message, > which is what this patch does > > The new error message is: > > qemu-img: error creating test.luks: The requested file size is too large > > Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1534898 > Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com> > Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> > --- > block/crypto.c | 23 ++++++++++++++++++++--- > 1 file changed, 20 insertions(+), 3 deletions(-) > > diff --git a/block/crypto.c b/block/crypto.c > index d577f89659..1b604beb30 100644 > --- a/block/crypto.c > +++ b/block/crypto.c > @@ -104,18 +104,35 @@ static ssize_t block_crypto_init_func(QCryptoBlock *block, > Error **errp) > { > struct BlockCryptoCreateData *data = opaque; > + Error *local_error = NULL; > + int ret; > > if (data->size > INT64_MAX || headerlen > INT64_MAX - data->size) { > - error_setg(errp, "The requested file size is too large"); > - return -EFBIG; > + ret = -EFBIG; > + goto error; > } > > /* User provided size should reflect amount of space made > * available to the guest, so we must take account of that > * which will be used by the crypto header > */ > - return blk_truncate(data->blk, data->size + headerlen, false, > + ret = blk_truncate(data->blk, data->size + headerlen, false, > data->prealloc, errp); I think you intended to use &local_error (which is by the way spelt local_err in most other places) here instead of passing errp and never assigning local_err at all. Kevin > + > + if (ret >= 0) { > + return ret; > + } > + > +error: > + if (ret == -EFBIG) { > + /* Replace the error message with a better one */ > + error_free(local_error); > + error_setg(errp, "The requested file size is too large"); > + } else { > + error_propagate(errp, local_error); > + } > + > + return ret; > } > > > -- > 2.17.2 > ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/1] block/crypto: better error message when creating too large files 2020-04-20 9:02 ` Kevin Wolf @ 2020-04-20 9:16 ` Maxim Levitsky 0 siblings, 0 replies; 5+ messages in thread From: Maxim Levitsky @ 2020-04-20 9:16 UTC (permalink / raw) To: Kevin Wolf; +Cc: qemu-devel, qemu-block, Max Reitz On Mon, 2020-04-20 at 11:02 +0200, Kevin Wolf wrote: > Am 16.04.2020 um 11:50 hat Maxim Levitsky geschrieben: > > Currently if you attampt to create too large file with luks you > > get the following error message: > > > > Formatting 'test.luks', fmt=luks size=17592186044416 key-secret=sec0 > > qemu-img: test.luks: Could not resize file: File too large > > > > While for raw format the error message is > > qemu-img: test.img: The image size is too large for file format 'raw' > > > > > > The reason for this is that qemu-img checks for errno of the failure, > > and presents the later error when it is -EFBIG > > > > However crypto generic code 'swallows' the errno and replaces it > > with -EIO. > > > > As an attempt to make it better, we can make luks driver, > > detect -EFBIG and in this case present a better error message, > > which is what this patch does > > > > The new error message is: > > > > qemu-img: error creating test.luks: The requested file size is too large > > > > Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1534898 > > Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com> > > Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> > > --- > > block/crypto.c | 23 ++++++++++++++++++++--- > > 1 file changed, 20 insertions(+), 3 deletions(-) > > > > diff --git a/block/crypto.c b/block/crypto.c > > index d577f89659..1b604beb30 100644 > > --- a/block/crypto.c > > +++ b/block/crypto.c > > @@ -104,18 +104,35 @@ static ssize_t block_crypto_init_func(QCryptoBlock *block, > > Error **errp) > > { > > struct BlockCryptoCreateData *data = opaque; > > + Error *local_error = NULL; > > + int ret; > > > > if (data->size > INT64_MAX || headerlen > INT64_MAX - data->size) { > > - error_setg(errp, "The requested file size is too large"); > > - return -EFBIG; > > + ret = -EFBIG; > > + goto error; > > } > > > > /* User provided size should reflect amount of space made > > * available to the guest, so we must take account of that > > * which will be used by the crypto header > > */ > > - return blk_truncate(data->blk, data->size + headerlen, false, > > + ret = blk_truncate(data->blk, data->size + headerlen, false, > > data->prealloc, errp); > > I think you intended to use &local_error (which is by the way spelt > local_err in most other places) here instead of passing errp and never > assigning local_err at all. Absolutely. This is very old patch that I used to keep with the LUKs patchset, and I remember I rebased it few times. I probably didn't fix a conflict correctly or so. Best regards, Maxim Levitsky > > Kevin > > > + > > + if (ret >= 0) { > > + return ret; > > + } > > + > > +error: > > + if (ret == -EFBIG) { > > + /* Replace the error message with a better one */ > > + error_free(local_error); > > + error_setg(errp, "The requested file size is too large"); > > + } else { > > + error_propagate(errp, local_error); > > + } > > + > > + return ret; > > } > > > > > > -- > > 2.17.2 > > ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 0/1] LUKS: Fix error message when underlying fs don't support large enough files 2020-04-16 9:50 [PATCH 0/1] LUKS: Fix error message when underlying fs don't support large enough files Maxim Levitsky 2020-04-16 9:50 ` [PATCH 1/1] block/crypto: better error message when creating too large files Maxim Levitsky @ 2020-04-16 9:54 ` Maxim Levitsky 1 sibling, 0 replies; 5+ messages in thread From: Maxim Levitsky @ 2020-04-16 9:54 UTC (permalink / raw) To: qemu-devel; +Cc: Kevin Wolf, qemu-block, Max Reitz On Thu, 2020-04-16 at 12:50 +0300, Maxim Levitsky wrote: > This is a repost of the same trivial patch I already, which fell through the cracks. > Could someone queue it up so I close the bugzilla I have for this? I a word - need more coffee :-) I mean I already posted this patch few months ago but it was forgotten, due to merge window/etc. Best regards, Maxim Levitsky > > Best regards, > Maxim Levitsky > > Maxim Levitsky (1): > block/crypto: better error message when creating too large files > > block/crypto.c | 23 ++++++++++++++++++++--- > 1 file changed, 20 insertions(+), 3 deletions(-) > ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-04-20 9:18 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2020-04-16 9:50 [PATCH 0/1] LUKS: Fix error message when underlying fs don't support large enough files Maxim Levitsky 2020-04-16 9:50 ` [PATCH 1/1] block/crypto: better error message when creating too large files Maxim Levitsky 2020-04-20 9:02 ` Kevin Wolf 2020-04-20 9:16 ` Maxim Levitsky 2020-04-16 9:54 ` [PATCH 0/1] LUKS: Fix error message when underlying fs don't support large enough files Maxim Levitsky
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.