[dm-devel] [PATCH 1/7] devmapper: do not flush I/O for DM_DEVICE_CREATE
Hannes Reinecke
hare at suse.de
Mon May 9 10:52:59 UTC 2016
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.
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 fb202e8..2ac62a5 100644
--- a/libmultipath/devmapper.c
+++ b/libmultipath/devmapper.c
@@ -285,16 +285,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