Nir Soffer has posted comments on this change.

Change subject: storage: Add resize map support in multipath.py
......................................................................


Patch Set 8:

(6 comments)

https://gerrit.ovirt.org/#/c/40468/8/vdsm/storage/multipath.py
File vdsm/storage/multipath.py:

Line 86: 
Line 87: def resize_if_needed(guid):
Line 88:     """
Line 89:     This function will resize a device if the underlying slaves
Line 90:     have the same size and that size is bigger than the device size.
This is kind of correct but it is more complicated then needed, since you mix 
the normal flow and errors.

Describe what it does:

    Resize multipath map if the underlying slaves are bigger than
    the map size.

Also explain how slaves can be bigger then the map.

Describe possible failures:

    Raises Error if underlying slaves have different size, or multipathd
    failed to resize the map.
Line 91:     """
Line 92:     name = devicemapper.getDmId(guid)
Line 93:     slaves = [(slave, getDeviceSize(slave))
Line 94:               for slave in devicemapper.getSlaves(name)]


Line 91:     """
Line 92:     name = devicemapper.getDmId(guid)
Line 93:     slaves = [(slave, getDeviceSize(slave))
Line 94:               for slave in devicemapper.getSlaves(name)]
Line 95:     if len(slaves) > 0:
Check if len(slaves) == 0, and log a warning - we do not expect such devices.

    if len(slaves) == 0:
       log warning...
       return 

    continue normal flow...
Line 96:         if len(set(size for slave, size in slaves)) != 1:
Line 97:             raise Error("Map %r slaves size differ %s" % (guid, 
slaves))
Line 98:         map_size = getDeviceSize(name)
Line 99:         slave_size = slaves[0][1]


Line 93:     slaves = [(slave, getDeviceSize(slave))
Line 94:               for slave in devicemapper.getSlaves(name)]
Line 95:     if len(slaves) > 0:
Line 96:         if len(set(size for slave, size in slaves)) != 1:
Line 97:             raise Error("Map %r slaves size differ %s" % (guid, 
slaves))
Add empty line after you raise, to make the flow more clear.

Also this function is little too long - lets extract a _validate_slaves 
function - may be useful in other flows.
Line 98:         map_size = getDeviceSize(name)
Line 99:         slave_size = slaves[0][1]
Line 100:         if map_size < slave_size:
Line 101:             log.info("Resizing map %r (map_size=%d, slave_size=%d)",


Line 96:         if len(set(size for slave, size in slaves)) != 1:
Line 97:             raise Error("Map %r slaves size differ %s" % (guid, 
slaves))
Line 98:         map_size = getDeviceSize(name)
Line 99:         slave_size = slaves[0][1]
Line 100:         if map_size < slave_size:
Lets check if map_size == slave_size and return False:

    if map_size == slave_size:
        return False

    Continue normal flow...
Line 101:             log.info("Resizing map %r (map_size=%d, slave_size=%d)",
Line 102:                      guid, map_size, slave_size)
Line 103:             supervdsm.getProxy().resizeMap(name)
Line 104:             return True


Line 107: 
Line 108: def _resize_map(name):
Line 109:     """
Line 110:     Invoke multipathd to resize a device
Line 111:     Must run as root
Describe possible failures.
Line 112:     """
Line 113:     log.debug("Resizing map %r", name)
Line 114:     cmd = [_MULTIPATHD.cmd, "-kresize map %s" % name]
Line 115:     start = utils.monotonic_time()


Line 110:     Invoke multipathd to resize a device
Line 111:     Must run as root
Line 112:     """
Line 113:     log.debug("Resizing map %r", name)
Line 114:     cmd = [_MULTIPATHD.cmd, "-kresize map %s" % name]
Please check if the format suggested by Ben works:

   cmd = [_MULTIPATHD.cmd, "resize", "map", name]
Line 115:     start = utils.monotonic_time()
Line 116:     rc, out, err = utils.execCmd(cmd, raw=True, execCmdLogger=log)
Line 117:     # multipathd reports some errors using non-zero exit code and 
stderr (need
Line 118:     # to be root), but -k commands always return 0, and the result is 
reported


-- 
To view, visit https://gerrit.ovirt.org/40468
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ib1020667baeb5976fb1c78daedcc88727648f13d
Gerrit-PatchSet: 8
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Freddy Rolland <froll...@redhat.com>
Gerrit-Reviewer: Fred Rolland <froll...@redhat.com>
Gerrit-Reviewer: Freddy Rolland <froll...@redhat.com>
Gerrit-Reviewer: Jenkins CI
Gerrit-Reviewer: Nir Soffer <nsof...@redhat.com>
Gerrit-Reviewer: automat...@ovirt.org
Gerrit-HasComments: Yes
_______________________________________________
vdsm-patches mailing list
vdsm-patches@lists.fedorahosted.org
https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches

Reply via email to