[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4] libxl: add option for discard support to xl disk configuration
On Thu, May 08, Ian Jackson wrote: > Olaf Hering writes ("[PATCH v4] libxl: add option for discard support to xl > disk configuration"): > > Handle new option discard=on|off for disk configuration. It is supposed > > to disable discard support if file based backing storage was > > intentionally created non-sparse to avoid fragmentation of the file. > > > > The option is a boolean and intended for the backend driver. A new > > boolean property "discard-enable" is written to the backend node. An > > upcoming patch for qemu will make use of this property. The kernel > > blkback driver may be updated as well to disable discard for phy based > > backing storage. > > Thanks. This is pretty good, but I have some minor comments and > questions: Thanks for the review. I sent v5, which contains this change compared to v4. Olaf docs/misc/xl-disk-configuration.txt | 22 ++++++++++++---------- tools/libxl/check-xl-disk-parse | 6 +++--- tools/libxl/libxl.c | 3 ++- tools/libxl/libxlu_disk.c | 3 +-- tools/libxl/libxlu_disk_l.l | 6 ++---- xen/include/public/io/blkif.h | 10 +++++----- 6 files changed, 25 insertions(+), 25 deletions(-) diff --git a/docs/misc/xl-disk-configuration.txt b/docs/misc/xl-disk-configuration.txt index e2a56f3..8421e8a 100644 --- a/docs/misc/xl-disk-configuration.txt +++ b/docs/misc/xl-disk-configuration.txt @@ -217,19 +217,21 @@ If in the future the bug is fixed properly this option will then be silently ignored. -discard=<boolean> +discard / no-discard --------------- -Description: Instruct backend to advertise discard support to frontend -Supported values: on, off, 0, 1 +Description: Request backend to advertise discard support to frontend +Supported values: discard + no-discard Mandatory: No -Default value: on - -This option is an advisory setting for the backend driver, depending on the -value, to advertise discard support (TRIM, UNMAP) to the frontend. The real -benefit of this option is to be able to force it off rather than on. It allows -to disable "hole punching" for file based backends which were intentionally -created non-sparse to avoid fragmentation of the file. +Default value: discard + +An advisory setting for the backend driver, specifying whether, to +advertise discard support (TRIM, UNMAP) to the frontend. The real +benefit of this option is to be able to force it off rather than on. It +can be used to disable "hole punching" for file based backends which +were intentionally created non-sparse to avoid fragmentation of the +file. ============================================ diff --git a/tools/libxl/check-xl-disk-parse b/tools/libxl/check-xl-disk-parse index c564e01..1bec4ca 100755 --- a/tools/libxl/check-xl-disk-parse +++ b/tools/libxl/check-xl-disk-parse @@ -240,8 +240,8 @@ disk: { } END -one 0 discard=off vdev=hda target=/some/disk/image.raw -one 0 discard=0 vdev=hda target=/some/disk/image.raw +one 0 discard vdev=hda target=/some/disk/image.raw +one 0 discard vdev=hda target=/some/disk/image.raw expected <<END disk: { @@ -260,6 +260,6 @@ disk: { } END -one 0 cdrom discard=off vdev=hda target=/some/disk/image.iso +one 0 cdrom no-discard vdev=hda target=/some/disk/image.iso complete diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 1b76a25..c3a9236 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -2477,7 +2477,8 @@ static void device_disk_add(libxl__egc *egc, uint32_t domid, flexarray_append(back, "1"); } flexarray_append_pair(back, "discard-enable", - libxl_defbool_val(disk->discard_enable) ? "1" : "0"); + libxl_defbool_val(disk->discard_enable) ? + "1" : "0"); flexarray_append(front, "backend-id"); flexarray_append(front, libxl__sprintf(gc, "%d", disk->backend_domid)); diff --git a/tools/libxl/libxlu_disk.c b/tools/libxl/libxlu_disk.c index 5827025..752a2c7 100644 --- a/tools/libxl/libxlu_disk.c +++ b/tools/libxl/libxlu_disk.c @@ -79,8 +79,7 @@ int xlu_disk_parse(XLU_Config *cfg, if (!disk->pdev_path || !strcmp(disk->pdev_path, "")) disk->format = LIBXL_DISK_FORMAT_EMPTY; } - if (libxl_defbool_is_default(disk->discard_enable)) - libxl_defbool_setdefault(&disk->discard_enable, !!disk->readwrite); + libxl_defbool_setdefault(&disk->discard_enable, !!disk->readwrite); if (!disk->vdev) { xlu__disk_err(&dpc,0, "no vdev specified"); diff --git a/tools/libxl/libxlu_disk_l.l b/tools/libxl/libxlu_disk_l.l index 7fb378a..1a5deb5 100644 --- a/tools/libxl/libxlu_disk_l.l +++ b/tools/libxl/libxlu_disk_l.l @@ -174,10 +174,8 @@ backendtype=[^,]*,? { STRIP(','); setbackendtype(DPC,FROMEQUALS); } vdev=[^,]*,? { STRIP(','); SAVESTRING("vdev", vdev, FROMEQUALS); } script=[^,]*,? { STRIP(','); SAVESTRING("script", script, FROMEQUALS); } direct-io-safe,? { DPC->disk->direct_io_safe = 1; } -discard=on,? { libxl_defbool_set(&DPC->disk->discard_enable, true); } -discard=1,? { libxl_defbool_set(&DPC->disk->discard_enable, true); } -discard=off,? { libxl_defbool_set(&DPC->disk->discard_enable, false); } -discard=0,? { libxl_defbool_set(&DPC->disk->discard_enable, false); } +discard,? { libxl_defbool_set(&DPC->disk->discard_enable, true); } +no-discard,? { libxl_defbool_set(&DPC->disk->discard_enable, false); } /* the target magic parameter, eats the rest of the string */ diff --git a/xen/include/public/io/blkif.h b/xen/include/public/io/blkif.h index 27a88ba..6baf7fb 100644 --- a/xen/include/public/io/blkif.h +++ b/xen/include/public/io/blkif.h @@ -201,11 +201,11 @@ * Values: 0/1 (boolean) * Default Value: 1 * - * This optional property, set by the toolstack, instructs the backend to - * offer discard to the frontend. If the property is missing the backend - * should offer discard if the backing storage actually supports it. The - * backend driver should ignore the property if the property is set but - * the backing storage does not support the feature. + * This optional property, set by the toolstack, instructs the backend + * to offer discard to the frontend. If the property is missing the + * backend should offer discard if the backing storage actually supports + * it. This optional property, set by the toolstack, requests that the + * backend offer, or not offer, discard to the frontend. * * discard-alignment * Values: <uint32_t> _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |