qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH for 2.1 V2] qemu-img info: show nocow info
@ 2014-07-08  3:08 Chunyan Liu
  2014-07-09  1:08 ` Eric Blake
  0 siblings, 1 reply; 3+ messages in thread
From: Chunyan Liu @ 2014-07-08  3:08 UTC (permalink / raw)
  To: qemu-devel; +Cc: Chunyan Liu, stefanha

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:
  - add documentation of "nocow" in qapi/block-core.json.

 block/qapi.c         | 25 +++++++++++++++++++++++++
 qapi/block-core.json |  5 ++++-
 2 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/block/qapi.c b/block/qapi.c
index f44f6b4..16ccf2f 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, "Set NOCOW flag: yes\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:
-- 
1.8.4.5

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [Qemu-devel] [PATCH for 2.1 V2] qemu-img info: show nocow info
  2014-07-08  3:08 [Qemu-devel] [PATCH for 2.1 V2] qemu-img info: show nocow info Chunyan Liu
@ 2014-07-09  1:08 ` Eric Blake
  2014-07-09  2:32   ` Chun Yan Liu
  0 siblings, 1 reply; 3+ messages in thread
From: Eric Blake @ 2014-07-09  1:08 UTC (permalink / raw)
  To: Chunyan Liu, qemu-devel; +Cc: stefanha

[-- Attachment #1: Type: text/plain, Size: 927 bytes --]

On 07/07/2014 09:08 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:
>   - add documentation of "nocow" in qapi/block-core.json.
> 

> @@ -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, "Set NOCOW flag: yes\n");

Reads awkwardly.  How about:

NOCOW flag: set

(and if we could reliably tell that the fs supports nocow but the flag
is clear, then we could have 'NOCOW flag: clear')

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 604 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Qemu-devel] [PATCH for 2.1 V2] qemu-img info: show nocow info
  2014-07-09  1:08 ` Eric Blake
@ 2014-07-09  2:32   ` Chun Yan Liu
  0 siblings, 0 replies; 3+ messages in thread
From: Chun Yan Liu @ 2014-07-09  2:32 UTC (permalink / raw)
  To: qemu-devel, Eric Blake; +Cc: stefanha



>>> On 7/9/2014 at 09:08 AM, in message <53BC9606.50903@redhat.com>, Eric Blake
<eblake@redhat.com> wrote: 
> On 07/07/2014 09:08 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: 
> >   - add documentation of "nocow" in qapi/block-core.json. 
> >  
>  
> > @@ -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, "Set NOCOW flag: yes\n"); 
>  
> Reads awkwardly.  How about: 
>  
> NOCOW flag: set 

Got it. Will Update. Thanks!

>  
> (and if we could reliably tell that the fs supports nocow but the flag 
> is clear, then we could have 'NOCOW flag: clear') 
>  
> --  
> Eric Blake   eblake redhat com    +1-919-301-3266 
> Libvirt virtualization library http://libvirt.org 
>  
>  

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2014-07-09  2:33 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-07-08  3:08 [Qemu-devel] [PATCH for 2.1 V2] qemu-img info: show nocow info Chunyan Liu
2014-07-09  1:08 ` Eric Blake
2014-07-09  2:32   ` Chun Yan Liu

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).