<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Oct 8, 2010, at 12:53 PM, Peter Jones wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>This makes it possible to use DM_DEV_RENAME to add a uuid to a device so<br>long as one has not been previously set either with DM_DEV_CREATE or<br>with DM_DEV_RENAME. This is proposed as a fix to rhbz#584328 .<br><br>Also bump the minor number to 19.<br><br>Includes changes suggested by jbrassow.<br>---<br> drivers/md/dm-ioctl.c    |  112 ++++++++++++++++++++++++++++++++-------------<br> include/linux/dm-ioctl.h |    9 +++-<br> 2 files changed, 86 insertions(+), 35 deletions(-)<br><br>diff --git a/drivers/md/dm-ioctl.c b/drivers/md/dm-ioctl.c<br>index 3e39193..450dfe3 100644<br>--- a/drivers/md/dm-ioctl.c<br>+++ b/drivers/md/dm-ioctl.c<br>@@ -298,7 +298,7 @@ retry:<br> static struct mapped_device *dm_hash_rename(struct dm_ioctl *param,<br> <span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>    const char *new)<br> {<br>-<span class="Apple-tab-span" style="white-space:pre">  </span>char *new_name, *old_name;<br>+<span class="Apple-tab-span" style="white-space:pre">       </span>char *new_data, *old_data;<br> <span class="Apple-tab-span" style="white-space:pre">       </span>struct hash_cell *hc;<br> <span class="Apple-tab-span" style="white-space:pre">    </span>struct dm_table *table;<br> <span class="Apple-tab-span" style="white-space:pre">  </span>struct mapped_device *md;<br>@@ -306,8 +306,8 @@ static struct mapped_device *dm_hash_rename(struct dm_ioctl *param,<br> <span class="Apple-tab-span" style="white-space:pre">       </span>/*<br> <span class="Apple-tab-span" style="white-space:pre">       </span> * duplicate new.<br> <span class="Apple-tab-span" style="white-space:pre">        </span> */<br>-<span class="Apple-tab-span" style="white-space:pre">      </span>new_name = kstrdup(new, GFP_KERNEL);<br>-<span class="Apple-tab-span" style="white-space:pre">     </span>if (!new_name)<br>+<span class="Apple-tab-span" style="white-space:pre">   </span>new_data = kstrdup(new, GFP_KERNEL);<br>+<span class="Apple-tab-span" style="white-space:pre">     </span>if (!new_data)<br> <span class="Apple-tab-span" style="white-space:pre">   </span><span class="Apple-tab-span" style="white-space:pre">    </span>return ERR_PTR(-ENOMEM);<br><br> <span class="Apple-tab-span" style="white-space:pre">       </span>down_write(&_hash_lock);<br>@@ -315,14 +315,28 @@ static struct mapped_device *dm_hash_rename(struct dm_ioctl *param,<br> <span class="Apple-tab-span" style="white-space:pre">  </span>/*<br> <span class="Apple-tab-span" style="white-space:pre">       </span> * Is new free ?<br> <span class="Apple-tab-span" style="white-space:pre"> </span> */<br>-<span class="Apple-tab-span" style="white-space:pre">      </span>hc = __get_name_cell(new);<br>-<span class="Apple-tab-span" style="white-space:pre">       </span>if (hc) {<br>-<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span>DMWARN("asked to rename to an already-existing name %s -> %s",<br>-<span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span>       param->name, new);<br>-<span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span>dm_put(hc->md);<br>-<span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span>up_write(&_hash_lock);<br>-<span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span>kfree(new_name);<br>-<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span>return ERR_PTR(-EBUSY);<br>+<span class="Apple-tab-span" style="white-space:pre">  </span>if (param->flags & DM_NEW_UUID_FLAG) {<br>+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>hc = __get_uuid_cell(new);<br>+<span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span>if (hc) {<br>+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>DMWARN("Unable to change uuid on device with an "<br>+<span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>       "already-existing uuid %s -> %s",<br>+<span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>       param->name, new);<br>+<span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>dm_put(hc->md);<br>+<span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>up_write(&_hash_lock);<br>+<span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>kfree(new_data);<br>+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>return ERR_PTR(-EBUSY);<br>+<span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span>}<br>+<span class="Apple-tab-span" style="white-space:pre">        </span>} else {<br>+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span>hc = __get_name_cell(new);<br>+<span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span>if (hc) {<br>+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>DMWARN("asked to rename to an already-existing name "<br>+<span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>       "%s -> %s",<br>+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>       param->name, new);<br>+<span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>dm_put(hc->md);<br>+<span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>up_write(&_hash_lock);<br>+<span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>kfree(new_data);<br>+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>return ERR_PTR(-EBUSY);<br>+<span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span>}<br> <span class="Apple-tab-span" style="white-space:pre">        </span>}<br></div></blockquote><div><br></div><blockquote type="cite"><div><font class="Apple-style-span" color="#000000"><br></font> <span class="Apple-tab-span" style="white-space:pre">     </span>/*<br>@@ -333,19 +347,42 @@ static struct mapped_device *dm_hash_rename(struct dm_ioctl *param,<br> <span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>DMWARN("asked to rename a non-existent device %s -> %s",<br> <span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>       param->name, new);<br> <span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span>up_write(&_hash_lock);<br>-<span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span>kfree(new_name);<br>+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span>kfree(new_data);<br> <span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span>return ERR_PTR(-ENXIO);<br> <span class="Apple-tab-span" style="white-space:pre">  </span>}<br><br>-<span class="Apple-tab-span" style="white-space:pre">      </span>/*<br>-<span class="Apple-tab-span" style="white-space:pre">       </span> * rename and move the name cell.<br>-<span class="Apple-tab-span" style="white-space:pre">        </span> */<br>-<span class="Apple-tab-span" style="white-space:pre">      </span>list_del(&hc->name_list);<br>-<span class="Apple-tab-span" style="white-space:pre"> </span>old_name = hc->name;<br>-<span class="Apple-tab-span" style="white-space:pre">  </span>mutex_lock(&dm_hash_cells_mutex);<br>-<span class="Apple-tab-span" style="white-space:pre">    </span>hc->name = new_name;<br>-<span class="Apple-tab-span" style="white-space:pre">  </span>mutex_unlock(&dm_hash_cells_mutex);<br>-<span class="Apple-tab-span" style="white-space:pre">  </span>list_add(&hc->name_list, _name_buckets + hash_str(new_name));<br>+<span class="Apple-tab-span" style="white-space:pre">     </span>if (param->flags & DM_NEW_UUID_FLAG) {<br>+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>/*<br>+<span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span> * Does this device already have a uuid?<br>+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span> */<br>+<span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span>if (hc->uuid) {<br>+<span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>DMWARN("asked to change uuid of device with uuid "<br>+<span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>       "already set %s %s -> %s",<br>+<span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>       param->name, hc->uuid, param->uuid);<br>+<span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>up_write(&_hash_lock);<br>+<span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>kfree(new_data);<br>+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>return ERR_PTR(-EINVAL);<br>+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span>}<br>+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span>/*<br>+<span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span> * reuuid and move the uuid cell.<br>+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span> */<br>+<span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span>list_del(&hc->uuid_list);<br>+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span>old_data = hc->uuid;<br>+<span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span>mutex_lock(&dm_hash_cells_mutex);<br>+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>hc->uuid = new_data;<br>+<span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span>mutex_unlock(&dm_hash_cells_mutex);<br>+<span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span>list_add(&hc->uuid_list, _uuid_buckets + hash_str(new_data));<br>+<span class="Apple-tab-span" style="white-space:pre">     </span>} else {<br>+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span>/*<br>+<span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span> * rename and move the name cell.<br>+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span> */<br>+<span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span>list_del(&hc->name_list);<br>+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span>old_data = hc->name;<br>+<span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span>mutex_lock(&dm_hash_cells_mutex);<br>+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>hc->name = new_data;<br>+<span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span>mutex_unlock(&dm_hash_cells_mutex);<br>+<span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span>list_add(&hc->name_list, _name_buckets + hash_str(new_data));<br>+<span class="Apple-tab-span" style="white-space:pre">     </span>}<br><br> <span class="Apple-tab-span" style="white-space:pre">      </span>/*<br> <span class="Apple-tab-span" style="white-space:pre">       </span> * Wake up any dm event waiters.<br>@@ -361,7 +398,7 @@ static struct mapped_device *dm_hash_rename(struct dm_ioctl *param,<br><br> <span class="Apple-tab-span" style="white-space:pre">      </span>md = hc->md;<br> <span class="Apple-tab-span" style="white-space:pre">  </span>up_write(&_hash_lock);<br>-<span class="Apple-tab-span" style="white-space:pre">       </span>kfree(old_name);<br>+<span class="Apple-tab-span" style="white-space:pre"> </span>kfree(old_data);<br><br> <span class="Apple-tab-span" style="white-space:pre">       </span>return md;<br> }<br>@@ -774,21 +811,30 @@ static int invalid_str(char *str, void *end)<br> static int dev_rename(struct dm_ioctl *param, size_t param_size)<br> {<br> <span class="Apple-tab-span" style="white-space:pre">        </span>int r;<br>-<span class="Apple-tab-span" style="white-space:pre">   </span>char *new_name = (char *) param + param->data_start;<br>+<span class="Apple-tab-span" style="white-space:pre">  </span>char *new_data = (char *) param + param->data_start;<br> <span class="Apple-tab-span" style="white-space:pre">  </span>struct mapped_device *md;<br><br>-<span class="Apple-tab-span" style="white-space:pre">      </span>if (new_name < param->data ||<br>-<span class="Apple-tab-span" style="white-space:pre">      </span>    invalid_str(new_name, (void *) param + param_size) ||<br>-<span class="Apple-tab-span" style="white-space:pre"> </span>    strlen(new_name) > DM_NAME_LEN - 1) {<br>-<span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span>DMWARN("Invalid new logical volume name supplied.");<br>-<span class="Apple-tab-span" style="white-space:pre">   </span><span class="Apple-tab-span" style="white-space:pre">    </span>return -EINVAL;<br>-<span class="Apple-tab-span" style="white-space:pre">  </span>}<br>+<span class="Apple-tab-span" style="white-space:pre">        </span>if (param->flags & DM_NEW_UUID_FLAG) {<br>+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>if (new_data < param->data ||<br>+<span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span>    invalid_str(new_data, (void *) param + param_size) ||<br>+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span>    strlen(new_data) > DM_UUID_LEN - 1) {<br>+<span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>DMWARN("Invalid new device uuid supplied.");<br>+<span class="Apple-tab-span" style="white-space:pre">   </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>return -EINVAL;<br>+<span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span>}<br>+<span class="Apple-tab-span" style="white-space:pre">        </span>} else {<br>+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span>if (new_data < param->data ||<br>+<span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span>    invalid_str(new_data, (void *) param + param_size) ||<br>+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span>    strlen(new_data) > DM_NAME_LEN - 1) {<br>+<span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>DMWARN("Invalid new device name supplied.");<br>+<span class="Apple-tab-span" style="white-space:pre">   </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>return -EINVAL;<br>+<span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span>}<br><br>-<span class="Apple-tab-span" style="white-space:pre">      </span>r = check_name(new_name);<br>-<span class="Apple-tab-span" style="white-space:pre">        </span>if (r)<br>-<span class="Apple-tab-span" style="white-space:pre">   </span><span class="Apple-tab-span" style="white-space:pre">    </span>return r;<br>+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span>r = check_name(new_data);<br>+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span>if (r)<br>+<span class="Apple-tab-span" style="white-space:pre">   </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>return r;<br>+<span class="Apple-tab-span" style="white-space:pre">        </span>}<br><br>-<span class="Apple-tab-span" style="white-space:pre">      </span>md = dm_hash_rename(param, new_name);<br>+<span class="Apple-tab-span" style="white-space:pre">    </span>md = dm_hash_rename(param, new_data);<br> <span class="Apple-tab-span" style="white-space:pre">    </span>if (IS_ERR(md))<br> <span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span>return PTR_ERR(md);<br><br>diff --git a/include/linux/dm-ioctl.h b/include/linux/dm-ioctl.h<br>index 49eab36..e369460 100644<br>--- a/include/linux/dm-ioctl.h<br>+++ b/include/linux/dm-ioctl.h<br>@@ -267,9 +267,9 @@ enum {<br> #define DM_DEV_SET_GEOMETRY<span class="Apple-tab-span" style="white-space:pre">    </span>_IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl)<br><br> #define DM_VERSION_MAJOR<span class="Apple-tab-span" style="white-space:pre">      </span>4<br>-#define DM_VERSION_MINOR<span class="Apple-tab-span" style="white-space:pre">        </span>18<br>+#define DM_VERSION_MINOR<span class="Apple-tab-span" style="white-space:pre">       </span>19<br> #define DM_VERSION_PATCHLEVEL<span class="Apple-tab-span" style="white-space:pre">  </span>0<br>-#define DM_VERSION_EXTRA<span class="Apple-tab-span" style="white-space:pre">        </span>"-ioctl (2010-06-29)"<br>+#define DM_VERSION_EXTRA<span class="Apple-tab-span" style="white-space:pre">  </span>"-ioctl (2010-10-07)"<br><br> /* Status bits */<br> #define DM_READONLY_FLAG<span class="Apple-tab-span" style="white-space:pre">    </span>(1 << 0) /* In/Out */<br>@@ -322,4 +322,9 @@ enum {<br>  */<br> #define DM_UEVENT_GENERATED_FLAG<span class="Apple-tab-span" style="white-space:pre">       </span>(1 << 13) /* Out */<br><br>+/*<br>+ * If set, rename operates on uuid, not name.<br>+ */<br>+#define DM_NEW_UUID_FLAG        (1 << 14) /* In */<br>+<br> #endif<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>/* _LINUX_DM_IOCTL_H */<br>-- <br>1.7.2.2<br><br>--<br>dm-devel mailing list<br><a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>https://www.redhat.com/mailman/listinfo/dm-devel<br></div></blockquote></div><br></body></html>