[dm-devel] [PATCH 5/6] devmapper: do not flush I/O for DM_DEVICE_CREATE
Benjamin Marzinski
bmarzins at redhat.com
Fri May 6 20:18:29 UTC 2016
On Wed, May 04, 2016 at 07:57:29AM +0200, Hannes Reinecke wrote:
> DM_DEVICE_CREATE loads a new table, so there cannot be any
> I/O pending. Hence we should be setting the 'no flush'
> and 'skip lockfs' flag to avoid delays during creation.
ACK
-Ben
>
> Signed-off-by: Hannes Reinecke <hare at suse.de>
> ---
> libmultipath/devmapper.c | 25 ++++++++++++++++---------
> 1 file changed, 16 insertions(+), 9 deletions(-)
>
> diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c
> index 04dcb72..0ae72fc 100644
> --- a/libmultipath/devmapper.c
> +++ b/libmultipath/devmapper.c
> @@ -294,16 +294,23 @@ dm_addmap (int task, const char *target, struct multipath *mpp,
> if (ro)
> dm_task_set_ro(dmt);
>
> - if ((task == DM_DEVICE_CREATE) && strlen(mpp->wwid) > 0){
> - prefixed_uuid = MALLOC(UUID_PREFIX_LEN + strlen(mpp->wwid) + 1);
> - if (!prefixed_uuid) {
> - condlog(0, "cannot create prefixed uuid : %s",
> - strerror(errno));
> - goto addout;
> + if (task == DM_DEVICE_CREATE) {
> + if (strlen(mpp->wwid) > 0) {
> + prefixed_uuid = MALLOC(UUID_PREFIX_LEN +
> + strlen(mpp->wwid) + 1);
> + if (!prefixed_uuid) {
> + condlog(0, "cannot create prefixed uuid : %s",
> + strerror(errno));
> + goto addout;
> + }
> + sprintf(prefixed_uuid, UUID_PREFIX "%s", mpp->wwid);
> + if (!dm_task_set_uuid(dmt, prefixed_uuid))
> + goto freeout;
> }
> - sprintf(prefixed_uuid, UUID_PREFIX "%s", mpp->wwid);
> - if (!dm_task_set_uuid(dmt, prefixed_uuid))
> - goto freeout;
> + dm_task_skip_lockfs(dmt);
> +#ifdef LIBDM_API_FLUSH
> + dm_task_no_flush(dmt);
> +#endif
> }
>
> if (mpp->attribute_flags & (1 << ATTR_MODE) &&
> --
> 2.6.6
More information about the dm-devel
mailing list