Enable direct-io on LVM loop devices
Enable direct-io on LVM loop devices

This enables direct-io on the loop devices that we create for LVM backing
stores. The goal here is to reduce the buffer cache overhead involved with
loop mounting a very large file on a filesystem, as well as potentially
providing a little more block-device-like behavior for things that expect
them. We are hoping this will address some of the very long LVM calls that
cinder does, which randomly take a very long time, causing timeouts.

The loop direct-io support was added in kernel 4.4.0, which was xenial,
but the losetup binary does not have the required flag. Thus, this patch
checks the "losetup -h" output for the flag before deciding to enable it.

Change-Id: Idc69cf3598d6ed6646c0145733c90ad0b1b60883

openstack-dev/devstack,noironetworks/devstack,nawawi/openstack,openstack-dev/devstack,noironetworks/devstack,dtroyer/devstack,nawawi/openstack,group-policy/devstack,group-policy/devstack,dtroyer/devstack