Message ID | 1404873793-7999-1-git-send-email-cyliu@suse.com |
---|---|
State | New |
Headers | show |
On 07/08/2014 08:43 PM, Chunyan Liu wrote: > Add nocow info in 'qemu-img info' output to show whether the file > currently has NOCOW flag set or not. > > Signed-off-by: Chunyan Liu <cyliu@suse.com> > --- > Changes: > - update output info to "NOCOW flag: set" > Reviewed-by: Eric Blake <eblake@redhat.com> counts as a completion of a new feature in 2.1
On Wed, Jul 09, 2014 at 10:43:13AM +0800, Chunyan Liu wrote: > Add nocow info in 'qemu-img info' output to show whether the file > currently has NOCOW flag set or not. > > Signed-off-by: Chunyan Liu <cyliu@suse.com> > --- > Changes: > - update output info to "NOCOW flag: set" > > block/qapi.c | 25 +++++++++++++++++++++++++ > qapi/block-core.json | 5 ++++- > 2 files changed, 29 insertions(+), 1 deletion(-) This patch was sent on July 9th, after the 2.1 soft freeze when we stop merging new features. Soft freeze was 17th of June. Please resend for QEMU 2.2 and update the qapi-schema.json version comment. Thanks, Stefan
On 07/28/2014 09:19 AM, Stefan Hajnoczi wrote: > On Wed, Jul 09, 2014 at 10:43:13AM +0800, Chunyan Liu wrote: >> Add nocow info in 'qemu-img info' output to show whether the file >> currently has NOCOW flag set or not. >> >> Signed-off-by: Chunyan Liu <cyliu@suse.com> >> --- >> Changes: >> - update output info to "NOCOW flag: set" >> >> block/qapi.c | 25 +++++++++++++++++++++++++ >> qapi/block-core.json | 5 ++++- >> 2 files changed, 29 insertions(+), 1 deletion(-) > > This patch was sent on July 9th, after the 2.1 soft freeze when we stop > merging new features. Soft freeze was 17th of June. > > Please resend for QEMU 2.2 and update the qapi-schema.json version > comment. There's still the argument that this is a bug fix for an incomplete implementation of a new feature that IS in qemu 2.1 (that is, 2.1 is adding the ability to set the nocow flag, but without this patch, that addition is a write-only interface, and this patch is correcting the bug to allow it to be a read-write interface). But it is fairly late in the game - what is the level of damage if 2.1 is released with a write-only setting, and this patch is deferred to 2.2? Without some strong justification, I can agree with the decision to postpone this patch.
On Mon, Jul 28, 2014 at 12:58:33PM -0600, Eric Blake wrote: > On 07/28/2014 09:19 AM, Stefan Hajnoczi wrote: > > On Wed, Jul 09, 2014 at 10:43:13AM +0800, Chunyan Liu wrote: > >> Add nocow info in 'qemu-img info' output to show whether the file > >> currently has NOCOW flag set or not. > >> > >> Signed-off-by: Chunyan Liu <cyliu@suse.com> > >> --- > >> Changes: > >> - update output info to "NOCOW flag: set" > >> > >> block/qapi.c | 25 +++++++++++++++++++++++++ > >> qapi/block-core.json | 5 ++++- > >> 2 files changed, 29 insertions(+), 1 deletion(-) > > > > This patch was sent on July 9th, after the 2.1 soft freeze when we stop > > merging new features. Soft freeze was 17th of June. > > > > Please resend for QEMU 2.2 and update the qapi-schema.json version > > comment. > > There's still the argument that this is a bug fix for an incomplete > implementation of a new feature that IS in qemu 2.1 (that is, 2.1 is > adding the ability to set the nocow flag, but without this patch, that > addition is a write-only interface, and this patch is correcting the bug > to allow it to be a read-write interface). > > But it is fairly late in the game - what is the level of damage if 2.1 > is released with a write-only setting, and this patch is deferred to > 2.2? Without some strong justification, I can agree with the decision > to postpone this patch. You can use lsattr(1), so I see no critical need. Stefan
diff --git a/block/qapi.c b/block/qapi.c index f44f6b4..aa53f19 100644 --- a/block/qapi.c +++ b/block/qapi.c @@ -28,6 +28,13 @@ #include "qapi-visit.h" #include "qapi/qmp-output-visitor.h" #include "qapi/qmp/types.h" +#ifdef __linux__ +#include <linux/fs.h> +#include <sys/ioctl.h> +#ifndef FS_NOCOW_FL +#define FS_NOCOW_FL 0x00800000 /* Do not cow file */ +#endif +#endif BlockDeviceInfo *bdrv_block_device_info(BlockDriverState *bs) { @@ -173,6 +180,20 @@ void bdrv_query_image_info(BlockDriverState *bs, Error *err = NULL; ImageInfo *info = g_new0(ImageInfo, 1); +#ifdef __linux__ + int fd, attr; + + /* get NOCOW info */ + fd = qemu_open(bs->filename, O_RDONLY | O_NONBLOCK); + if (fd >= 0) { + if (ioctl(fd, FS_IOC_GETFLAGS, &attr) == 0 && (attr & FS_NOCOW_FL)) { + info->has_nocow = true; + info->nocow = true; + } + qemu_close(fd); + } +#endif + bdrv_get_geometry(bs, &total_sectors); info->filename = g_strdup(bs->filename); @@ -625,4 +646,8 @@ void bdrv_image_info_dump(fprintf_function func_fprintf, void *f, func_fprintf(f, "Format specific information:\n"); bdrv_image_info_specific_dump(func_fprintf, f, info->format_specific); } + + if (info->has_nocow && info->nocow) { + func_fprintf(f, "NOCOW flag: set\n"); + } } diff --git a/qapi/block-core.json b/qapi/block-core.json index e378653..deb785b 100644 --- a/qapi/block-core.json +++ b/qapi/block-core.json @@ -115,6 +115,8 @@ # @format-specific: #optional structure supplying additional format-specific # information (since 1.7) # +# @nocow: #optional info of whether NOCOW flag is set or not. (since 2.1) +# # Since: 1.3 # ## @@ -126,7 +128,8 @@ '*backing-filename': 'str', '*full-backing-filename': 'str', '*backing-filename-format': 'str', '*snapshots': ['SnapshotInfo'], '*backing-image': 'ImageInfo', - '*format-specific': 'ImageInfoSpecific' } } + '*format-specific': 'ImageInfoSpecific', + '*nocow': 'bool' } } ## # @ImageCheck:
Add nocow info in 'qemu-img info' output to show whether the file currently has NOCOW flag set or not. Signed-off-by: Chunyan Liu <cyliu@suse.com> --- Changes: - update output info to "NOCOW flag: set" block/qapi.c | 25 +++++++++++++++++++++++++ qapi/block-core.json | 5 ++++- 2 files changed, 29 insertions(+), 1 deletion(-)