In change [1] file operations in the remotefs driver were moved to privsep, slightly changing the behaviour in the image and info file creation process.
Prior to the change the files were created through the driver by the user specified by the current driver config (run_as_root=self._execute_as_root). After the change all files are created by root.
The issue arises when the driver creates a new image or info file as user root (privsep) and afterwards tries to run a chmod command to set the permissions. The chmod command is run by the configured service user (e.g. 'cinder' if nas_secure_file_operations is set to true). This results in a permission denied error, example:
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: Command: chmod 660 /opt/stack/data/cinder/mnt/a1e3635ffba9fce1b854369f1a255d7b/volume-9e0a9832-0aed-4122-b1b2-75cb8b63d192.info
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: Exit code: 1
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: Stdout: u''
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: Stderr: u"chmod: changing permissions of '/opt/stack/data/cinder/mnt/a1e3635ffba9fce1b854369f1a255d7b/volume-9e0a9832-0aed-4122-b1b2-75cb8b63d192.info': Operation not permitted\n"
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server Traceback (most recent call last):
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server File "/usr/local/lib/python2.7/dist-packages/oslo_messaging/rpc/server.py", line 166, in _process_incoming
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server res = self.dispatcher.dispatch(message)
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server File "/usr/local/lib/python2.7/dist-packages/oslo_messaging/rpc/dispatcher.py", line 265, in dispatch
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server return self._do_dispatch(endpoint, method, ctxt, args)
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server File "/usr/local/lib/python2.7/dist-packages/oslo_messaging/rpc/dispatcher.py", line 194, in _do_dispatch
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server result = func(ctxt, **new_args)
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server File "</usr/local/lib/python2.7/dist-packages/decorator.pyc:decorator-gen-677>", line 2, in create_snapshot
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server File "/opt/stack/cinder/cinder/objects/cleanable.py", line 208, in wrapper
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server result = f(*args, **kwargs)
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server File "/opt/stack/cinder/cinder/volume/manager.py", line 1155, in create_snapshot
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server snapshot.save()
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server self.force_reraise()
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server six.reraise(self.type_, self.value, self.tb)
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server File "/opt/stack/cinder/cinder/volume/manager.py", line 1147, in create_snapshot
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server model_update = self.driver.create_snapshot(snapshot)
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server File "/usr/local/lib/python2.7/dist-packages/oslo_concurrency/lockutils.py", line 328, in inner
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server return f(*args, **kwargs)
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server File "/opt/stack/cinder/cinder/volume/drivers/quobyte.py", line 488, in create_snapshot
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server return self._create_snapshot(snapshot)
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server File "/opt/stack/cinder/cinder/volume/drivers/remotefs.py", line 1457, in _create_snapshot
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server self._write_info_file(info_path, snap_info)
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server File "/opt/stack/cinder/cinder/volume/drivers/remotefs.py", line 757, in _write_info_file
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server self._set_rw_permissions(info_path)
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server File "/opt/stack/cinder/cinder/volume/drivers/remotefs.py", line 424, in _set_rw_permissions
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server run_as_root=self._execute_as_root)
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server File "/opt/stack/cinder/cinder/utils.py", line 128, in execute
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server return processutils.execute(*cmd, **kwargs)
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server File "/usr/local/lib/python2.7/dist-packages/oslo_concurrency/processutils.py", line 424, in execute
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server cmd=sanitized_cmd)
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server ProcessExecutionError: Unexpected error while running command.
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server Command: chmod 660 /opt/stack/data/cinder/mnt/a1e3635ffba9fce1b854369f1a255d7b/volume-9e0a9832-0aed-4122-b1b2-75cb8b63d192.info
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server Exit code: 1
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server Stdout: u''
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server Stderr: u"chmod: changing permissions of '/opt/stack/data/cinder/mnt/a1e3635ffba9fce1b854369f1a255d7b/volume-9e0a9832-0aed-4122-b1b2-75cb8b63d192.info': O
Mar 04 09:22:37 manualcinderci cinder-volume[7677]: ERROR oslo_messaging.rpc.server
We need to ensure that the file is set the required owner and permissions without running into permission denied issues.
[1] https://review.openstack.org/#/c/630244/
Fix proposed to branch: master /review. openstack. org/641277
Review: https:/