)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"b69fdeff34c5bd0f10ad63a77d757bbfb455adc0","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Fix the bug #1841363 that nova cannot attach the volume"},{"line_number":10,"context_line":"whose source_type\u003d\u0027block\u0027 when setting disk_cache_modes"},{"line_number":11,"context_line":"in nova.conf as writethrough or writeback"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: If9acc054100a6733f3659a15dd9fc2d462e84d64"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3fa7e38b_48740336","line":12,"updated":"2019-09-18 02:06:17.000000000","message":"Closes-Bug: #1841363","commit_id":"66643e95d0652f6295c1355263342e73f6bfe343"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f68dfa8663e93e7827fb0a7c013c1ef4d1fb657c","unresolved":false,"context_lines":[{"line_number":11,"context_line":"in nova.conf as writethrough or writeback"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: If9acc054100a6733f3659a15dd9fc2d462e84d64"},{"line_number":14,"context_line":"Close-Bug: 1841363"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3fa7e38b_4845e3b2","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":18},"updated":"2019-09-18 02:12:12.000000000","message":"Closes-Bug: #1841363","commit_id":"65a4d3ba77731290f853e35192a5e495ff24299b"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"e2ce2c4fa90f8404ecb41324eef66eff8785edee","unresolved":false,"context_lines":[{"line_number":22,"context_line":"Please refer: https://bugzilla.redhat.com/show_bug.cgi?id\u003d1086704#c0"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Change-Id: If9acc054100a6733f3659a15dd9fc2d462e84d64"},{"line_number":25,"context_line":"Close-Bug: #1841363"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3fa7e38b_d7bacadc","line":25,"range":{"start_line":25,"start_character":0,"end_line":25,"end_character":5},"updated":"2019-09-18 09:05:40.000000000","message":"s/Closes/Close","commit_id":"821a1765ae88c044c8fe5c5a51199d43262e63ce"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"98d6c639951477b64199de560d0790e972aa0286","unresolved":false,"context_lines":[{"line_number":3,"context_line":"AuthorDate: 2019-09-17 19:08:59 +0800"},{"line_number":4,"context_line":"Commit:     Arthur Dayne \u003cpalagend@aliyun.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-09-24 16:49:53 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix block disk attachment failure"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Fix the bug that nova cannot attach the volume"},{"line_number":10,"context_line":"whose type\u003d\u0027block\u0027 when setting disk_cache_modes"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3fa7e38b_0696813f","line":7,"range":{"start_line":6,"start_character":0,"end_line":7,"end_character":33},"updated":"2019-10-10 15:23:54.000000000","message":"If you need to respin, can you please make it:\n\nlibvirt: volume: Disallow AIO\u003dnative when no \u0027O_DIRECT\u0027 is available","commit_id":"1c59e99d2f025b04b79ebd69f946234cf7fd083b"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"78557a99683837f89108e514128d9479343b9df8","unresolved":false,"context_lines":[{"line_number":3,"context_line":"AuthorDate: 2019-09-17 19:08:59 +0800"},{"line_number":4,"context_line":"Commit:     Arthur Dayne \u003cpalagend@aliyun.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-09-24 16:49:53 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix block disk attachment failure"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Fix the bug that nova cannot attach the volume"},{"line_number":10,"context_line":"whose type\u003d\u0027block\u0027 when setting disk_cache_modes"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3fa7e38b_a4150c4b","line":7,"range":{"start_line":6,"start_character":0,"end_line":7,"end_character":33},"in_reply_to":"3fa7e38b_0696813f","updated":"2019-10-27 16:45:57.000000000","message":"Thanks!","commit_id":"1c59e99d2f025b04b79ebd69f946234cf7fd083b"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"98d6c639951477b64199de560d0790e972aa0286","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Fix the bug that nova cannot attach the volume"},{"line_number":10,"context_line":"whose type\u003d\u0027block\u0027 when setting disk_cache_modes"},{"line_number":11,"context_line":"in nova.conf as writethrough or writeback because of"},{"line_number":12,"context_line":"a libvirt issue."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"When qemu is configured with a block device that has aio\u003dnative set, but"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3fa7e38b_6395e732","line":11,"range":{"start_line":11,"start_character":32,"end_line":11,"end_character":41},"updated":"2019-10-10 15:23:54.000000000","message":"Slightly related: \u0027writeback\u0027 is the upstream default when \u0027none\u0027 is not available for Nova instances:\n\n  https://opendev.org/openstack/nova/commit/b9dc86d8d6\n  libvirt: Use \u0027writeback\u0027 QEMU cache mode when \u0027none\u0027 is not viable","commit_id":"1c59e99d2f025b04b79ebd69f946234cf7fd083b"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"78557a99683837f89108e514128d9479343b9df8","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Fix the bug that nova cannot attach the volume"},{"line_number":10,"context_line":"whose type\u003d\u0027block\u0027 when setting disk_cache_modes"},{"line_number":11,"context_line":"in nova.conf as writethrough or writeback because of"},{"line_number":12,"context_line":"a libvirt issue."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"When qemu is configured with a block device that has aio\u003dnative set, but"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3fa7e38b_04042017","line":11,"range":{"start_line":11,"start_character":32,"end_line":11,"end_character":41},"in_reply_to":"3fa7e38b_6395e732","updated":"2019-10-27 16:45:57.000000000","message":"Thanks, I am going to fix it.","commit_id":"1c59e99d2f025b04b79ebd69f946234cf7fd083b"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"98d6c639951477b64199de560d0790e972aa0286","unresolved":false,"context_lines":[{"line_number":11,"context_line":"in nova.conf as writethrough or writeback because of"},{"line_number":12,"context_line":"a libvirt issue."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"When qemu is configured with a block device that has aio\u003dnative set, but"},{"line_number":15,"context_line":"the cache mode doesn\u0027t use O_DIRECT (i.e. isn\u0027t cache\u003dnone/directsync or any"},{"line_number":16,"context_line":"unnamed mode with explicit cache.direct\u003don), then the raw-posix block driver for"},{"line_number":17,"context_line":"local files and block devices will silently fall back to aio\u003dthreads."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"The blockdev-add interface rejects such combinations, but qemu can\u0027t"},{"line_number":20,"context_line":"change the existing legacy interfaces that libvirt uses today."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Please refer: https://bugzilla.redhat.com/show_bug.cgi?id\u003d1086704#c0"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3fa7e38b_23860f15","line":20,"range":{"start_line":14,"start_character":0,"end_line":20,"end_character":62},"updated":"2019-10-10 15:23:54.000000000","message":"This is all verbatim quoted from comment#9.  But it comes across as you wrote it.\n\nWhen quoting someone else\u0027s words, please use indentation or double quotes to indicate as such.","commit_id":"1c59e99d2f025b04b79ebd69f946234cf7fd083b"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"78557a99683837f89108e514128d9479343b9df8","unresolved":false,"context_lines":[{"line_number":11,"context_line":"in nova.conf as writethrough or writeback because of"},{"line_number":12,"context_line":"a libvirt issue."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"When qemu is configured with a block device that has aio\u003dnative set, but"},{"line_number":15,"context_line":"the cache mode doesn\u0027t use O_DIRECT (i.e. isn\u0027t cache\u003dnone/directsync or any"},{"line_number":16,"context_line":"unnamed mode with explicit cache.direct\u003don), then the raw-posix block driver for"},{"line_number":17,"context_line":"local files and block devices will silently fall back to aio\u003dthreads."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"The blockdev-add interface rejects such combinations, but qemu can\u0027t"},{"line_number":20,"context_line":"change the existing legacy interfaces that libvirt uses today."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Please refer: https://bugzilla.redhat.com/show_bug.cgi?id\u003d1086704#c0"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3fa7e38b_bf4d1573","line":20,"range":{"start_line":14,"start_character":0,"end_line":20,"end_character":62},"in_reply_to":"3fa7e38b_23860f15","updated":"2019-10-27 16:45:57.000000000","message":"Oops, sorry about that, I am going to fix it.","commit_id":"1c59e99d2f025b04b79ebd69f946234cf7fd083b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"53bd7c7a701eba182727f894c73b7e6e3563f814","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Arthur Dayne \u003cpalagend@aliyun.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-10-29 15:48:50 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"libvirt:driver:Disallow AIO\u003dnative when no \u0027O_DIRECT\u0027 is available"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Fix the bug that nova cannot attach the volume"},{"line_number":10,"context_line":"whose type\u003d\u0027block\u0027 when setting disk_cache_modes"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"3fa7e38b_922dc047","line":7,"range":{"start_line":7,"start_character":40,"end_line":7,"end_character":66},"updated":"2019-10-29 10:32:54.000000000","message":"nit: \u0027O_DIRECT\u0027 is not available","commit_id":"42a697769041356e4c51a3a1b1ad63369ee37e63"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"2b79e614a8a684c16b117476d3cb24012b0ff58e","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Arthur Dayne \u003cpalagend@aliyun.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-10-29 15:48:50 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"libvirt:driver:Disallow AIO\u003dnative when no \u0027O_DIRECT\u0027 is available"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Fix the bug that nova cannot attach the volume"},{"line_number":10,"context_line":"whose type\u003d\u0027block\u0027 when setting disk_cache_modes"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"3fa7e38b_9261403c","line":7,"range":{"start_line":7,"start_character":40,"end_line":7,"end_character":66},"in_reply_to":"3fa7e38b_922dc047","updated":"2019-11-13 08:41:00.000000000","message":"Done","commit_id":"42a697769041356e4c51a3a1b1ad63369ee37e63"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"53bd7c7a701eba182727f894c73b7e6e3563f814","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"libvirt:driver:Disallow AIO\u003dnative when no \u0027O_DIRECT\u0027 is available"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Fix the bug that nova cannot attach the volume"},{"line_number":10,"context_line":"whose type\u003d\u0027block\u0027 when setting disk_cache_modes"},{"line_number":11,"context_line":"in nova.conf as writethrough or writeback because of"},{"line_number":12,"context_line":"a libvirt issue."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"\u003e When qemu is configured with a block device that has aio\u003dnative set, but"},{"line_number":15,"context_line":"\u003e the cache mode doesn\u0027t use O_DIRECT (i.e. isn\u0027t cache\u003dnone/directsync or any"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"3fa7e38b_72284432","line":12,"range":{"start_line":9,"start_character":0,"end_line":12,"end_character":16},"updated":"2019-10-29 10:32:54.000000000","message":"i belive this would also prevent you form spawning with the flat backend too.\n\nwe shoudl state how we fix it by pointing out we now use threaded io when native io is not supported.","commit_id":"42a697769041356e4c51a3a1b1ad63369ee37e63"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"2b79e614a8a684c16b117476d3cb24012b0ff58e","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"libvirt:driver:Disallow AIO\u003dnative when no \u0027O_DIRECT\u0027 is available"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Fix the bug that nova cannot attach the volume"},{"line_number":10,"context_line":"whose type\u003d\u0027block\u0027 when setting disk_cache_modes"},{"line_number":11,"context_line":"in nova.conf as writethrough or writeback because of"},{"line_number":12,"context_line":"a libvirt issue."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"\u003e When qemu is configured with a block device that has aio\u003dnative set, but"},{"line_number":15,"context_line":"\u003e the cache mode doesn\u0027t use O_DIRECT (i.e. isn\u0027t cache\u003dnone/directsync or any"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"3fa7e38b_dff7c0d3","line":12,"range":{"start_line":9,"start_character":0,"end_line":12,"end_character":16},"in_reply_to":"3fa7e38b_72284432","updated":"2019-11-13 08:41:00.000000000","message":"You are right, I need to describe it more accurately.","commit_id":"42a697769041356e4c51a3a1b1ad63369ee37e63"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"53bd7c7a701eba182727f894c73b7e6e3563f814","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Please refer: https://bugzilla.redhat.com/show_bug.cgi?id\u003d1086704#c0"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Closes-Bug: #1841363"},{"line_number":25,"context_line":"Change-Id: If9acc054100a6733f3659a15dd9fc2d462e84d64"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"3fa7e38b_12e6b017","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":20},"updated":"2019-10-29 10:32:54.000000000","message":"we need to add a release note to cover the change in behavior \nwith the fallback to threaded io when O_DIRECT is not supported. optionally we could also add a warnign to init host if we detect that you have configured the caching mode to require us to use the fall back to threaded io on a system that does not support O_DIRECT.","commit_id":"42a697769041356e4c51a3a1b1ad63369ee37e63"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"2b79e614a8a684c16b117476d3cb24012b0ff58e","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Please refer: https://bugzilla.redhat.com/show_bug.cgi?id\u003d1086704#c0"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Closes-Bug: #1841363"},{"line_number":25,"context_line":"Change-Id: If9acc054100a6733f3659a15dd9fc2d462e84d64"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"3fa7e38b_9f686888","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":20},"in_reply_to":"3fa7e38b_12e6b017","updated":"2019-11-13 08:41:00.000000000","message":"Done","commit_id":"42a697769041356e4c51a3a1b1ad63369ee37e63"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4322a26616996c99ba50dfe5e8ab1361803c3aed","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"libvirt:driver:Disallow AIO\u003dnative when \u0027O_DIRECT\u0027 is not available"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Because of the libvirt"},{"line_number":10,"context_line":"issue[1], there is a"},{"line_number":11,"context_line":"fact that if we set cache mode whose write semantic is not O_DIRECT"},{"line_number":12,"context_line":"(.i.e unsafe, writeback or writethrough), there will be a problem with the"},{"line_number":13,"context_line":"volume drivers(.i.e nova.virt.libvirt.volume.LibvirtISCSIVolumeDriver,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"1fa4df85_b28e4725","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":20},"updated":"2020-02-25 09:22:06.000000000","message":"Strange formatting","commit_id":"5293383e53343391ac7902d0de4fe1c6abdd669e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4322a26616996c99ba50dfe5e8ab1361803c3aed","unresolved":false,"context_lines":[{"line_number":11,"context_line":"fact that if we set cache mode whose write semantic is not O_DIRECT"},{"line_number":12,"context_line":"(.i.e unsafe, writeback or writethrough), there will be a problem with the"},{"line_number":13,"context_line":"volume drivers(.i.e nova.virt.libvirt.volume.LibvirtISCSIVolumeDriver,"},{"line_number":14,"context_line":"nova.virt.libvirt.volume.LibvirtNFSVolumeDriver and so on), which designate"},{"line_number":15,"context_line":"native io explicitly"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"That problem will generate a libvirt xml for the instance, whose content"},{"line_number":18,"context_line":"contains"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"1fa4df85_92b6abd9","line":15,"range":{"start_line":14,"start_character":60,"end_line":15,"end_character":20},"updated":"2020-02-25 09:22:06.000000000","message":"I cannot parse this. Did you mean?\n\nwhich designed to use native io explicitly","commit_id":"5293383e53343391ac7902d0de4fe1c6abdd669e"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"d6171eaf3e03681d7423b9b85a997ba239d31150","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Parent:     a1aacd97 (Merge \"Refine and introduce correct parameters for test_get_guest_config_numa_host_instance_topo_cpu_pinning\")"},{"line_number":2,"context_line":"Author:     Arthur Dayne \u003cpalagend@aliyun.com\u003e"},{"line_number":3,"context_line":"AuthorDate: 2019-09-17 19:08:59 +0800"},{"line_number":4,"context_line":"Commit:     Arthur Dayne \u003chuyueheng@inspur.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2020-03-19 10:22:42 +0000"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"1fa4df85_027f64e0","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":46},"updated":"2020-03-19 13:58:48.000000000","message":"nit - different author and commit email?","commit_id":"af8cef523654dfb4b9f996a6c5a19e57b3528222"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"b2c1e11fd3fd6b8b3753cd1c28cfb5e96a787255","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Parent:     a1aacd97 (Merge \"Refine and introduce correct parameters for test_get_guest_config_numa_host_instance_topo_cpu_pinning\")"},{"line_number":2,"context_line":"Author:     Arthur Dayne \u003cpalagend@aliyun.com\u003e"},{"line_number":3,"context_line":"AuthorDate: 2019-09-17 19:08:59 +0800"},{"line_number":4,"context_line":"Commit:     Arthur Dayne \u003chuyueheng@inspur.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2020-03-19 10:22:42 +0000"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"1fa4df85_68562d2d","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":46},"in_reply_to":"1fa4df85_027f64e0","updated":"2020-03-20 07:19:21.000000000","message":"Done","commit_id":"af8cef523654dfb4b9f996a6c5a19e57b3528222"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"d6171eaf3e03681d7423b9b85a997ba239d31150","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"libvirt:driver:Disallow AIO\u003dnative when \u0027O_DIRECT\u0027 is not available"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Because of the libvirt"},{"line_number":10,"context_line":"issue[1], there is a"},{"line_number":11,"context_line":"fact that if we set cache mode whose write semantic is not O_DIRECT"},{"line_number":12,"context_line":"(.i.e unsafe, writeback or writethrough), there will be a problem with the"},{"line_number":13,"context_line":"volume drivers(.i.e nova.virt.libvirt.volume.LibvirtISCSIVolumeDriver,"},{"line_number":14,"context_line":"nova.virt.libvirt.volume.LibvirtNFSVolumeDriver and so on), which designate"},{"line_number":15,"context_line":"native io explicitly"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"That problem will generate a libvirt xml for the instance, whose content"},{"line_number":18,"context_line":"contains"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"1fa4df85_626df830","line":15,"range":{"start_line":9,"start_character":0,"end_line":15,"end_character":20},"updated":"2020-03-19 13:58:48.000000000","message":"Can you reformat this please.","commit_id":"af8cef523654dfb4b9f996a6c5a19e57b3528222"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"b2c1e11fd3fd6b8b3753cd1c28cfb5e96a787255","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"libvirt:driver:Disallow AIO\u003dnative when \u0027O_DIRECT\u0027 is not available"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Because of the libvirt"},{"line_number":10,"context_line":"issue[1], there is a"},{"line_number":11,"context_line":"fact that if we set cache mode whose write semantic is not O_DIRECT"},{"line_number":12,"context_line":"(.i.e unsafe, writeback or writethrough), there will be a problem with the"},{"line_number":13,"context_line":"volume drivers(.i.e nova.virt.libvirt.volume.LibvirtISCSIVolumeDriver,"},{"line_number":14,"context_line":"nova.virt.libvirt.volume.LibvirtNFSVolumeDriver and so on), which designate"},{"line_number":15,"context_line":"native io explicitly"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"That problem will generate a libvirt xml for the instance, whose content"},{"line_number":18,"context_line":"contains"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"1fa4df85_28327511","line":15,"range":{"start_line":9,"start_character":0,"end_line":15,"end_character":20},"in_reply_to":"1fa4df85_626df830","updated":"2020-03-20 07:19:21.000000000","message":"Done","commit_id":"af8cef523654dfb4b9f996a6c5a19e57b3528222"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"f921e52f0ef6a5f41d340a2df2a8b02736a9e43c","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"libvirt:driver:Disallow AIO\u003dnative when \u0027O_DIRECT\u0027 is not available"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Because of the libvirt issue[1], there is a fact that if we set cache mode"},{"line_number":10,"context_line":"whose write semantic is not O_DIRECT (.i.e unsafe, writeback or writethrough),"},{"line_number":11,"context_line":"there will be a problem with the volume drivers"},{"line_number":12,"context_line":"(.i.e nova.virt.libvirt.volume.LibvirtISCSIVolumeDriver,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":28,"id":"df33271e_a2867c12","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":32},"updated":"2020-04-07 09:48:19.000000000","message":"nit - I think it would be better to reference the change in Libvirt directly here.\n\nhttps://github.com/libvirt/libvirt/commit/058384003db776c580d0e5a3016a6384e8eb7b92","commit_id":"712df917a5f46c2c2e99faba50a016915020e7a1"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"e64a5d233b28df48fccc57763eb73aa5a6e2de45","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"libvirt:driver:Disallow AIO\u003dnative when \u0027O_DIRECT\u0027 is not available"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Because of the libvirt issue[1], there is a fact that if we set cache mode"},{"line_number":10,"context_line":"whose write semantic is not O_DIRECT (.i.e unsafe, writeback or writethrough),"},{"line_number":11,"context_line":"there will be a problem with the volume drivers"},{"line_number":12,"context_line":"(.i.e nova.virt.libvirt.volume.LibvirtISCSIVolumeDriver,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":28,"id":"df33271e_4e599758","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":32},"in_reply_to":"df33271e_a2867c12","updated":"2020-04-07 13:13:19.000000000","message":"Done","commit_id":"712df917a5f46c2c2e99faba50a016915020e7a1"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"f921e52f0ef6a5f41d340a2df2a8b02736a9e43c","unresolved":false,"context_lines":[{"line_number":32,"context_line":"\u003e The blockdev-add interface rejects such combinations, but qemu can\u0027t"},{"line_number":33,"context_line":"\u003e change the existing legacy interfaces that libvirt uses today."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"[1]: https://bugzilla.redhat.com/show_bug.cgi?id\u003d1086704#c0"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Closes-Bug: #1841363"},{"line_number":38,"context_line":"Change-Id: If9acc054100a6733f3659a15dd9fc2d462e84d64"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":28,"id":"df33271e_62bab4c0","line":35,"range":{"start_line":35,"start_character":56,"end_line":35,"end_character":59},"updated":"2020-04-07 09:48:19.000000000","message":"I\u0027m not sure that you need #c0 here.","commit_id":"712df917a5f46c2c2e99faba50a016915020e7a1"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"e64a5d233b28df48fccc57763eb73aa5a6e2de45","unresolved":false,"context_lines":[{"line_number":32,"context_line":"\u003e The blockdev-add interface rejects such combinations, but qemu can\u0027t"},{"line_number":33,"context_line":"\u003e change the existing legacy interfaces that libvirt uses today."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"[1]: https://bugzilla.redhat.com/show_bug.cgi?id\u003d1086704#c0"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Closes-Bug: #1841363"},{"line_number":38,"context_line":"Change-Id: If9acc054100a6733f3659a15dd9fc2d462e84d64"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":28,"id":"df33271e_4e2eb7a5","line":35,"range":{"start_line":35,"start_character":56,"end_line":35,"end_character":59},"in_reply_to":"df33271e_62bab4c0","updated":"2020-04-07 13:13:19.000000000","message":"Done","commit_id":"712df917a5f46c2c2e99faba50a016915020e7a1"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"d6171eaf3e03681d7423b9b85a997ba239d31150","unresolved":false,"context_lines":[{"line_number":17524,"context_line":"        \"\"\"Tests that when conf.driver_io is \u0027native\u0027 and driver_cache is"},{"line_number":17525,"context_line":"        \u0027writeback\u0027, then conf.driver_io is forced to \u0027threads\u0027"},{"line_number":17526,"context_line":"        \"\"\""},{"line_number":17527,"context_line":"        self.flags(disk_cachemodes\u003d[\u0027block\u003dwriteback\u0027], group\u003d\u0027libvirt\u0027)"},{"line_number":17528,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":17529,"context_line":"        fake_conf \u003d FakeConfigGuestDisk()"},{"line_number":17530,"context_line":"        fake_conf.source_type \u003d \u0027block\u0027"},{"line_number":17531,"context_line":"        fake_conf.driver_io \u003d \u0027native\u0027"},{"line_number":17532,"context_line":"        drvr._set_cache_mode(fake_conf)"},{"line_number":17533,"context_line":"        self.assertEqual(\u0027writeback\u0027, fake_conf.driver_cache)"},{"line_number":17534,"context_line":"        self.assertEqual(\u0027threads\u0027, fake_conf.driver_io)"},{"line_number":17535,"context_line":""},{"line_number":17536,"context_line":"    def test_set_cache_mode_driver_io_writethrough(self):"},{"line_number":17537,"context_line":"        \"\"\"Tests that when conf.driver_io is \u0027native\u0027 and driver_cache is"}],"source_content_type":"text/x-python","patch_set":23,"id":"1fa4df85_8286f4b8","line":17534,"range":{"start_line":17527,"start_character":0,"end_line":17534,"end_character":56},"updated":"2020-03-19 13:58:48.000000000","message":"supernit - most of this could be reused in a private method.","commit_id":"af8cef523654dfb4b9f996a6c5a19e57b3528222"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"b2c1e11fd3fd6b8b3753cd1c28cfb5e96a787255","unresolved":false,"context_lines":[{"line_number":17524,"context_line":"        \"\"\"Tests that when conf.driver_io is \u0027native\u0027 and driver_cache is"},{"line_number":17525,"context_line":"        \u0027writeback\u0027, then conf.driver_io is forced to \u0027threads\u0027"},{"line_number":17526,"context_line":"        \"\"\""},{"line_number":17527,"context_line":"        self.flags(disk_cachemodes\u003d[\u0027block\u003dwriteback\u0027], group\u003d\u0027libvirt\u0027)"},{"line_number":17528,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":17529,"context_line":"        fake_conf \u003d FakeConfigGuestDisk()"},{"line_number":17530,"context_line":"        fake_conf.source_type \u003d \u0027block\u0027"},{"line_number":17531,"context_line":"        fake_conf.driver_io \u003d \u0027native\u0027"},{"line_number":17532,"context_line":"        drvr._set_cache_mode(fake_conf)"},{"line_number":17533,"context_line":"        self.assertEqual(\u0027writeback\u0027, fake_conf.driver_cache)"},{"line_number":17534,"context_line":"        self.assertEqual(\u0027threads\u0027, fake_conf.driver_io)"},{"line_number":17535,"context_line":""},{"line_number":17536,"context_line":"    def test_set_cache_mode_driver_io_writethrough(self):"},{"line_number":17537,"context_line":"        \"\"\"Tests that when conf.driver_io is \u0027native\u0027 and driver_cache is"}],"source_content_type":"text/x-python","patch_set":23,"id":"1fa4df85_ee80e5f9","line":17534,"range":{"start_line":17527,"start_character":0,"end_line":17534,"end_character":56},"in_reply_to":"1fa4df85_8286f4b8","updated":"2020-03-20 07:19:21.000000000","message":"\u003e supernit - most of this could be reused in a private method.","commit_id":"af8cef523654dfb4b9f996a6c5a19e57b3528222"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"d6171eaf3e03681d7423b9b85a997ba239d31150","unresolved":false,"context_lines":[{"line_number":17558,"context_line":"        drvr._set_cache_mode(fake_conf)"},{"line_number":17559,"context_line":"        self.assertEqual(\u0027unsafe\u0027, fake_conf.driver_cache)"},{"line_number":17560,"context_line":"        self.assertEqual(\u0027threads\u0027, fake_conf.driver_io)"},{"line_number":17561,"context_line":""},{"line_number":17562,"context_line":"    def test_set_cache_mode_invalid_mode(self):"},{"line_number":17563,"context_line":"        self.flags(disk_cachemodes\u003d[\u0027file\u003dFAKE\u0027], group\u003d\u0027libvirt\u0027)"},{"line_number":17564,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"}],"source_content_type":"text/x-python","patch_set":23,"id":"1fa4df85_02c444f4","line":17561,"updated":"2020-03-19 13:58:48.000000000","message":"supernit - is it worth having a test case that doesn\u0027t result in threads being used?","commit_id":"af8cef523654dfb4b9f996a6c5a19e57b3528222"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"b2c1e11fd3fd6b8b3753cd1c28cfb5e96a787255","unresolved":false,"context_lines":[{"line_number":17558,"context_line":"        drvr._set_cache_mode(fake_conf)"},{"line_number":17559,"context_line":"        self.assertEqual(\u0027unsafe\u0027, fake_conf.driver_cache)"},{"line_number":17560,"context_line":"        self.assertEqual(\u0027threads\u0027, fake_conf.driver_io)"},{"line_number":17561,"context_line":""},{"line_number":17562,"context_line":"    def test_set_cache_mode_invalid_mode(self):"},{"line_number":17563,"context_line":"        self.flags(disk_cachemodes\u003d[\u0027file\u003dFAKE\u0027], group\u003d\u0027libvirt\u0027)"},{"line_number":17564,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"}],"source_content_type":"text/x-python","patch_set":23,"id":"1fa4df85_0e86a114","line":17561,"in_reply_to":"1fa4df85_02c444f4","updated":"2020-03-20 07:19:21.000000000","message":"Done","commit_id":"af8cef523654dfb4b9f996a6c5a19e57b3528222"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"46c721105306fc2a2bb0b67308791360d55af91a","unresolved":false,"context_lines":[{"line_number":17521,"context_line":"        self.assertEqual(\u0027none\u0027, fake_conf.driver_cache)"},{"line_number":17522,"context_line":""},{"line_number":17523,"context_line":"    def _make_fake_conf(self, cache):"},{"line_number":17524,"context_line":"        self.flags(disk_cachemodes\u003d[\u0027block\u003d\u0027+cache], group\u003d\u0027libvirt\u0027)"},{"line_number":17525,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":17526,"context_line":"        fake_conf \u003d FakeConfigGuestDisk()"},{"line_number":17527,"context_line":"        fake_conf.source_type \u003d \u0027block\u0027"}],"source_content_type":"text/x-python","patch_set":24,"id":"1fa4df85_0eec618d","line":17524,"range":{"start_line":17524,"start_character":44,"end_line":17524,"end_character":45},"updated":"2020-03-20 05:45:44.000000000","message":"Add spaces before and after \"+\".","commit_id":"54e7b963261a071157a0f6c29ba4ddd804a9f375"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"b2c1e11fd3fd6b8b3753cd1c28cfb5e96a787255","unresolved":false,"context_lines":[{"line_number":17521,"context_line":"        self.assertEqual(\u0027none\u0027, fake_conf.driver_cache)"},{"line_number":17522,"context_line":""},{"line_number":17523,"context_line":"    def _make_fake_conf(self, cache):"},{"line_number":17524,"context_line":"        self.flags(disk_cachemodes\u003d[\u0027block\u003d\u0027+cache], group\u003d\u0027libvirt\u0027)"},{"line_number":17525,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":17526,"context_line":"        fake_conf \u003d FakeConfigGuestDisk()"},{"line_number":17527,"context_line":"        fake_conf.source_type \u003d \u0027block\u0027"}],"source_content_type":"text/x-python","patch_set":24,"id":"1fa4df85_d9537115","line":17524,"range":{"start_line":17524,"start_character":44,"end_line":17524,"end_character":45},"in_reply_to":"1fa4df85_0eec618d","updated":"2020-03-20 07:19:21.000000000","message":"I don\u0027t think it is necessary because it is in parameter location.","commit_id":"54e7b963261a071157a0f6c29ba4ddd804a9f375"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"78aa9f49202a471628f686a8d1bf13b20ce2c660","unresolved":false,"context_lines":[{"line_number":17522,"context_line":""},{"line_number":17523,"context_line":"    def _make_fake_conf(self, cache\u003dNone):"},{"line_number":17524,"context_line":"        if cache:"},{"line_number":17525,"context_line":"            self.flags(disk_cachemodes\u003d[\u0027block\u003d\u0027 + cache], group\u003d\u0027libvirt\u0027)"},{"line_number":17526,"context_line":"        else:"},{"line_number":17527,"context_line":"            self.flags(group\u003d\u0027libvirt\u0027)"},{"line_number":17528,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"}],"source_content_type":"text/x-python","patch_set":27,"id":"1fa4df85_b439dcd7","line":17525,"range":{"start_line":17525,"start_character":49,"end_line":17525,"end_character":50},"updated":"2020-03-20 08:11:00.000000000","message":"Resolved the pepe8 Error.","commit_id":"aa9704ea2f37ed61f66f17021433ea373203640d"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"78aa9f49202a471628f686a8d1bf13b20ce2c660","unresolved":false,"context_lines":[{"line_number":17556,"context_line":"        self.assertEqual(\u0027unsafe\u0027, fake_conf.driver_cache)"},{"line_number":17557,"context_line":"        self.assertEqual(\u0027threads\u0027, fake_conf.driver_io)"},{"line_number":17558,"context_line":""},{"line_number":17559,"context_line":"    def test_without_set_cache_mode_driver_io(self):"},{"line_number":17560,"context_line":"        \"\"\"Tests that when conf.driver_io is \u0027native\u0027 and driver_cache is"},{"line_number":17561,"context_line":"        not set(this is default settings), then conf.driver_io is kept as"},{"line_number":17562,"context_line":"        \u0027native\u0027"}],"source_content_type":"text/x-python","patch_set":27,"id":"1fa4df85_1429d088","line":17559,"range":{"start_line":17559,"start_character":8,"end_line":17559,"end_character":45},"updated":"2020-03-20 08:11:00.000000000","message":"Renamed it.","commit_id":"aa9704ea2f37ed61f66f17021433ea373203640d"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"78aa9f49202a471628f686a8d1bf13b20ce2c660","unresolved":false,"context_lines":[{"line_number":17562,"context_line":"        \u0027native\u0027"},{"line_number":17563,"context_line":"        \"\"\""},{"line_number":17564,"context_line":"        fake_conf \u003d self._make_fake_conf()"},{"line_number":17565,"context_line":"        self.assertEqual(None, fake_conf.driver_cache)"},{"line_number":17566,"context_line":"        self.assertEqual(\u0027native\u0027, fake_conf.driver_io)"},{"line_number":17567,"context_line":""},{"line_number":17568,"context_line":"    def test_set_cache_mode_invalid_mode(self):"}],"source_content_type":"text/x-python","patch_set":27,"id":"1fa4df85_5432e8f3","line":17565,"updated":"2020-03-20 08:11:00.000000000","message":"Fix this assert error because of the str parameter.","commit_id":"aa9704ea2f37ed61f66f17021433ea373203640d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"6574ce7f35ad51cfcc01b04a884a3d56bfeb5c53","unresolved":false,"context_lines":[{"line_number":17562,"context_line":"        \u0027native\u0027"},{"line_number":17563,"context_line":"        \"\"\""},{"line_number":17564,"context_line":"        fake_conf \u003d self._make_fake_conf()"},{"line_number":17565,"context_line":"        self.assertEqual(None, fake_conf.driver_cache)"},{"line_number":17566,"context_line":"        self.assertEqual(\u0027native\u0027, fake_conf.driver_io)"},{"line_number":17567,"context_line":""},{"line_number":17568,"context_line":"    def test_set_cache_mode_invalid_mode(self):"}],"source_content_type":"text/x-python","patch_set":29,"id":"df33271e_70138bb9","line":17565,"updated":"2020-04-07 21:48:59.000000000","message":"pep8: H203: Use assertIs(Not)None to check for None","commit_id":"160bfdfe69a6b425b3824ec1d76f02f4c312f901"}],"nova/tests/unit/virt/libvirt/volume/test_iscsi.py":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"7d7599e1f535c367aea59fb2c7dd17f04a441420","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        self.assertEqual(\u0027raw\u0027, tree.find(\u0027./driver\u0027).get(\u0027type\u0027))"},{"line_number":49,"context_line":"        self.assertEqual(\u0027native\u0027, tree.find(\u0027./driver\u0027).get(\u0027io\u0027))"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @mock.patch.object(CONF.libvirt.disk_cache_modes, return_value\u003dNone)"},{"line_number":52,"context_line":"    def test_libvirt_iscsi_driver_get_config_none(self, mock_modes):"},{"line_number":53,"context_line":"        libvirt_driver \u003d iscsi.LibvirtISCSIVolumeDriver(self.fake_host)"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_e25b862b","line":51,"range":{"start_line":51,"start_character":4,"end_line":51,"end_character":72},"updated":"2019-09-18 09:34:20.000000000","message":"s/@mock.patch(\u0027CONF.libvirt.disk_cachemodes\u0027, return_value\u003d[])/@mock.patch.object(CONF.libvirt.disk_cache_modes, return_value\u003dNone)\n\n\nThe disk_cachemodes default value is [].https://github.com/openstack/nova/blob/master/nova/conf/libvirt.py#L654","commit_id":"821a1765ae88c044c8fe5c5a51199d43262e63ce"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"5c95b5996d21b9f50a8574a6be50b66ee53c5f5c","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        self.assertEqual(\u0027raw\u0027, tree.find(\u0027./driver\u0027).get(\u0027type\u0027))"},{"line_number":49,"context_line":"        self.assertEqual(\u0027native\u0027, tree.find(\u0027./driver\u0027).get(\u0027io\u0027))"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @mock.patch.object(CONF.libvirt.disk_cache_modes, return_value\u003dNone)"},{"line_number":52,"context_line":"    def test_libvirt_iscsi_driver_get_config_none(self, mock_modes):"},{"line_number":53,"context_line":"        libvirt_driver \u003d iscsi.LibvirtISCSIVolumeDriver(self.fake_host)"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_7d21774d","line":51,"range":{"start_line":51,"start_character":4,"end_line":51,"end_character":72},"in_reply_to":"3fa7e38b_42029ab6","updated":"2019-09-18 10:50:36.000000000","message":"You should overide the configure, not mock it.\nDo like this:CONF.set_override(\u0027disk_cachemodes\u0027, [], \u0027libvirt\u0027)","commit_id":"821a1765ae88c044c8fe5c5a51199d43262e63ce"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"78557a99683837f89108e514128d9479343b9df8","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        self.assertEqual(\u0027raw\u0027, tree.find(\u0027./driver\u0027).get(\u0027type\u0027))"},{"line_number":49,"context_line":"        self.assertEqual(\u0027native\u0027, tree.find(\u0027./driver\u0027).get(\u0027io\u0027))"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @mock.patch.object(CONF.libvirt.disk_cache_modes, return_value\u003dNone)"},{"line_number":52,"context_line":"    def test_libvirt_iscsi_driver_get_config_none(self, mock_modes):"},{"line_number":53,"context_line":"        libvirt_driver \u003d iscsi.LibvirtISCSIVolumeDriver(self.fake_host)"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_1df5e357","line":51,"range":{"start_line":51,"start_character":4,"end_line":51,"end_character":72},"in_reply_to":"3fa7e38b_7d21774d","updated":"2019-10-27 16:45:57.000000000","message":"Done","commit_id":"821a1765ae88c044c8fe5c5a51199d43262e63ce"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"77cde1beb6b645e3960951175746fcdb41ee95e3","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        self.assertEqual(\u0027raw\u0027, tree.find(\u0027./driver\u0027).get(\u0027type\u0027))"},{"line_number":49,"context_line":"        self.assertEqual(\u0027native\u0027, tree.find(\u0027./driver\u0027).get(\u0027io\u0027))"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @mock.patch.object(CONF.libvirt.disk_cache_modes, return_value\u003dNone)"},{"line_number":52,"context_line":"    def test_libvirt_iscsi_driver_get_config_none(self, mock_modes):"},{"line_number":53,"context_line":"        libvirt_driver \u003d iscsi.LibvirtISCSIVolumeDriver(self.fake_host)"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_42029ab6","line":51,"range":{"start_line":51,"start_character":4,"end_line":51,"end_character":72},"in_reply_to":"3fa7e38b_e25b862b","updated":"2019-09-18 09:48:07.000000000","message":"Two way:\n1.@mock.patch.object(CONF.libvirt.disk_cachemodes, return_value\u003d[])\n\n2.@mock.patch.object(\u0027nova.conf.CONF.libvirt.disk_cachemodes\u0027, return_value\u003d[])","commit_id":"821a1765ae88c044c8fe5c5a51199d43262e63ce"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"7d7599e1f535c367aea59fb2c7dd17f04a441420","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        self.assertEqual(\u0027native\u0027, tree.find(\u0027./driver\u0027).get(\u0027io\u0027))"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @mock.patch.object(CONF.libvirt.disk_cache_modes, return_value\u003dNone)"},{"line_number":52,"context_line":"    def test_libvirt_iscsi_driver_get_config_none(self, mock_modes):"},{"line_number":53,"context_line":"        libvirt_driver \u003d iscsi.LibvirtISCSIVolumeDriver(self.fake_host)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        device_path \u003d \u0027/dev/fake-dev\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_823bb2cf","line":52,"range":{"start_line":52,"start_character":8,"end_line":52,"end_character":49},"updated":"2019-09-18 09:34:20.000000000","message":"s/test_libvirt_iscsi_driver_get_config_none/test_libvirt_iscsi_driver_get_config_with_empty_modes","commit_id":"821a1765ae88c044c8fe5c5a51199d43262e63ce"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"5c95b5996d21b9f50a8574a6be50b66ee53c5f5c","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        self.assertEqual(\u0027raw\u0027, tree.find(\u0027./driver\u0027).get(\u0027type\u0027))"},{"line_number":64,"context_line":"        self.assertEqual(\u0027native\u0027, tree.find(\u0027./driver\u0027).get(\u0027io\u0027))"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    @mock.patch.object(CONF.libvirt.disk_cache_modes,"},{"line_number":67,"context_line":"                       return_value\u003d[\u0027block\u003dwriteback\u0027])"},{"line_number":68,"context_line":"    def test_libvirt_iscsi_driver_get_config_writeback(self, mock_modes):"},{"line_number":69,"context_line":"        libvirt_driver \u003d iscsi.LibvirtISCSIVolumeDriver(self.fake_host)"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_3d1bff1b","line":67,"range":{"start_line":66,"start_character":0,"end_line":67,"end_character":56},"updated":"2019-09-18 10:50:36.000000000","message":"CONF.set_override(\u0027disk_cachemodes\u0027, \u0027block\u003dwriteback\u0027, \u0027libvirt\u0027)","commit_id":"821a1765ae88c044c8fe5c5a51199d43262e63ce"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"7d7599e1f535c367aea59fb2c7dd17f04a441420","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        self.assertEqual(\u0027raw\u0027, tree.find(\u0027./driver\u0027).get(\u0027type\u0027))"},{"line_number":64,"context_line":"        self.assertEqual(\u0027native\u0027, tree.find(\u0027./driver\u0027).get(\u0027io\u0027))"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    @mock.patch.object(CONF.libvirt.disk_cache_modes,"},{"line_number":67,"context_line":"                       return_value\u003d[\u0027block\u003dwriteback\u0027])"},{"line_number":68,"context_line":"    def test_libvirt_iscsi_driver_get_config_writeback(self, mock_modes):"},{"line_number":69,"context_line":"        libvirt_driver \u003d iscsi.LibvirtISCSIVolumeDriver(self.fake_host)"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_c221aaa1","line":67,"range":{"start_line":66,"start_character":3,"end_line":67,"end_character":56},"updated":"2019-09-18 09:34:20.000000000","message":"ditto","commit_id":"821a1765ae88c044c8fe5c5a51199d43262e63ce"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"78557a99683837f89108e514128d9479343b9df8","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        self.assertEqual(\u0027raw\u0027, tree.find(\u0027./driver\u0027).get(\u0027type\u0027))"},{"line_number":64,"context_line":"        self.assertEqual(\u0027native\u0027, tree.find(\u0027./driver\u0027).get(\u0027io\u0027))"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    @mock.patch.object(CONF.libvirt.disk_cache_modes,"},{"line_number":67,"context_line":"                       return_value\u003d[\u0027block\u003dwriteback\u0027])"},{"line_number":68,"context_line":"    def test_libvirt_iscsi_driver_get_config_writeback(self, mock_modes):"},{"line_number":69,"context_line":"        libvirt_driver \u003d iscsi.LibvirtISCSIVolumeDriver(self.fake_host)"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_bde92f81","line":67,"range":{"start_line":66,"start_character":0,"end_line":67,"end_character":56},"in_reply_to":"3fa7e38b_3d1bff1b","updated":"2019-10-27 16:45:57.000000000","message":"Done","commit_id":"821a1765ae88c044c8fe5c5a51199d43262e63ce"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"7d7599e1f535c367aea59fb2c7dd17f04a441420","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    @mock.patch.object(CONF.libvirt.disk_cache_modes,"},{"line_number":67,"context_line":"                       return_value\u003d[\u0027block\u003dwriteback\u0027])"},{"line_number":68,"context_line":"    def test_libvirt_iscsi_driver_get_config_writeback(self, mock_modes):"},{"line_number":69,"context_line":"        libvirt_driver \u003d iscsi.LibvirtISCSIVolumeDriver(self.fake_host)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        device_path \u003d \u0027/dev/fake-dev\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_227bde8c","line":68,"range":{"start_line":68,"start_character":8,"end_line":68,"end_character":54},"updated":"2019-09-18 09:34:20.000000000","message":"s/test_libvirt_iscsi_driver_get_config_with_writeback_in_modes/test_libvirt_iscsi_driver_get_config_writeback","commit_id":"821a1765ae88c044c8fe5c5a51199d43262e63ce"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"5c95b5996d21b9f50a8574a6be50b66ee53c5f5c","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        self.assertEqual(\u0027raw\u0027, tree.find(\u0027./driver\u0027).get(\u0027type\u0027))"},{"line_number":80,"context_line":"        self.assertEqual(\u0027threads\u0027, tree.find(\u0027./driver\u0027).get(\u0027io\u0027))"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    @mock.patch.object(CONF.libvirt.disk_cache_modes,"},{"line_number":83,"context_line":"                       return_value\u003d[\u0027block\u003dwritethrough\u0027])"},{"line_number":84,"context_line":"    def test_libvirt_iscsi_driver_get_config_writethrough(self, mock_modes):"},{"line_number":85,"context_line":"        libvirt_driver \u003d iscsi.LibvirtISCSIVolumeDriver(self.fake_host)"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_fdd24734","line":83,"range":{"start_line":82,"start_character":0,"end_line":83,"end_character":59},"updated":"2019-09-18 10:50:36.000000000","message":"CONF.set_override(\u0027disk_cachemodes\u0027, \u0027block\u003dwritethrough\u0027, \u0027libvirt\u0027)","commit_id":"821a1765ae88c044c8fe5c5a51199d43262e63ce"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"7d7599e1f535c367aea59fb2c7dd17f04a441420","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        self.assertEqual(\u0027raw\u0027, tree.find(\u0027./driver\u0027).get(\u0027type\u0027))"},{"line_number":80,"context_line":"        self.assertEqual(\u0027threads\u0027, tree.find(\u0027./driver\u0027).get(\u0027io\u0027))"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    @mock.patch.object(CONF.libvirt.disk_cache_modes,"},{"line_number":83,"context_line":"                       return_value\u003d[\u0027block\u003dwritethrough\u0027])"},{"line_number":84,"context_line":"    def test_libvirt_iscsi_driver_get_config_writethrough(self, mock_modes):"},{"line_number":85,"context_line":"        libvirt_driver \u003d iscsi.LibvirtISCSIVolumeDriver(self.fake_host)"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_e22626b8","line":83,"range":{"start_line":82,"start_character":4,"end_line":83,"end_character":59},"updated":"2019-09-18 09:34:20.000000000","message":"ditto","commit_id":"821a1765ae88c044c8fe5c5a51199d43262e63ce"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"78557a99683837f89108e514128d9479343b9df8","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        self.assertEqual(\u0027raw\u0027, tree.find(\u0027./driver\u0027).get(\u0027type\u0027))"},{"line_number":80,"context_line":"        self.assertEqual(\u0027threads\u0027, tree.find(\u0027./driver\u0027).get(\u0027io\u0027))"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    @mock.patch.object(CONF.libvirt.disk_cache_modes,"},{"line_number":83,"context_line":"                       return_value\u003d[\u0027block\u003dwritethrough\u0027])"},{"line_number":84,"context_line":"    def test_libvirt_iscsi_driver_get_config_writethrough(self, mock_modes):"},{"line_number":85,"context_line":"        libvirt_driver \u003d iscsi.LibvirtISCSIVolumeDriver(self.fake_host)"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_7d7657db","line":83,"range":{"start_line":82,"start_character":0,"end_line":83,"end_character":59},"in_reply_to":"3fa7e38b_fdd24734","updated":"2019-10-27 16:45:57.000000000","message":"Got it, Thanks!","commit_id":"821a1765ae88c044c8fe5c5a51199d43262e63ce"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"7d7599e1f535c367aea59fb2c7dd17f04a441420","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    @mock.patch.object(CONF.libvirt.disk_cache_modes,"},{"line_number":83,"context_line":"                       return_value\u003d[\u0027block\u003dwritethrough\u0027])"},{"line_number":84,"context_line":"    def test_libvirt_iscsi_driver_get_config_writethrough(self, mock_modes):"},{"line_number":85,"context_line":"        libvirt_driver \u003d iscsi.LibvirtISCSIVolumeDriver(self.fake_host)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        device_path \u003d \u0027/dev/fake-dev\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_a266eeec","line":84,"range":{"start_line":84,"start_character":8,"end_line":84,"end_character":57},"updated":"2019-09-18 09:34:20.000000000","message":"s/test_libvirt_iscsi_driver_get_config_with_writethrough_in_modes/test_libvirt_iscsi_driver_get_config_writethrough","commit_id":"821a1765ae88c044c8fe5c5a51199d43262e63ce"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"78557a99683837f89108e514128d9479343b9df8","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    @mock.patch.object(CONF.libvirt.disk_cache_modes,"},{"line_number":83,"context_line":"                       return_value\u003d[\u0027block\u003dwritethrough\u0027])"},{"line_number":84,"context_line":"    def test_libvirt_iscsi_driver_get_config_writethrough(self, mock_modes):"},{"line_number":85,"context_line":"        libvirt_driver \u003d iscsi.LibvirtISCSIVolumeDriver(self.fake_host)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        device_path \u003d \u0027/dev/fake-dev\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_3d80df8b","line":84,"range":{"start_line":84,"start_character":8,"end_line":84,"end_character":57},"in_reply_to":"3fa7e38b_a266eeec","updated":"2019-10-27 16:45:57.000000000","message":"Done","commit_id":"821a1765ae88c044c8fe5c5a51199d43262e63ce"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"4e0c37a848ee54f0426a3c752be71c8eeb02b936","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    def test_libvirt_iscsi_driver_get_config_with_empty(self):"},{"line_number":52,"context_line":"        libvirt_driver \u003d iscsi.LibvirtISCSIVolumeDriver(self.fake_host)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        CONF.set_override(\u0027disk_cachemodes\u0027, \u0027\u0027, \u0027libvirt\u0027)"},{"line_number":55,"context_line":"        device_path \u003d \u0027/dev/fake-dev\u0027"},{"line_number":56,"context_line":"        connection_info \u003d {\u0027data\u0027: {\u0027device_path\u0027: device_path}}"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_aeaf5b7b","line":54,"range":{"start_line":54,"start_character":8,"end_line":54,"end_character":59},"updated":"2019-09-24 07:58:06.000000000","message":"It should be as follows:\n\n  self.flags(disk_cachemodes\u003d[], group\u003d\u0027libvirt\u0027)\n\nSee\nhttps://opendev.org/openstack/nova/src/commit/38c774a8e007b1d87ed04fdcec9cc696eaccd5cc/nova/tests/unit/virt/libvirt/test_driver.py#L17560","commit_id":"6d2e4c2c188764723e145e41bbed9f39ff52c6eb"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"78557a99683837f89108e514128d9479343b9df8","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    def test_libvirt_iscsi_driver_get_config_with_empty(self):"},{"line_number":52,"context_line":"        libvirt_driver \u003d iscsi.LibvirtISCSIVolumeDriver(self.fake_host)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        CONF.set_override(\u0027disk_cachemodes\u0027, \u0027\u0027, \u0027libvirt\u0027)"},{"line_number":55,"context_line":"        device_path \u003d \u0027/dev/fake-dev\u0027"},{"line_number":56,"context_line":"        connection_info \u003d {\u0027data\u0027: {\u0027device_path\u0027: device_path}}"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_e94ead6d","line":54,"range":{"start_line":54,"start_character":8,"end_line":54,"end_character":59},"in_reply_to":"3fa7e38b_aeaf5b7b","updated":"2019-10-27 16:45:57.000000000","message":"Thanks! I will fix it. ^_^","commit_id":"6d2e4c2c188764723e145e41bbed9f39ff52c6eb"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"7e94f989e19247263dd5eb3281b298b1f5be6b14","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    def test_libvirt_iscsi_driver_get_config_with_empty(self):"},{"line_number":52,"context_line":"        libvirt_driver \u003d iscsi.LibvirtISCSIVolumeDriver(self.fake_host)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        CONF.set_override(\u0027disk_cachemodes\u0027, \u0027\u0027, \u0027libvirt\u0027)"},{"line_number":55,"context_line":"        device_path \u003d \u0027/dev/fake-dev\u0027"},{"line_number":56,"context_line":"        connection_info \u003d {\u0027data\u0027: {\u0027device_path\u0027: device_path}}"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_fbd3d05e","line":54,"range":{"start_line":54,"start_character":8,"end_line":54,"end_character":59},"in_reply_to":"3fa7e38b_aeaf5b7b","updated":"2019-09-24 08:59:05.000000000","message":"This is another way of presenting configuration items, they are the same, right?","commit_id":"6d2e4c2c188764723e145e41bbed9f39ff52c6eb"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"4e0c37a848ee54f0426a3c752be71c8eeb02b936","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    def test_libvirt_iscsi_driver_get_config_with_writeback(self):"},{"line_number":67,"context_line":"        libvirt_driver \u003d iscsi.LibvirtISCSIVolumeDriver(self.fake_host)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        CONF.set_override(\u0027disk_cachemodes\u0027, \u0027block\u003dwriteback\u0027, \u0027libvirt\u0027)"},{"line_number":70,"context_line":"        device_path \u003d \u0027/dev/fake-dev\u0027"},{"line_number":71,"context_line":"        connection_info \u003d {\u0027data\u0027: {\u0027device_path\u0027: device_path}}"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_2efb6b47","line":69,"range":{"start_line":69,"start_character":8,"end_line":69,"end_character":74},"updated":"2019-09-24 07:58:06.000000000","message":"self.flags(disk_cachemodes\u003d[\u0027block\u003dwriteback\u0027], group\u003d\u0027libvirt\u0027)","commit_id":"6d2e4c2c188764723e145e41bbed9f39ff52c6eb"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"78557a99683837f89108e514128d9479343b9df8","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    def test_libvirt_iscsi_driver_get_config_with_writeback(self):"},{"line_number":67,"context_line":"        libvirt_driver \u003d iscsi.LibvirtISCSIVolumeDriver(self.fake_host)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        CONF.set_override(\u0027disk_cachemodes\u0027, \u0027block\u003dwriteback\u0027, \u0027libvirt\u0027)"},{"line_number":70,"context_line":"        device_path \u003d \u0027/dev/fake-dev\u0027"},{"line_number":71,"context_line":"        connection_info \u003d {\u0027data\u0027: {\u0027device_path\u0027: device_path}}"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_69fabdbd","line":69,"range":{"start_line":69,"start_character":8,"end_line":69,"end_character":74},"in_reply_to":"3fa7e38b_2efb6b47","updated":"2019-10-27 16:45:57.000000000","message":"Done","commit_id":"6d2e4c2c188764723e145e41bbed9f39ff52c6eb"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"4e0c37a848ee54f0426a3c752be71c8eeb02b936","unresolved":false,"context_lines":[{"line_number":81,"context_line":"    def test_libvirt_iscsi_driver_get_config_with_writethrough(self):"},{"line_number":82,"context_line":"        libvirt_driver \u003d iscsi.LibvirtISCSIVolumeDriver(self.fake_host)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        CONF.set_override(\u0027disk_cachemodes\u0027, \u0027block\u003dwritethrough\u0027, \u0027libvirt\u0027)"},{"line_number":85,"context_line":"        device_path \u003d \u0027/dev/fake-dev\u0027"},{"line_number":86,"context_line":"        connection_info \u003d {\u0027data\u0027: {\u0027device_path\u0027: device_path}}"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_ae9c3b0e","line":84,"range":{"start_line":84,"start_character":8,"end_line":84,"end_character":77},"updated":"2019-09-24 07:58:06.000000000","message":"self.flags(disk_cachemodes\u003d[\u0027block\u003dwritethrough\u0027], group\u003d\u0027libvirt\u0027)","commit_id":"6d2e4c2c188764723e145e41bbed9f39ff52c6eb"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"78557a99683837f89108e514128d9479343b9df8","unresolved":false,"context_lines":[{"line_number":81,"context_line":"    def test_libvirt_iscsi_driver_get_config_with_writethrough(self):"},{"line_number":82,"context_line":"        libvirt_driver \u003d iscsi.LibvirtISCSIVolumeDriver(self.fake_host)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        CONF.set_override(\u0027disk_cachemodes\u0027, \u0027block\u003dwritethrough\u0027, \u0027libvirt\u0027)"},{"line_number":85,"context_line":"        device_path \u003d \u0027/dev/fake-dev\u0027"},{"line_number":86,"context_line":"        connection_info \u003d {\u0027data\u0027: {\u0027device_path\u0027: device_path}}"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_290045ab","line":84,"range":{"start_line":84,"start_character":8,"end_line":84,"end_character":77},"in_reply_to":"3fa7e38b_ae9c3b0e","updated":"2019-10-27 16:45:57.000000000","message":"Done","commit_id":"6d2e4c2c188764723e145e41bbed9f39ff52c6eb"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"3e5f927a51c033bee96b80849a04393861fc50ad","unresolved":false,"context_lines":[{"line_number":14,"context_line":"from os_brick import exception as os_brick_exception"},{"line_number":15,"context_line":"from os_brick.initiator import connector"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import nova.conf"},{"line_number":18,"context_line":"from nova.tests.unit.virt.libvirt.volume import test_volume"},{"line_number":19,"context_line":"from nova.virt.libvirt.volume import iscsi"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_5b4f8433","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":16},"updated":"2019-09-24 08:59:42.000000000","message":"If you change CONF.set_override() to self.flags(), you should remove this import.","commit_id":"7aff64ca815b06de46929da0dfe5bcf4cb182d68"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"3e5f927a51c033bee96b80849a04393861fc50ad","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from nova.tests.unit.virt.libvirt.volume import test_volume"},{"line_number":19,"context_line":"from nova.virt.libvirt.volume import iscsi"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"CONF \u003d nova.conf.CONF"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class LibvirtISCSIVolumeDriverTestCase("}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_fb6190aa","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":21},"updated":"2019-09-24 08:59:42.000000000","message":"Should be removed.","commit_id":"7aff64ca815b06de46929da0dfe5bcf4cb182d68"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"271880c3950c920e551ef1a210e3f090962d3884","unresolved":false,"context_lines":[{"line_number":579,"context_line":"        \"\"\"Set cache mode on LibvirtConfigGuestDisk object.\"\"\""},{"line_number":580,"context_line":"        try:"},{"line_number":581,"context_line":"            source_type \u003d conf.source_type"},{"line_number":582,"context_line":"            # NOTE(acewit): If the [libvirt]disk_cachemodes is set as"},{"line_number":583,"context_line":"            # `block\u003dwriteback` or `block\u003dwritethrough` or `block\u003dunsafe`,"},{"line_number":584,"context_line":"            # whose correponding Linux\u0027s IO semantic is not O_DIRECT in"},{"line_number":585,"context_line":"            # file nova.conf, then it will result in an attachment failure"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_ec653fb0","line":582,"updated":"2019-10-29 06:46:40.000000000","message":"I find you change the fix from PS11 to PS14. In PS11 the `libvirt volume driver` all(I am not sure all volume driver support this conf) need to be change it\u0027s conf.driver_io if the conf.driver_io is None. Now you change this in the virt libvirt driver.\nIMO, this problem has been solved from the root, I support done of this, but I am not sure if there is an unsupported volume driver.\n\n_`libvirt volume driver`:https://github.com/openstack/nova/blob/master/nova/virt/libvirt/driver.py#L174-L200","commit_id":"6996b3513f83c4877a2db12f8a593fc278df6b66"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"2b79e614a8a684c16b117476d3cb24012b0ff58e","unresolved":false,"context_lines":[{"line_number":579,"context_line":"        \"\"\"Set cache mode on LibvirtConfigGuestDisk object.\"\"\""},{"line_number":580,"context_line":"        try:"},{"line_number":581,"context_line":"            source_type \u003d conf.source_type"},{"line_number":582,"context_line":"            # NOTE(acewit): If the [libvirt]disk_cachemodes is set as"},{"line_number":583,"context_line":"            # `block\u003dwriteback` or `block\u003dwritethrough` or `block\u003dunsafe`,"},{"line_number":584,"context_line":"            # whose correponding Linux\u0027s IO semantic is not O_DIRECT in"},{"line_number":585,"context_line":"            # file nova.conf, then it will result in an attachment failure"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_ac7d07e8","line":582,"in_reply_to":"3fa7e38b_ec653fb0","updated":"2019-11-13 08:41:00.000000000","message":"According to https://libvirt.org/formatdomain.html#elementsDisks, the value of conf.driver_io can only be one of \"threads\", \"native\", or just leave it unset.","commit_id":"6996b3513f83c4877a2db12f8a593fc278df6b66"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"53bd7c7a701eba182727f894c73b7e6e3563f814","unresolved":false,"context_lines":[{"line_number":598,"context_line":"        # file nova.conf, then it will result in an attachment failure"},{"line_number":599,"context_line":"        # because of the libvirt issue"},{"line_number":600,"context_line":"        # (https://bugzilla.redhat.com/show_bug.cgi?id\u003d1086704#c0)"},{"line_number":601,"context_line":"        if (hasattr(conf, \u0027driver_io\u0027) and"},{"line_number":602,"context_line":"                conf.driver_io \u003d\u003d \"native\" and conf.driver_cache in"},{"line_number":603,"context_line":"                [\u0027writeback\u0027, \u0027writethrough\u0027, \u0027unsafe\u0027]):"},{"line_number":604,"context_line":"            conf.driver_io \u003d \"threads\""},{"line_number":605,"context_line":""},{"line_number":606,"context_line":"    def _do_quality_warnings(self):"}],"source_content_type":"text/x-python","patch_set":15,"id":"3fa7e38b_520ae8d0","line":603,"range":{"start_line":601,"start_character":7,"end_line":603,"end_character":57},"updated":"2019-10-29 10:32:54.000000000","message":"we talked about this on irc and in general i think this approch is ok.\n\nwe do not set a defalut io mode in general nova allowing libvirt to choose the best io mode to use however for some volume backends like isci the driver hardcodes the io mode https://github.com/openstack/nova/blob/4ae7fb4ec72621958c859b70878cf8440d323fa6/nova/virt/libvirt/volume/iscsi.py#L57\n\nthis was intoduced by https://github.com/openstack/nova/commit/a4cba3d059c5e441dc3478521000528b07be2dcd\n\nwe also conditionally set the io mode for the flat backend here\n\nhttps://github.com/openstack/nova/blob/d4f0bd93dc5c1d806631b270a59c1efef8da0d84/nova/virt/libvirt/imagebackend.py#L532-L533\n\ni believe that in the case of the block volumes this is correct. for flat volumes its arguably an error to enable preallocation on a host that does not support fallocate/O_DIRECT so i belive it would be corrrect in that case too.","commit_id":"42a697769041356e4c51a3a1b1ad63369ee37e63"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4322a26616996c99ba50dfe5e8ab1361803c3aed","unresolved":false,"context_lines":[{"line_number":583,"context_line":"        # because of the libvirt issue"},{"line_number":584,"context_line":"        # (https://bugzilla.redhat.com/show_bug.cgi?id\u003d1086704#c0)"},{"line_number":585,"context_line":"        if (hasattr(conf, \u0027driver_io\u0027) and"},{"line_number":586,"context_line":"                conf.driver_io \u003d\u003d \"native\" and conf.driver_cache in"},{"line_number":587,"context_line":"                [\u0027writeback\u0027, \u0027writethrough\u0027, \u0027unsafe\u0027]):"},{"line_number":588,"context_line":"            conf.driver_io \u003d \"threads\""},{"line_number":589,"context_line":"            LOG.warning(\"The guest disk driver io mode has fallbacked \""}],"source_content_type":"text/x-python","patch_set":21,"id":"1fa4df85_f247dfbb","line":586,"range":{"start_line":586,"start_character":47,"end_line":586,"end_character":64},"updated":"2020-02-25 09:22:06.000000000","message":"Does conf always have a driver_cache field?","commit_id":"5293383e53343391ac7902d0de4fe1c6abdd669e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4322a26616996c99ba50dfe5e8ab1361803c3aed","unresolved":false,"context_lines":[{"line_number":582,"context_line":"        # file nova.conf, then it will result in an attachment failure"},{"line_number":583,"context_line":"        # because of the libvirt issue"},{"line_number":584,"context_line":"        # (https://bugzilla.redhat.com/show_bug.cgi?id\u003d1086704#c0)"},{"line_number":585,"context_line":"        if (hasattr(conf, \u0027driver_io\u0027) and"},{"line_number":586,"context_line":"                conf.driver_io \u003d\u003d \"native\" and conf.driver_cache in"},{"line_number":587,"context_line":"                [\u0027writeback\u0027, \u0027writethrough\u0027, \u0027unsafe\u0027]):"},{"line_number":588,"context_line":"            conf.driver_io \u003d \"threads\""},{"line_number":589,"context_line":"            LOG.warning(\"The guest disk driver io mode has fallbacked \""}],"source_content_type":"text/x-python","patch_set":21,"id":"1fa4df85_72344f4b","line":586,"range":{"start_line":585,"start_character":12,"end_line":586,"end_character":43},"updated":"2020-02-25 09:22:06.000000000","message":"you can simplify this to\n\n    getattr(conf, \u0027driver_io\u0027, None) \u003d\u003d \"native\"","commit_id":"5293383e53343391ac7902d0de4fe1c6abdd669e"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"b2c1e11fd3fd6b8b3753cd1c28cfb5e96a787255","unresolved":false,"context_lines":[{"line_number":582,"context_line":"        # file nova.conf, then it will result in an attachment failure"},{"line_number":583,"context_line":"        # because of the libvirt issue"},{"line_number":584,"context_line":"        # (https://bugzilla.redhat.com/show_bug.cgi?id\u003d1086704#c0)"},{"line_number":585,"context_line":"        if (hasattr(conf, \u0027driver_io\u0027) and"},{"line_number":586,"context_line":"                conf.driver_io \u003d\u003d \"native\" and conf.driver_cache in"},{"line_number":587,"context_line":"                [\u0027writeback\u0027, \u0027writethrough\u0027, \u0027unsafe\u0027]):"},{"line_number":588,"context_line":"            conf.driver_io \u003d \"threads\""},{"line_number":589,"context_line":"            LOG.warning(\"The guest disk driver io mode has fallbacked \""}],"source_content_type":"text/x-python","patch_set":21,"id":"1fa4df85_8fe622e8","line":586,"range":{"start_line":585,"start_character":12,"end_line":586,"end_character":43},"in_reply_to":"1fa4df85_72344f4b","updated":"2020-03-20 07:19:21.000000000","message":"Done","commit_id":"5293383e53343391ac7902d0de4fe1c6abdd669e"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"b2c1e11fd3fd6b8b3753cd1c28cfb5e96a787255","unresolved":false,"context_lines":[{"line_number":583,"context_line":"        # because of the libvirt issue"},{"line_number":584,"context_line":"        # (https://bugzilla.redhat.com/show_bug.cgi?id\u003d1086704#c0)"},{"line_number":585,"context_line":"        if (hasattr(conf, \u0027driver_io\u0027) and"},{"line_number":586,"context_line":"                conf.driver_io \u003d\u003d \"native\" and conf.driver_cache in"},{"line_number":587,"context_line":"                [\u0027writeback\u0027, \u0027writethrough\u0027, \u0027unsafe\u0027]):"},{"line_number":588,"context_line":"            conf.driver_io \u003d \"threads\""},{"line_number":589,"context_line":"            LOG.warning(\"The guest disk driver io mode has fallbacked \""}],"source_content_type":"text/x-python","patch_set":21,"id":"1fa4df85_6f50865f","line":586,"range":{"start_line":586,"start_character":47,"end_line":586,"end_character":64},"in_reply_to":"1fa4df85_f247dfbb","updated":"2020-03-20 07:19:21.000000000","message":"Yes, the field driver_cache has been initialized in libvirt/volume::LibvirtBaseVolumeDriver::get_config()","commit_id":"5293383e53343391ac7902d0de4fe1c6abdd669e"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"d6171eaf3e03681d7423b9b85a997ba239d31150","unresolved":false,"context_lines":[{"line_number":585,"context_line":"        if ((getattr(conf, \u0027driver_io\u0027, None) \u003d\u003d \"native\") and"},{"line_number":586,"context_line":"                conf.driver_cache in [\u0027writeback\u0027, \u0027writethrough\u0027, \u0027unsafe\u0027]):"},{"line_number":587,"context_line":"            conf.driver_io \u003d \"threads\""},{"line_number":588,"context_line":"            LOG.warning(\"The guest disk driver io mode has fallbacked \""},{"line_number":589,"context_line":"                        \"from \u0027native\u0027 to \u0027threads\u0027 because the \""},{"line_number":590,"context_line":"                        \"disk cache mode is set as %(cachemode)s\","},{"line_number":591,"context_line":"                        {\u0027cachemode\u0027: conf.driver_cache})"}],"source_content_type":"text/x-python","patch_set":23,"id":"1fa4df85_c2eb8c75","line":588,"range":{"start_line":588,"start_character":59,"end_line":588,"end_character":69},"updated":"2020-03-19 13:58:48.000000000","message":"nit - fallen back","commit_id":"af8cef523654dfb4b9f996a6c5a19e57b3528222"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"f921e52f0ef6a5f41d340a2df2a8b02736a9e43c","unresolved":false,"context_lines":[{"line_number":583,"context_line":"        # because of the libvirt issue"},{"line_number":584,"context_line":"        # (https://bugzilla.redhat.com/show_bug.cgi?id\u003d1086704#c0)"},{"line_number":585,"context_line":"        if ((getattr(conf, \u0027driver_io\u0027, None) \u003d\u003d \"native\") and"},{"line_number":586,"context_line":"                conf.driver_cache in [\u0027writeback\u0027, \u0027writethrough\u0027, \u0027unsafe\u0027]):"},{"line_number":587,"context_line":"            conf.driver_io \u003d \"threads\""},{"line_number":588,"context_line":"            LOG.warning(\"The guest disk driver io mode has fallbacked \""},{"line_number":589,"context_line":"                        \"from \u0027native\u0027 to \u0027threads\u0027 because the \""}],"source_content_type":"text/x-python","patch_set":28,"id":"df33271e_627bd4f3","line":586,"range":{"start_line":586,"start_character":16,"end_line":586,"end_character":78},"updated":"2020-04-07 09:48:19.000000000","message":"Going back to some earlier comments I\u0027d still rather see this written in-line with the Libvirt conditional as:\n\n    conf.driver_cache not in [\u0027none\u0027, \u0027directsync\u0027]","commit_id":"712df917a5f46c2c2e99faba50a016915020e7a1"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"e64a5d233b28df48fccc57763eb73aa5a6e2de45","unresolved":false,"context_lines":[{"line_number":583,"context_line":"        # because of the libvirt issue"},{"line_number":584,"context_line":"        # (https://bugzilla.redhat.com/show_bug.cgi?id\u003d1086704#c0)"},{"line_number":585,"context_line":"        if ((getattr(conf, \u0027driver_io\u0027, None) \u003d\u003d \"native\") and"},{"line_number":586,"context_line":"                conf.driver_cache in [\u0027writeback\u0027, \u0027writethrough\u0027, \u0027unsafe\u0027]):"},{"line_number":587,"context_line":"            conf.driver_io \u003d \"threads\""},{"line_number":588,"context_line":"            LOG.warning(\"The guest disk driver io mode has fallbacked \""},{"line_number":589,"context_line":"                        \"from \u0027native\u0027 to \u0027threads\u0027 because the \""}],"source_content_type":"text/x-python","patch_set":28,"id":"df33271e_226c2735","line":586,"range":{"start_line":586,"start_character":16,"end_line":586,"end_character":78},"in_reply_to":"df33271e_627bd4f3","updated":"2020-04-07 13:13:19.000000000","message":"Done","commit_id":"712df917a5f46c2c2e99faba50a016915020e7a1"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"f921e52f0ef6a5f41d340a2df2a8b02736a9e43c","unresolved":false,"context_lines":[{"line_number":585,"context_line":"        if ((getattr(conf, \u0027driver_io\u0027, None) \u003d\u003d \"native\") and"},{"line_number":586,"context_line":"                conf.driver_cache in [\u0027writeback\u0027, \u0027writethrough\u0027, \u0027unsafe\u0027]):"},{"line_number":587,"context_line":"            conf.driver_io \u003d \"threads\""},{"line_number":588,"context_line":"            LOG.warning(\"The guest disk driver io mode has fallbacked \""},{"line_number":589,"context_line":"                        \"from \u0027native\u0027 to \u0027threads\u0027 because the \""},{"line_number":590,"context_line":"                        \"disk cache mode is set as %(cachemode)s\","},{"line_number":591,"context_line":"                        {\u0027cachemode\u0027: conf.driver_cache})"}],"source_content_type":"text/x-python","patch_set":28,"id":"df33271e_a2e95cb8","line":588,"range":{"start_line":588,"start_character":59,"end_line":588,"end_character":69},"updated":"2020-04-07 09:48:19.000000000","message":"fallen back","commit_id":"712df917a5f46c2c2e99faba50a016915020e7a1"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"e64a5d233b28df48fccc57763eb73aa5a6e2de45","unresolved":false,"context_lines":[{"line_number":585,"context_line":"        if ((getattr(conf, \u0027driver_io\u0027, None) \u003d\u003d \"native\") and"},{"line_number":586,"context_line":"                conf.driver_cache in [\u0027writeback\u0027, \u0027writethrough\u0027, \u0027unsafe\u0027]):"},{"line_number":587,"context_line":"            conf.driver_io \u003d \"threads\""},{"line_number":588,"context_line":"            LOG.warning(\"The guest disk driver io mode has fallbacked \""},{"line_number":589,"context_line":"                        \"from \u0027native\u0027 to \u0027threads\u0027 because the \""},{"line_number":590,"context_line":"                        \"disk cache mode is set as %(cachemode)s\","},{"line_number":591,"context_line":"                        {\u0027cachemode\u0027: conf.driver_cache})"}],"source_content_type":"text/x-python","patch_set":28,"id":"df33271e_02676353","line":588,"range":{"start_line":588,"start_character":59,"end_line":588,"end_character":69},"in_reply_to":"df33271e_a2e95cb8","updated":"2020-04-07 13:13:19.000000000","message":"Done","commit_id":"712df917a5f46c2c2e99faba50a016915020e7a1"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"f921e52f0ef6a5f41d340a2df2a8b02736a9e43c","unresolved":false,"context_lines":[{"line_number":587,"context_line":"            conf.driver_io \u003d \"threads\""},{"line_number":588,"context_line":"            LOG.warning(\"The guest disk driver io mode has fallbacked \""},{"line_number":589,"context_line":"                        \"from \u0027native\u0027 to \u0027threads\u0027 because the \""},{"line_number":590,"context_line":"                        \"disk cache mode is set as %(cachemode)s\","},{"line_number":591,"context_line":"                        {\u0027cachemode\u0027: conf.driver_cache})"},{"line_number":592,"context_line":""},{"line_number":593,"context_line":"    def _do_quality_warnings(self):"}],"source_content_type":"text/x-python","patch_set":28,"id":"df33271e_622d94fc","line":590,"range":{"start_line":590,"start_character":64,"end_line":590,"end_character":65},"updated":"2020-04-07 09:48:19.000000000","message":"[..] which does not use IO_DIRECT. See the following bug report for more details: https://launchpad.net/bugs/1841363","commit_id":"712df917a5f46c2c2e99faba50a016915020e7a1"}],"nova/virt/libvirt/volume/iscsi.py":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"4ddff712774b3738811f852301732c867853a261","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        conf.source_type \u003d \"block\""},{"line_number":56,"context_line":"        conf.source_path \u003d connection_info[\u0027data\u0027][\u0027device_path\u0027]"},{"line_number":57,"context_line":"        modes \u003d CONF.libvirt.disk_cachemodes"},{"line_number":58,"context_line":"        if \u0027block\u003dwriteback\u0027 in modes or \u0027block\u003dwritethrough\u0027 in modes:"},{"line_number":59,"context_line":"            conf.driver_io \u003d \"threads\""},{"line_number":60,"context_line":"        else:"},{"line_number":61,"context_line":"            conf.driver_io \u003d \"native\""}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_88cd1b5f","line":58,"range":{"start_line":58,"start_character":8,"end_line":58,"end_character":10},"updated":"2019-09-18 02:10:31.000000000","message":"Add some comments will be better.","commit_id":"66643e95d0652f6295c1355263342e73f6bfe343"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"b69fdeff34c5bd0f10ad63a77d757bbfb455adc0","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        conf.source_type \u003d \"block\""},{"line_number":56,"context_line":"        conf.source_path \u003d connection_info[\u0027data\u0027][\u0027device_path\u0027]"},{"line_number":57,"context_line":"        modes \u003d CONF.libvirt.disk_cachemodes"},{"line_number":58,"context_line":"        if \u0027block\u003dwriteback\u0027 in modes or \u0027block\u003dwritethrough\u0027 in modes:"},{"line_number":59,"context_line":"            conf.driver_io \u003d \"threads\""},{"line_number":60,"context_line":"        else:"},{"line_number":61,"context_line":"            conf.driver_io \u003d \"native\""}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_08bdabb6","line":58,"updated":"2019-09-18 02:06:17.000000000","message":"Lack of unit test","commit_id":"66643e95d0652f6295c1355263342e73f6bfe343"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"4ddff712774b3738811f852301732c867853a261","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        conf.source_type \u003d \"block\""},{"line_number":56,"context_line":"        conf.source_path \u003d connection_info[\u0027data\u0027][\u0027device_path\u0027]"},{"line_number":57,"context_line":"        modes \u003d CONF.libvirt.disk_cachemodes"},{"line_number":58,"context_line":"        if \u0027block\u003dwriteback\u0027 in modes or \u0027block\u003dwritethrough\u0027 in modes:"},{"line_number":59,"context_line":"            conf.driver_io \u003d \"threads\""},{"line_number":60,"context_line":"        else:"},{"line_number":61,"context_line":"            conf.driver_io \u003d \"native\""}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_28f3c7a0","line":58,"in_reply_to":"3fa7e38b_08bdabb6","updated":"2019-09-18 02:10:31.000000000","message":"You can add the test case in https://github.com/openstack/nova/blob/master/nova/tests/unit/virt/libvirt/volume/test_iscsi.py","commit_id":"66643e95d0652f6295c1355263342e73f6bfe343"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"e2ce2c4fa90f8404ecb41324eef66eff8785edee","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                     self).get_config(connection_info, disk_info)"},{"line_number":55,"context_line":"        conf.source_type \u003d \"block\""},{"line_number":56,"context_line":"        conf.source_path \u003d connection_info[\u0027data\u0027][\u0027device_path\u0027]"},{"line_number":57,"context_line":"        modes \u003d CONF.libvirt.disk_cachemodes"},{"line_number":58,"context_line":"        if modes and (\u0027block\u003dwriteback\u0027 in modes or "},{"line_number":59,"context_line":"                      \u0027block\u003dwritethrough\u0027 in modes):"},{"line_number":60,"context_line":"            conf.driver_io \u003d \"threads\""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_371b1e1c","line":57,"updated":"2019-09-18 09:05:40.000000000","message":"Here need a NOTE to add some comments, explain why do this change, some can from the commit message.","commit_id":"821a1765ae88c044c8fe5c5a51199d43262e63ce"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"78557a99683837f89108e514128d9479343b9df8","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                     self).get_config(connection_info, disk_info)"},{"line_number":55,"context_line":"        conf.source_type \u003d \"block\""},{"line_number":56,"context_line":"        conf.source_path \u003d connection_info[\u0027data\u0027][\u0027device_path\u0027]"},{"line_number":57,"context_line":"        modes \u003d CONF.libvirt.disk_cachemodes"},{"line_number":58,"context_line":"        if modes and (\u0027block\u003dwriteback\u0027 in modes or "},{"line_number":59,"context_line":"                      \u0027block\u003dwritethrough\u0027 in modes):"},{"line_number":60,"context_line":"            conf.driver_io \u003d \"threads\""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_42805a8c","line":57,"in_reply_to":"3fa7e38b_371b1e1c","updated":"2019-10-27 16:45:57.000000000","message":"Done","commit_id":"821a1765ae88c044c8fe5c5a51199d43262e63ce"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"e2ce2c4fa90f8404ecb41324eef66eff8785edee","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        conf.source_type \u003d \"block\""},{"line_number":56,"context_line":"        conf.source_path \u003d connection_info[\u0027data\u0027][\u0027device_path\u0027]"},{"line_number":57,"context_line":"        modes \u003d CONF.libvirt.disk_cachemodes"},{"line_number":58,"context_line":"        if modes and (\u0027block\u003dwriteback\u0027 in modes or "},{"line_number":59,"context_line":"                      \u0027block\u003dwritethrough\u0027 in modes):"},{"line_number":60,"context_line":"            conf.driver_io \u003d \"threads\""},{"line_number":61,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_37023eb6","line":58,"range":{"start_line":58,"start_character":51,"end_line":58,"end_character":52},"updated":"2019-09-18 09:05:40.000000000","message":"Redundant space","commit_id":"821a1765ae88c044c8fe5c5a51199d43262e63ce"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"78557a99683837f89108e514128d9479343b9df8","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        conf.source_type \u003d \"block\""},{"line_number":56,"context_line":"        conf.source_path \u003d connection_info[\u0027data\u0027][\u0027device_path\u0027]"},{"line_number":57,"context_line":"        modes \u003d CONF.libvirt.disk_cachemodes"},{"line_number":58,"context_line":"        if modes and (\u0027block\u003dwriteback\u0027 in modes or "},{"line_number":59,"context_line":"                      \u0027block\u003dwritethrough\u0027 in modes):"},{"line_number":60,"context_line":"            conf.driver_io \u003d \"threads\""},{"line_number":61,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_a2734ee7","line":58,"range":{"start_line":58,"start_character":51,"end_line":58,"end_character":52},"in_reply_to":"3fa7e38b_37023eb6","updated":"2019-10-27 16:45:57.000000000","message":"Done","commit_id":"821a1765ae88c044c8fe5c5a51199d43262e63ce"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"b54b2a775c382cac97f906c813ff72eecaf975cc","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        conf.source_type \u003d \"block\""},{"line_number":56,"context_line":"        conf.source_path \u003d connection_info[\u0027data\u0027][\u0027device_path\u0027]"},{"line_number":57,"context_line":"        modes \u003d CONF.libvirt.disk_cachemodes"},{"line_number":58,"context_line":"        # NOTE(acewit): If the volume backend of cinder is LVM"},{"line_number":59,"context_line":"        # instead of Ceph, and [libvirt]disk_cachemodes is set as"},{"line_number":60,"context_line":"        # `block\u003dwriteback` or `block\u003dwritethrough` in file nova.conf,"},{"line_number":61,"context_line":"        # then it will result in an attachment failure with setting"},{"line_number":62,"context_line":"        # conf.driver_io\u003d\"native\" because of a conflict between"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_ff0e238a","line":59,"range":{"start_line":58,"start_character":24,"end_line":59,"end_character":25},"updated":"2019-10-14 08:38:16.000000000","message":"It\u0027s worth rewriting this to talk about host attachment types instead of cinder backends as this volume driver is used by various iSCSI based backends.","commit_id":"c373bfbb44c15f3f82da5d78a9b990d0166c56fd"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"78557a99683837f89108e514128d9479343b9df8","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        conf.source_type \u003d \"block\""},{"line_number":56,"context_line":"        conf.source_path \u003d connection_info[\u0027data\u0027][\u0027device_path\u0027]"},{"line_number":57,"context_line":"        modes \u003d CONF.libvirt.disk_cachemodes"},{"line_number":58,"context_line":"        # NOTE(acewit): If the volume backend of cinder is LVM"},{"line_number":59,"context_line":"        # instead of Ceph, and [libvirt]disk_cachemodes is set as"},{"line_number":60,"context_line":"        # `block\u003dwriteback` or `block\u003dwritethrough` in file nova.conf,"},{"line_number":61,"context_line":"        # then it will result in an attachment failure with setting"},{"line_number":62,"context_line":"        # conf.driver_io\u003d\"native\" because of a conflict between"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_e56a14eb","line":59,"range":{"start_line":58,"start_character":24,"end_line":59,"end_character":25},"in_reply_to":"3fa7e38b_ff0e238a","updated":"2019-10-27 16:45:57.000000000","message":"Done","commit_id":"c373bfbb44c15f3f82da5d78a9b990d0166c56fd"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"b54b2a775c382cac97f906c813ff72eecaf975cc","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        # NOTE(acewit): If the volume backend of cinder is LVM"},{"line_number":59,"context_line":"        # instead of Ceph, and [libvirt]disk_cachemodes is set as"},{"line_number":60,"context_line":"        # `block\u003dwriteback` or `block\u003dwritethrough` in file nova.conf,"},{"line_number":61,"context_line":"        # then it will result in an attachment failure with setting"},{"line_number":62,"context_line":"        # conf.driver_io\u003d\"native\" because of a conflict between"},{"line_number":63,"context_line":"        # cache\u003dwriteback/writethrough and io\u003dnative."},{"line_number":64,"context_line":"        if \u0027block\u003dwriteback\u0027 in modes or \u0027block\u003dwritethrough\u0027 in modes:"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_7f1a33c6","line":61,"range":{"start_line":61,"start_character":18,"end_line":61,"end_character":54},"updated":"2019-10-14 08:38:16.000000000","message":"nit - Can we reference the libvirt bug/patch/error or something here?","commit_id":"c373bfbb44c15f3f82da5d78a9b990d0166c56fd"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"78557a99683837f89108e514128d9479343b9df8","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        # NOTE(acewit): If the volume backend of cinder is LVM"},{"line_number":59,"context_line":"        # instead of Ceph, and [libvirt]disk_cachemodes is set as"},{"line_number":60,"context_line":"        # `block\u003dwriteback` or `block\u003dwritethrough` in file nova.conf,"},{"line_number":61,"context_line":"        # then it will result in an attachment failure with setting"},{"line_number":62,"context_line":"        # conf.driver_io\u003d\"native\" because of a conflict between"},{"line_number":63,"context_line":"        # cache\u003dwriteback/writethrough and io\u003dnative."},{"line_number":64,"context_line":"        if \u0027block\u003dwriteback\u0027 in modes or \u0027block\u003dwritethrough\u0027 in modes:"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_056e50ff","line":61,"range":{"start_line":61,"start_character":18,"end_line":61,"end_character":54},"in_reply_to":"3fa7e38b_7f1a33c6","updated":"2019-10-27 16:45:57.000000000","message":"Done","commit_id":"c373bfbb44c15f3f82da5d78a9b990d0166c56fd"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"b54b2a775c382cac97f906c813ff72eecaf975cc","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        # then it will result in an attachment failure with setting"},{"line_number":62,"context_line":"        # conf.driver_io\u003d\"native\" because of a conflict between"},{"line_number":63,"context_line":"        # cache\u003dwriteback/writethrough and io\u003dnative."},{"line_number":64,"context_line":"        if \u0027block\u003dwriteback\u0027 in modes or \u0027block\u003dwritethrough\u0027 in modes:"},{"line_number":65,"context_line":"            conf.driver_io \u003d \"threads\""},{"line_number":66,"context_line":"        else:"},{"line_number":67,"context_line":"            conf.driver_io \u003d \"native\""}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_9f57ef58","line":64,"range":{"start_line":64,"start_character":8,"end_line":64,"end_character":71},"updated":"2019-10-14 08:38:16.000000000","message":"The actual check in Libvirt is [1]:\n\n            if (disk-\u003eiomode \u003d\u003d VIR_DOMAIN_DISK_IO_NATIVE \u0026\u0026\n            disk-\u003ecachemode !\u003d VIR_DOMAIN_DISK_CACHE_DIRECTSYNC \u0026\u0026\n            disk-\u003ecachemode !\u003d VIR_DOMAIN_DISK_CACHE_DISABLE) {\n\n\nWouldn\u0027t that mean we need the following check here?\n\n    if \u0027block\u003ddirectsync\u0027 not in modes and \u0027block\u003dnone\u0027 not in modes:\n\n[1] https://git.cs.umu.se/cklein/libvirt/commit/058384003db776c580d0e5a3016a6384e8eb7b92","commit_id":"c373bfbb44c15f3f82da5d78a9b990d0166c56fd"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"78557a99683837f89108e514128d9479343b9df8","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        # then it will result in an attachment failure with setting"},{"line_number":62,"context_line":"        # conf.driver_io\u003d\"native\" because of a conflict between"},{"line_number":63,"context_line":"        # cache\u003dwriteback/writethrough and io\u003dnative."},{"line_number":64,"context_line":"        if \u0027block\u003dwriteback\u0027 in modes or \u0027block\u003dwritethrough\u0027 in modes:"},{"line_number":65,"context_line":"            conf.driver_io \u003d \"threads\""},{"line_number":66,"context_line":"        else:"},{"line_number":67,"context_line":"            conf.driver_io \u003d \"native\""}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_a5997cc4","line":64,"range":{"start_line":64,"start_character":8,"end_line":64,"end_character":71},"in_reply_to":"3fa7e38b_9f57ef58","updated":"2019-10-27 16:45:57.000000000","message":"Thanks! But the default value of disk_cachemods is an empty list(https://docs.openstack.org/nova/latest/configuration/config.html).\nIf we make a change like that, there will may be some performance problem with default configurations.\n\nSo I am going to change it like this:\n   if \u0027block\u003dwriteback\u0027 in modes or \u0027block\u003dwritethrough\u0027 in modes or \u0027block\u003dunsafe\u0027 in modes:\n\nThat is meaning that only block\u003dwriteback/writethrough/unsafe is expliciltly specified, conf.driver_io is set as \u0027threads\u0027 instead of \u0027native\u0027.","commit_id":"c373bfbb44c15f3f82da5d78a9b990d0166c56fd"}],"releasenotes/notes/bug-1841363-fallback-to-threaded-io-when-native-io-is-not-supported-fe56014e9648a518.yaml":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4322a26616996c99ba50dfe5e8ab1361803c3aed","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Because of the libvirt"},{"line_number":5,"context_line":"    issue(https://bugzilla.redhat.com/show_bug.cgi?id\u003d1086704#c0), there is a"},{"line_number":6,"context_line":"    fact that if we set cache mode whose write semantic is not O_DIRECT"},{"line_number":7,"context_line":"    (.i.e \"unsafe\", \"writeback\" or \"writethrough\"), there will be a problem"},{"line_number":8,"context_line":"    with the volume drivers(.i.e LibvirtISCSIVolumeDriver,"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"1fa4df85_52003335","line":5,"range":{"start_line":4,"start_character":0,"end_line":5,"end_character":77},"updated":"2020-02-25 09:22:06.000000000","message":"you can do links with \n\n    `libvirt issue`_\n\nthen at the end of the reno\n\n    .. _libvirt issue: https://bugzilla.redhat.com/show_bug.cgi?id\u003d1086704#c0","commit_id":"5293383e53343391ac7902d0de4fe1c6abdd669e"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"b2c1e11fd3fd6b8b3753cd1c28cfb5e96a787255","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Because of the libvirt"},{"line_number":5,"context_line":"    issue(https://bugzilla.redhat.com/show_bug.cgi?id\u003d1086704#c0), there is a"},{"line_number":6,"context_line":"    fact that if we set cache mode whose write semantic is not O_DIRECT"},{"line_number":7,"context_line":"    (.i.e \"unsafe\", \"writeback\" or \"writethrough\"), there will be a problem"},{"line_number":8,"context_line":"    with the volume drivers(.i.e LibvirtISCSIVolumeDriver,"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"1fa4df85_2f7b6ebe","line":5,"range":{"start_line":4,"start_character":0,"end_line":5,"end_character":77},"in_reply_to":"1fa4df85_52003335","updated":"2020-03-20 07:19:21.000000000","message":"Done","commit_id":"5293383e53343391ac7902d0de4fe1c6abdd669e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4322a26616996c99ba50dfe5e8ab1361803c3aed","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    Generally, using the default configuration is the best choice. Do not bore"},{"line_number":25,"context_line":"    yourself to change the default setting of disk_cachemodes in configuration"},{"line_number":26,"context_line":"    file, unless you know the details of the storage system backing your"},{"line_number":27,"context_line":"    OpenStack, and konw how to optimize the storage system by setting"},{"line_number":28,"context_line":"    cache mode."}],"source_content_type":"text/x-yaml","patch_set":21,"id":"1fa4df85_128f1bcd","line":27,"range":{"start_line":27,"start_character":19,"end_line":27,"end_character":23},"updated":"2020-02-25 09:22:06.000000000","message":"nit: know","commit_id":"5293383e53343391ac7902d0de4fe1c6abdd669e"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"b2c1e11fd3fd6b8b3753cd1c28cfb5e96a787255","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    Generally, using the default configuration is the best choice. Do not bore"},{"line_number":25,"context_line":"    yourself to change the default setting of disk_cachemodes in configuration"},{"line_number":26,"context_line":"    file, unless you know the details of the storage system backing your"},{"line_number":27,"context_line":"    OpenStack, and konw how to optimize the storage system by setting"},{"line_number":28,"context_line":"    cache mode."}],"source_content_type":"text/x-yaml","patch_set":21,"id":"1fa4df85_6f5ac650","line":27,"range":{"start_line":27,"start_character":19,"end_line":27,"end_character":23},"in_reply_to":"1fa4df85_128f1bcd","updated":"2020-03-20 07:19:21.000000000","message":"Done","commit_id":"5293383e53343391ac7902d0de4fe1c6abdd669e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4322a26616996c99ba50dfe5e8ab1361803c3aed","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"1fa4df85_72b76f88","line":29,"updated":"2020-02-25 09:22:06.000000000","message":"I would mention here that in which case the libvirt driver will overwrite the configuration to prevent spawn failures.","commit_id":"5293383e53343391ac7902d0de4fe1c6abdd669e"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"b2c1e11fd3fd6b8b3753cd1c28cfb5e96a787255","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"1fa4df85_53af74e2","line":29,"in_reply_to":"1fa4df85_72b76f88","updated":"2020-03-20 07:19:21.000000000","message":"Good idea!","commit_id":"5293383e53343391ac7902d0de4fe1c6abdd669e"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"f921e52f0ef6a5f41d340a2df2a8b02736a9e43c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Because of the `libvirt issue`_ , there is a"},{"line_number":5,"context_line":"    fact that if we set cache mode whose write semantic is not O_DIRECT"},{"line_number":6,"context_line":"    (.i.e \"unsafe\", \"writeback\" or \"writethrough\"), there will be a problem"},{"line_number":7,"context_line":"    with the volume drivers(.i.e LibvirtISCSIVolumeDriver,"}],"source_content_type":"text/x-yaml","patch_set":28,"id":"df33271e_82c6d815","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":36},"updated":"2020-04-07 09:48:19.000000000","message":"I\u0027d rewrite this as\n\n    Since Libvirt v.1.12.0 and the introduction of [..]","commit_id":"712df917a5f46c2c2e99faba50a016915020e7a1"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"f921e52f0ef6a5f41d340a2df2a8b02736a9e43c","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    (.i.e \"unsafe\", \"writeback\" or \"writethrough\"), there will be a problem"},{"line_number":7,"context_line":"    with the volume drivers(.i.e LibvirtISCSIVolumeDriver,"},{"line_number":8,"context_line":"    LibvirtNFSVolumeDriver and so on), which designate native io explicitly."},{"line_number":9,"context_line":"    That will generate a libvirt xml for the instance, whose content"},{"line_number":10,"context_line":"    contains::"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"      ..."},{"line_number":13,"context_line":"      \u003cdisk ... \u003e"},{"line_number":14,"context_line":"        \u003cdriver ... cache\u003d\u0027unsafe/writeback/writethrough\u0027 io\u003d\u0027native\u0027 /\u003e"},{"line_number":15,"context_line":"      \u003c/disk\u003e"},{"line_number":16,"context_line":"      ..."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    In turn, it will fail to spawn the instance or attach the disk."},{"line_number":19,"context_line":"    This patch will detect the case in"},{"line_number":20,"context_line":"    nova.virt.libvirt.driver.LibvirtDriver#_set_cache_mode and set io"},{"line_number":21,"context_line":"    fallbacked to \"threads\" mode to avoid the crash, which yet might be at"},{"line_number":22,"context_line":"    the expense of disk io performance."},{"line_number":23,"context_line":"    Generally, using the default configuration is the best choice. Do not bore"},{"line_number":24,"context_line":"    yourself to change the default setting of disk_cachemodes in configuration"},{"line_number":25,"context_line":"    file, unless you know the details of the storage system backing your"},{"line_number":26,"context_line":"    OpenStack, and know how to optimize the storage system by setting"},{"line_number":27,"context_line":"    cache mode."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    When the libvirt driver detects that the driver_cache(default is none) has"},{"line_number":30,"context_line":"    been configured as one of \"writeback\", \"writethrough\" or \"unsafe\", yet with"}],"source_content_type":"text/x-yaml","patch_set":28,"id":"df33271e_62f2b471","line":27,"range":{"start_line":9,"start_character":0,"end_line":27,"end_character":15},"updated":"2020-04-07 09:48:19.000000000","message":"I don\u0027t think this is required in this note.","commit_id":"712df917a5f46c2c2e99faba50a016915020e7a1"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"e64a5d233b28df48fccc57763eb73aa5a6e2de45","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    (.i.e \"unsafe\", \"writeback\" or \"writethrough\"), there will be a problem"},{"line_number":7,"context_line":"    with the volume drivers(.i.e LibvirtISCSIVolumeDriver,"},{"line_number":8,"context_line":"    LibvirtNFSVolumeDriver and so on), which designate native io explicitly."},{"line_number":9,"context_line":"    That will generate a libvirt xml for the instance, whose content"},{"line_number":10,"context_line":"    contains::"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"      ..."},{"line_number":13,"context_line":"      \u003cdisk ... \u003e"},{"line_number":14,"context_line":"        \u003cdriver ... cache\u003d\u0027unsafe/writeback/writethrough\u0027 io\u003d\u0027native\u0027 /\u003e"},{"line_number":15,"context_line":"      \u003c/disk\u003e"},{"line_number":16,"context_line":"      ..."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    In turn, it will fail to spawn the instance or attach the disk."},{"line_number":19,"context_line":"    This patch will detect the case in"},{"line_number":20,"context_line":"    nova.virt.libvirt.driver.LibvirtDriver#_set_cache_mode and set io"},{"line_number":21,"context_line":"    fallbacked to \"threads\" mode to avoid the crash, which yet might be at"},{"line_number":22,"context_line":"    the expense of disk io performance."},{"line_number":23,"context_line":"    Generally, using the default configuration is the best choice. Do not bore"},{"line_number":24,"context_line":"    yourself to change the default setting of disk_cachemodes in configuration"},{"line_number":25,"context_line":"    file, unless you know the details of the storage system backing your"},{"line_number":26,"context_line":"    OpenStack, and know how to optimize the storage system by setting"},{"line_number":27,"context_line":"    cache mode."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    When the libvirt driver detects that the driver_cache(default is none) has"},{"line_number":30,"context_line":"    been configured as one of \"writeback\", \"writethrough\" or \"unsafe\", yet with"}],"source_content_type":"text/x-yaml","patch_set":28,"id":"df33271e_e23a3fe5","line":27,"range":{"start_line":9,"start_character":0,"end_line":27,"end_character":15},"in_reply_to":"df33271e_62f2b471","updated":"2020-04-07 13:13:19.000000000","message":"Done","commit_id":"712df917a5f46c2c2e99faba50a016915020e7a1"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"f921e52f0ef6a5f41d340a2df2a8b02736a9e43c","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    OpenStack, and know how to optimize the storage system by setting"},{"line_number":27,"context_line":"    cache mode."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    When the libvirt driver detects that the driver_cache(default is none) has"},{"line_number":30,"context_line":"    been configured as one of \"writeback\", \"writethrough\" or \"unsafe\", yet with"},{"line_number":31,"context_line":"    driver_io being \"native\", the livirt driver will change the value of"},{"line_number":32,"context_line":"    driver_io to \"threads\" to avoid instance spawning failure."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    .. _`libvirt issue`: https://bugzilla.redhat.com/show_bug.cgi?id\u003d1086704#c0"}],"source_content_type":"text/x-yaml","patch_set":28,"id":"df33271e_a2ecbc8f","line":32,"range":{"start_line":29,"start_character":0,"end_line":32,"end_character":62},"updated":"2020-04-07 09:48:19.000000000","message":"Happy to rewrite this if you\u0027d like.","commit_id":"712df917a5f46c2c2e99faba50a016915020e7a1"},{"author":{"_account_id":30395,"name":"Arthur Dayne","display_name":"Arthur Dayne","email":"palagend@foxmail.com","username":"acewit"},"change_message_id":"e64a5d233b28df48fccc57763eb73aa5a6e2de45","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    OpenStack, and know how to optimize the storage system by setting"},{"line_number":27,"context_line":"    cache mode."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    When the libvirt driver detects that the driver_cache(default is none) has"},{"line_number":30,"context_line":"    been configured as one of \"writeback\", \"writethrough\" or \"unsafe\", yet with"},{"line_number":31,"context_line":"    driver_io being \"native\", the livirt driver will change the value of"},{"line_number":32,"context_line":"    driver_io to \"threads\" to avoid instance spawning failure."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    .. _`libvirt issue`: https://bugzilla.redhat.com/show_bug.cgi?id\u003d1086704#c0"}],"source_content_type":"text/x-yaml","patch_set":28,"id":"df33271e_a5a041a7","line":32,"range":{"start_line":29,"start_character":0,"end_line":32,"end_character":62},"in_reply_to":"df33271e_a2ecbc8f","updated":"2020-04-07 13:13:19.000000000","message":"Done","commit_id":"712df917a5f46c2c2e99faba50a016915020e7a1"}]}
