* [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 a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).