)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Support volume local cache"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add the support of cache software that caches remote slow volume using"},{"line_number":10,"context_line":"fast local SSD."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I4d6e44789ece9accda2044dbf31bbf8f8393fbd2"},{"line_number":13,"context_line":"Signed-off-by: Liang Fang \u003cliang.a.fang@intel.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3fa7e38b_6f1e9ebd","line":10,"updated":"2020-01-14 20:36:31.000000000","message":"Please link the nova spec: https://review.opendev.org/#/c/689070/","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"}],"specs/untargeted/support-volume-local-cache.rst":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"8ad01ae6124711990df593c6050c3d20f3636829","unresolved":false,"context_lines":[{"line_number":26,"context_line":"In order to do the cache, there\u0027re some cache softwares, such as dm-cache,"},{"line_number":27,"context_line":"bcache. This spec is trying to add the support for such cache software. A"},{"line_number":28,"context_line":"common support and a support for open-cas will be added in os-brick."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Use Cases"},{"line_number":31,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fa7e38b_924aa7a9","line":29,"updated":"2019-09-25 08:51:09.000000000","message":"This needs more description of the semantics of these caches.  I don\u0027t see how this could work as a write cache without interfering with the standard guarantees Cinder provides about data integrity.\n\nAre these deployed as a read cache only?","commit_id":"b9da3bcbcf75666b2006da836854885627583f3e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"3053efe56202ae315e61fa21ab29539f2e555f70","unresolved":false,"context_lines":[{"line_number":26,"context_line":"In order to do the cache, there\u0027re some cache softwares, such as dm-cache,"},{"line_number":27,"context_line":"bcache. This spec is trying to add the support for such cache software. A"},{"line_number":28,"context_line":"common support and a support for open-cas will be added in os-brick."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Use Cases"},{"line_number":31,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fa7e38b_c4f55ece","line":29,"in_reply_to":"3fa7e38b_78a26db0","updated":"2019-10-17 13:10:07.000000000","message":"This should be added to the spec, not just explained in comments on the spec review.","commit_id":"b9da3bcbcf75666b2006da836854885627583f3e"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"96c022182a4e16f09675eb7cfca6c7ba8d29a147","unresolved":false,"context_lines":[{"line_number":26,"context_line":"In order to do the cache, there\u0027re some cache softwares, such as dm-cache,"},{"line_number":27,"context_line":"bcache. This spec is trying to add the support for such cache software. A"},{"line_number":28,"context_line":"common support and a support for open-cas will be added in os-brick."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Use Cases"},{"line_number":31,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fa7e38b_78a26db0","line":29,"in_reply_to":"3fa7e38b_924aa7a9","updated":"2019-09-25 09:10:56.000000000","message":"Hi Eric, let me describe typical caching mode:\n\nWrite-Through (WT): write to cache and backend storage\nWrite-Around (WA): like write-through, but only cache for data that already read in cache\nWrite-Invalidate (WI): write to backend storage and invalidate cache\nWrite-Back (WB): write to cache and lazy write to backend storage\nWrite-Only (WO): like write-back, but only cache write, will not cache read\n\nSo the first 3 mode are suitable for VM volume caching, because every write io are both written to cache and backend storage (slow volume), so data is integrited. At the same time, READ io will be cached.\n\nBut indeed, this is suitable for read intensive scenario. E.g. some customer uses this for AI traning, web site, database, etc.","commit_id":"b9da3bcbcf75666b2006da836854885627583f3e"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"8ad01ae6124711990df593c6050c3d20f3636829","unresolved":false,"context_lines":[{"line_number":30,"context_line":"Use Cases"},{"line_number":31,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"* User wants to use fast NVME SSD to cache for remote slow volume."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Proposed change"},{"line_number":36,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fa7e38b_32c97325","line":33,"updated":"2019-09-25 08:51:09.000000000","message":"Needs much more information.","commit_id":"b9da3bcbcf75666b2006da836854885627583f3e"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"8ad01ae6124711990df593c6050c3d20f3636829","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"* Test case in particular: Use fio to test / compare the volume with / without"},{"line_number":140,"context_line":"  cache. The expected behavior is: cached volume has larger throughput, lower"},{"line_number":141,"context_line":"  latency."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"Documentation Impact"},{"line_number":144,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fa7e38b_d26b3f1b","line":141,"updated":"2019-09-25 08:51:09.000000000","message":"- Must be tested with multipath for iSCSI/FC.\n\n- RBD driver handling\n- NFS driver handling","commit_id":"b9da3bcbcf75666b2006da836854885627583f3e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"51583752801d2c4f101702376e0e4b9dc3104e17","unresolved":false,"context_lines":[{"line_number":23,"context_line":"level (iscsi / rbd). So these fast SSDs can be mounted on compute node locally"},{"line_number":24,"context_line":"and used as a cache for remote volumes."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"In order to do the cache, there\u0027re some cache softwares, such as dm-cache,"},{"line_number":27,"context_line":"bcache. This spec is trying to add the support for such cache software. A"},{"line_number":28,"context_line":"common support and a support for open-cas will be added in os-brick."},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_a44e2236","line":26,"range":{"start_line":26,"start_character":26,"end_line":26,"end_character":34},"updated":"2019-10-17 13:09:20.000000000","message":"This is a really awkward contraction.\n\ns/softwares/software/\nSoftware is already plural.","commit_id":"aff61044e264ec1b071c7b28a247e28a4f3ff53b"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"51583752801d2c4f101702376e0e4b9dc3104e17","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    This function un-caches the cached volume."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"  * get_slow_vol_from_emulated_vol()"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    slow_vol means the volume be cached. This function gets the file path of"},{"line_number":62,"context_line":"    the slow volume from emulated volume which created in cache_vol()."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_c470fe76","line":59,"range":{"start_line":59,"start_character":8,"end_line":59,"end_character":12},"updated":"2019-10-17 13:09:20.000000000","message":"Can we use a different word than \"slow\"?","commit_id":"aff61044e264ec1b071c7b28a247e28a4f3ff53b"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"4f9ece0be1b5cd0c018f8b983451f8bb0d9801c8","unresolved":false,"context_lines":[{"line_number":28,"context_line":"Just like the way we did for volume encryption in os-brick where dm-crypt is"},{"line_number":29,"context_line":"supported, cache software support would be added in os-brick. Nova will call"},{"line_number":30,"context_line":"os-brick when it trying to attach a volume, os-brick then call the cache"},{"line_number":31,"context_line":"software to setup the cache for the volume. Meanwhile os-brick will replace the"},{"line_number":32,"context_line":"original volume symbol link with the new symbol link which generated by the"},{"line_number":33,"context_line":"cache software."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"It is Nova\u0027s responsibility to decide if the volume can be cached or not. e.g."},{"line_number":36,"context_line":"if the volume is with multiattach property, then Nova should not try to cache"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_491e8cbb","line":33,"range":{"start_line":31,"start_character":44,"end_line":33,"end_character":15},"updated":"2019-11-01 14:51:52.000000000","message":"Can you explain what you mean here, in detail? The current behaviour of LUKS encryption for some backends has proven problematic when os-brick modifies block devices. A better solution would be to make os-brick explicitly aware of layering such that the original mount remains unmodified and we create a new virtual block device which is exposed to Nova.","commit_id":"fa3d046ed003a75017653e2cc72cf16768cfc299"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"1d16315e7a3a61e8a34ba58402a65561d463b336","unresolved":false,"context_lines":[{"line_number":28,"context_line":"Just like the way we did for volume encryption in os-brick where dm-crypt is"},{"line_number":29,"context_line":"supported, cache software support would be added in os-brick. Nova will call"},{"line_number":30,"context_line":"os-brick when it trying to attach a volume, os-brick then call the cache"},{"line_number":31,"context_line":"software to setup the cache for the volume. Meanwhile os-brick will replace the"},{"line_number":32,"context_line":"original volume symbol link with the new symbol link which generated by the"},{"line_number":33,"context_line":"cache software."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"It is Nova\u0027s responsibility to decide if the volume can be cached or not. e.g."},{"line_number":36,"context_line":"if the volume is with multiattach property, then Nova should not try to cache"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_4d2323bf","line":33,"range":{"start_line":31,"start_character":44,"end_line":33,"end_character":15},"in_reply_to":"3fa7e38b_47663358","updated":"2019-11-20 10:23:09.000000000","message":"Agreed, fixed.","commit_id":"fa3d046ed003a75017653e2cc72cf16768cfc299"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"1d16315e7a3a61e8a34ba58402a65561d463b336","unresolved":false,"context_lines":[{"line_number":28,"context_line":"Just like the way we did for volume encryption in os-brick where dm-crypt is"},{"line_number":29,"context_line":"supported, cache software support would be added in os-brick. Nova will call"},{"line_number":30,"context_line":"os-brick when it trying to attach a volume, os-brick then call the cache"},{"line_number":31,"context_line":"software to setup the cache for the volume. Meanwhile os-brick will replace the"},{"line_number":32,"context_line":"original volume symbol link with the new symbol link which generated by the"},{"line_number":33,"context_line":"cache software."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"It is Nova\u0027s responsibility to decide if the volume can be cached or not. e.g."},{"line_number":36,"context_line":"if the volume is with multiattach property, then Nova should not try to cache"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_8d359bf8","line":33,"range":{"start_line":31,"start_character":44,"end_line":33,"end_character":15},"in_reply_to":"3fa7e38b_491e8cbb","updated":"2019-11-20 10:23:09.000000000","message":"Agreed, fixed.","commit_id":"fa3d046ed003a75017653e2cc72cf16768cfc299"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"692c6565c6af0b263908933bb13c5e26977e61b7","unresolved":false,"context_lines":[{"line_number":28,"context_line":"Just like the way we did for volume encryption in os-brick where dm-crypt is"},{"line_number":29,"context_line":"supported, cache software support would be added in os-brick. Nova will call"},{"line_number":30,"context_line":"os-brick when it trying to attach a volume, os-brick then call the cache"},{"line_number":31,"context_line":"software to setup the cache for the volume. Meanwhile os-brick will replace the"},{"line_number":32,"context_line":"original volume symbol link with the new symbol link which generated by the"},{"line_number":33,"context_line":"cache software."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"It is Nova\u0027s responsibility to decide if the volume can be cached or not. e.g."},{"line_number":36,"context_line":"if the volume is with multiattach property, then Nova should not try to cache"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_47663358","line":33,"range":{"start_line":31,"start_character":44,"end_line":33,"end_character":15},"in_reply_to":"3fa7e38b_491e8cbb","updated":"2019-11-07 13:56:07.000000000","message":"Agreed, given the trouble this has caused within the dm-crypt based encryptors. Additionally all of the cache setup and teardown should be handled from connect_volume and disconnect_volume within the os-brick connectors IMHO.\n\nFWIW I\u0027d love to refactor the encryptors to also only be called from os-brick.","commit_id":"fa3d046ed003a75017653e2cc72cf16768cfc299"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4c81460a84c7f13098e056734367f4e86ab4e132","unresolved":false,"context_lines":[{"line_number":32,"context_line":"original volume symbol link with the new symbol link which generated by the"},{"line_number":33,"context_line":"cache software."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"It is Nova\u0027s responsibility to decide if the volume can be cached or not. e.g."},{"line_number":36,"context_line":"if the volume is with multiattach property, then Nova should not try to cache"},{"line_number":37,"context_line":"this volume, otherwise there will be data corruption."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_7de666b3","line":35,"updated":"2019-11-07 03:55:59.000000000","message":"Notes from the PTG:\n\nThis should be an extra spec in a volume type. Cinder can then enforce that the volume type does not allow multiattach.\n\nThat is also needed to be able to control this per-volume. We do not want all volumes of an instance to be cache-enabled or none of them. There are use cases where you may want the boot volume not cached, but the data volume cached.","commit_id":"fa3d046ed003a75017653e2cc72cf16768cfc299"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"61dfc97ceda9a6c63a5e113ed364ae12db852e5c","unresolved":false,"context_lines":[{"line_number":32,"context_line":"original volume symbol link with the new symbol link which generated by the"},{"line_number":33,"context_line":"cache software."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"It is Nova\u0027s responsibility to decide if the volume can be cached or not. e.g."},{"line_number":36,"context_line":"if the volume is with multiattach property, then Nova should not try to cache"},{"line_number":37,"context_line":"this volume, otherwise there will be data corruption."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_0366362a","line":35,"in_reply_to":"3fa7e38b_03f39674","updated":"2019-11-22 07:28:10.000000000","message":"Thanks Rui. Fail at run time (fail to attach) is definitely a way to do this. But this may introduce race condition I think. Meanwhile it will make Nova take care too much of storage. Looks like it makes more sense to let storage module (cinder) to take care of this.","commit_id":"fa3d046ed003a75017653e2cc72cf16768cfc299"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"1d16315e7a3a61e8a34ba58402a65561d463b336","unresolved":false,"context_lines":[{"line_number":32,"context_line":"original volume symbol link with the new symbol link which generated by the"},{"line_number":33,"context_line":"cache software."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"It is Nova\u0027s responsibility to decide if the volume can be cached or not. e.g."},{"line_number":36,"context_line":"if the volume is with multiattach property, then Nova should not try to cache"},{"line_number":37,"context_line":"this volume, otherwise there will be data corruption."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_f002e208","line":35,"in_reply_to":"3fa7e38b_20f7655c","updated":"2019-11-20 10:23:09.000000000","message":"Two volume types. One has \"cached\" in extra spec, another don\u0027t. The one with \"cached\" cannot has \"multiattach\" be set at the same time.","commit_id":"fa3d046ed003a75017653e2cc72cf16768cfc299"},{"author":{"_account_id":11347,"name":"Rui Zang","email":"rui.zang@yandex.com","username":"rzang"},"change_message_id":"ae447e1ec4978ee77568e897e08b838bea9c1148","unresolved":false,"context_lines":[{"line_number":32,"context_line":"original volume symbol link with the new symbol link which generated by the"},{"line_number":33,"context_line":"cache software."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"It is Nova\u0027s responsibility to decide if the volume can be cached or not. e.g."},{"line_number":36,"context_line":"if the volume is with multiattach property, then Nova should not try to cache"},{"line_number":37,"context_line":"this volume, otherwise there will be data corruption."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_20f7655c","line":35,"in_reply_to":"3fa7e38b_7de666b3","updated":"2019-11-07 06:36:53.000000000","message":"\u003e Notes from the PTG:\n \u003e \n \u003e This should be an extra spec in a volume type. Cinder can then\n \u003e enforce that the volume type does not allow multiattach.\n \u003e \n \u003e That is also needed to be able to control this per-volume. We do\n \u003e not want all volumes of an instance to be cache-enabled or none of\n \u003e them. There are use cases where you may want the boot volume not\n \u003e cached, but the data volume cached.\n\nIn that case two volume types should be created even for the same backend  -- `volume_type_with_host_cache` and `volume_type_without_host_cache`. `volume_type_with_host_cache` will have the multi-attach flag set to false in extra specs.\nIs this the correct understanding?","commit_id":"fa3d046ed003a75017653e2cc72cf16768cfc299"},{"author":{"_account_id":11347,"name":"Rui Zang","email":"rui.zang@yandex.com","username":"rzang"},"change_message_id":"2ce589eb8d828d443c8a90628eca8631f275007a","unresolved":false,"context_lines":[{"line_number":32,"context_line":"original volume symbol link with the new symbol link which generated by the"},{"line_number":33,"context_line":"cache software."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"It is Nova\u0027s responsibility to decide if the volume can be cached or not. e.g."},{"line_number":36,"context_line":"if the volume is with multiattach property, then Nova should not try to cache"},{"line_number":37,"context_line":"this volume, otherwise there will be data corruption."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_03f39674","line":35,"in_reply_to":"3fa7e38b_7de666b3","updated":"2019-11-22 07:10:02.000000000","message":"If this is only for the use of Nova. When attaching a volume to a VM instance, nova cloud always look up (in DB) whether this volume has been attached to other instances as well and whether there is a cache in the middle. If a cache is there, fail the attach operation.\nSo why bother to do the marking in cinder?","commit_id":"fa3d046ed003a75017653e2cc72cf16768cfc299"},{"author":{"_account_id":11347,"name":"Rui Zang","email":"rui.zang@yandex.com","username":"rzang"},"change_message_id":"ae447e1ec4978ee77568e897e08b838bea9c1148","unresolved":false,"context_lines":[{"line_number":62,"context_line":"benefit for write io because every write io need to go to backend storage"},{"line_number":63,"context_line":"everytime for data integrity."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"This spec is trying to add the support for open-cas in os-brick. Meanwhile a"},{"line_number":66,"context_line":"common class will be added so it can be extended to support other cache"},{"line_number":67,"context_line":"software in future."},{"line_number":68,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_ae5fd80d","line":65,"range":{"start_line":65,"start_character":43,"end_line":65,"end_character":51},"updated":"2019-11-07 06:36:53.000000000","message":"maybe you need to introduce open-cas more.","commit_id":"fa3d046ed003a75017653e2cc72cf16768cfc299"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"1d16315e7a3a61e8a34ba58402a65561d463b336","unresolved":false,"context_lines":[{"line_number":62,"context_line":"benefit for write io because every write io need to go to backend storage"},{"line_number":63,"context_line":"everytime for data integrity."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"This spec is trying to add the support for open-cas in os-brick. Meanwhile a"},{"line_number":66,"context_line":"common class will be added so it can be extended to support other cache"},{"line_number":67,"context_line":"software in future."},{"line_number":68,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_90036e0c","line":65,"range":{"start_line":65,"start_character":43,"end_line":65,"end_character":51},"in_reply_to":"3fa7e38b_ae5fd80d","updated":"2019-11-20 10:23:09.000000000","message":"Done","commit_id":"fa3d046ed003a75017653e2cc72cf16768cfc299"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"fa35e4cbfef293afa31bfb881fb3efb30e861486","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"  * attach_volume()"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    This function would be called by Nova to setup cache for a volume when it"},{"line_number":92,"context_line":"    trying to attach the volume. In base class, the implemetation can simply be"},{"line_number":93,"context_line":"    \"pass\"."},{"line_number":94,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_c7c8e322","line":91,"range":{"start_line":91,"start_character":27,"end_line":91,"end_character":69},"updated":"2019-11-07 13:59:32.000000000","message":"I\u0027m against this, the interface with Nova needs to be limited as much as possible to connect_volume and disconnect_volume. os-brick can then decided if and how a cache should be setup for each volume it connects etc.","commit_id":"fa3d046ed003a75017653e2cc72cf16768cfc299"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"1d16315e7a3a61e8a34ba58402a65561d463b336","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"  * attach_volume()"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    This function would be called by Nova to setup cache for a volume when it"},{"line_number":92,"context_line":"    trying to attach the volume. In base class, the implemetation can simply be"},{"line_number":93,"context_line":"    \"pass\"."},{"line_number":94,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_50117652","line":91,"range":{"start_line":91,"start_character":27,"end_line":91,"end_character":69},"in_reply_to":"3fa7e38b_c7c8e322","updated":"2019-11-20 10:23:09.000000000","message":"this would be done in connect_volume and disconnect_volume.","commit_id":"fa3d046ed003a75017653e2cc72cf16768cfc299"},{"author":{"_account_id":11347,"name":"Rui Zang","email":"rui.zang@yandex.com","username":"rzang"},"change_message_id":"ae447e1ec4978ee77568e897e08b838bea9c1148","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"  * attach_volume()"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    This function would be called by Nova to setup cache for a volume when it"},{"line_number":92,"context_line":"    trying to attach the volume. In base class, the implemetation can simply be"},{"line_number":93,"context_line":"    \"pass\"."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"  * detach_volume()"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_aec11832","line":93,"range":{"start_line":91,"start_character":0,"end_line":93,"end_character":11},"updated":"2019-11-07 06:36:53.000000000","message":"Could you please describe at what point these interfaces will be called exactly, and what are the parameters.\nOne concrete question from me is that how to differentiate which cache driver to call into?","commit_id":"fa3d046ed003a75017653e2cc72cf16768cfc299"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"1d16315e7a3a61e8a34ba58402a65561d463b336","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"  * attach_volume()"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    This function would be called by Nova to setup cache for a volume when it"},{"line_number":92,"context_line":"    trying to attach the volume. In base class, the implemetation can simply be"},{"line_number":93,"context_line":"    \"pass\"."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"  * detach_volume()"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_10177e48","line":93,"range":{"start_line":91,"start_character":0,"end_line":93,"end_character":11},"in_reply_to":"3fa7e38b_aec11832","updated":"2019-11-20 10:23:09.000000000","message":"Done","commit_id":"fa3d046ed003a75017653e2cc72cf16768cfc299"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"4f9ece0be1b5cd0c018f8b983451f8bb0d9801c8","unresolved":false,"context_lines":[{"line_number":125,"context_line":"* Create a dedicated cache cluster. Mount all the cache (NVME SSD) in cache"},{"line_number":126,"context_line":"  cluster as a big cache pool. Then allocate a certain ammount of cache to a"},{"line_number":127,"context_line":"  specific volume. The allocated cache can be mounted on compute node through"},{"line_number":128,"context_line":"  NVMEof protocol. Then still use cache software to do the same cache."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"But this would be the compete between local PCIe and remote network. The"},{"line_number":131,"context_line":"disadvantage if doing like these ways is: the network of the storage server"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_c9cd9c30","line":128,"updated":"2019-11-01 14:51:52.000000000","message":"* Expose fast local storage to guests as ephemeral disks, and write a whitepaper on how to configure guests to use them as cache for various operating systems.","commit_id":"fa3d046ed003a75017653e2cc72cf16768cfc299"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"1d16315e7a3a61e8a34ba58402a65561d463b336","unresolved":false,"context_lines":[{"line_number":125,"context_line":"* Create a dedicated cache cluster. Mount all the cache (NVME SSD) in cache"},{"line_number":126,"context_line":"  cluster as a big cache pool. Then allocate a certain ammount of cache to a"},{"line_number":127,"context_line":"  specific volume. The allocated cache can be mounted on compute node through"},{"line_number":128,"context_line":"  NVMEof protocol. Then still use cache software to do the same cache."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"But this would be the compete between local PCIe and remote network. The"},{"line_number":131,"context_line":"disadvantage if doing like these ways is: the network of the storage server"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_f02bc27e","line":128,"in_reply_to":"3fa7e38b_c9cd9c30","updated":"2019-11-20 10:23:09.000000000","message":"Done","commit_id":"fa3d046ed003a75017653e2cc72cf16768cfc299"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0ed47157e031e55493570843b30f8ff4937b7cc0","unresolved":false,"context_lines":[{"line_number":26,"context_line":"In order to do the cache, three projects need to be changed. These are cinder,"},{"line_number":27,"context_line":"os-brick, and Nova. The mechanism is similar with volume encryption where"},{"line_number":28,"context_line":"dm-crypt is supported, cache software support would be added in os-brick. Nova"},{"line_number":29,"context_line":"will call os-brick when it is trying to attach a volume, os-brick then call the"},{"line_number":30,"context_line":"cache software to setup the cache for the volume. After that, a new virtual"},{"line_number":31,"context_line":"block device would be created and laying upon the original block device."},{"line_number":32,"context_line":"os-brick will expose this new virtual block device to Nova, meanwhile the"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_30f5da51","line":29,"range":{"start_line":29,"start_character":71,"end_line":29,"end_character":75},"updated":"2019-11-20 12:34:51.000000000","message":"calls","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0ed47157e031e55493570843b30f8ff4937b7cc0","unresolved":false,"context_lines":[{"line_number":42,"context_line":"cinder should guarantee these two properties not to be set at the same time."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Considering VM migration, cache software should not format the source volume"},{"line_number":45,"context_line":"(the volume be cached). So cache software such as bcache cannot be used. This"},{"line_number":46,"context_line":"spec only support open-cas. open-cas is easy to use. You just need to specify a"},{"line_number":47,"context_line":"block device as the cache device, and then can use this device to cache for"},{"line_number":48,"context_line":"other block devices. This is transparent to upper layer and lower layer."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_308ababb","line":45,"range":{"start_line":45,"start_character":12,"end_line":45,"end_character":14},"updated":"2019-11-20 12:34:51.000000000","message":"to be","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0ed47157e031e55493570843b30f8ff4937b7cc0","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Considering VM migration, cache software should not format the source volume"},{"line_number":45,"context_line":"(the volume be cached). So cache software such as bcache cannot be used. This"},{"line_number":46,"context_line":"spec only support open-cas. open-cas is easy to use. You just need to specify a"},{"line_number":47,"context_line":"block device as the cache device, and then can use this device to cache for"},{"line_number":48,"context_line":"other block devices. This is transparent to upper layer and lower layer."},{"line_number":49,"context_line":"Regarding upper layer, guest don\u0027t know it is using an emulated block device."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_90b28e95","line":46,"range":{"start_line":46,"start_character":10,"end_line":46,"end_character":17},"updated":"2019-11-20 12:34:51.000000000","message":"supports","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0ed47157e031e55493570843b30f8ff4937b7cc0","unresolved":false,"context_lines":[{"line_number":46,"context_line":"spec only support open-cas. open-cas is easy to use. You just need to specify a"},{"line_number":47,"context_line":"block device as the cache device, and then can use this device to cache for"},{"line_number":48,"context_line":"other block devices. This is transparent to upper layer and lower layer."},{"line_number":49,"context_line":"Regarding upper layer, guest don\u0027t know it is using an emulated block device."},{"line_number":50,"context_line":"Regarding lower layer, backend volume don\u0027t know it is cached, and the data in"},{"line_number":51,"context_line":"backend volume will not have extra change because of cache. That means even if"},{"line_number":52,"context_line":"the cache is lost for some reason, the backend volume can be mounted to other"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_70ad922f","line":49,"range":{"start_line":49,"start_character":29,"end_line":49,"end_character":35},"updated":"2019-11-20 12:34:51.000000000","message":"doesn\u0027t","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0ed47157e031e55493570843b30f8ff4937b7cc0","unresolved":false,"context_lines":[{"line_number":47,"context_line":"block device as the cache device, and then can use this device to cache for"},{"line_number":48,"context_line":"other block devices. This is transparent to upper layer and lower layer."},{"line_number":49,"context_line":"Regarding upper layer, guest don\u0027t know it is using an emulated block device."},{"line_number":50,"context_line":"Regarding lower layer, backend volume don\u0027t know it is cached, and the data in"},{"line_number":51,"context_line":"backend volume will not have extra change because of cache. That means even if"},{"line_number":52,"context_line":"the cache is lost for some reason, the backend volume can be mounted to other"},{"line_number":53,"context_line":"places and available immediately. open-cas supports below cache modes:"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_10a69e55","line":50,"range":{"start_line":50,"start_character":38,"end_line":50,"end_character":43},"updated":"2019-11-20 12:34:51.000000000","message":"doesn\u0027t","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0ed47157e031e55493570843b30f8ff4937b7cc0","unresolved":false,"context_lines":[{"line_number":50,"context_line":"Regarding lower layer, backend volume don\u0027t know it is cached, and the data in"},{"line_number":51,"context_line":"backend volume will not have extra change because of cache. That means even if"},{"line_number":52,"context_line":"the cache is lost for some reason, the backend volume can be mounted to other"},{"line_number":53,"context_line":"places and available immediately. open-cas supports below cache modes:"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"  - Write-Through (WT): write to cache and backend storage at the same time. So"},{"line_number":56,"context_line":"    the data is fully synced in cache and backend storage. There will not be"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_30a39a45","line":53,"range":{"start_line":53,"start_character":11,"end_line":53,"end_character":20},"updated":"2019-11-20 12:34:51.000000000","message":"\u0027become available\u0027 or \u0027get available\u0027","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0ed47157e031e55493570843b30f8ff4937b7cc0","unresolved":false,"context_lines":[{"line_number":50,"context_line":"Regarding lower layer, backend volume don\u0027t know it is cached, and the data in"},{"line_number":51,"context_line":"backend volume will not have extra change because of cache. That means even if"},{"line_number":52,"context_line":"the cache is lost for some reason, the backend volume can be mounted to other"},{"line_number":53,"context_line":"places and available immediately. open-cas supports below cache modes:"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"  - Write-Through (WT): write to cache and backend storage at the same time. So"},{"line_number":56,"context_line":"    the data is fully synced in cache and backend storage. There will not be"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_f0666229","line":53,"range":{"start_line":53,"start_character":52,"end_line":53,"end_character":69},"updated":"2019-11-20 12:34:51.000000000","message":"\u0027the cache modes below\u0027 or \u0027the following cache modes\u0027","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"ed9ad5158e09174f06863b203f27fcfd0f3d268e","unresolved":false,"context_lines":[{"line_number":52,"context_line":"the cache is lost for some reason, the backend volume can be mounted to other"},{"line_number":53,"context_line":"places and available immediately. open-cas supports below cache modes:"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"  - Write-Through (WT): write to cache and backend storage at the same time. So"},{"line_number":56,"context_line":"    the data is fully synced in cache and backend storage. There will not be"},{"line_number":57,"context_line":"    any data corruption when cache become invalid."},{"line_number":58,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_3e3febb5","line":55,"updated":"2019-11-20 12:47:03.000000000","message":"These lines are over-indented and being rendered as a citation: https://storage.gra1.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_b6e/684556/5/check/openstack-tox-docs/b6e039c/docs/specs/untargeted/support-volume-local-cache.htmlh_","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0ed47157e031e55493570843b30f8ff4937b7cc0","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"  - Write-Through (WT): write to cache and backend storage at the same time. So"},{"line_number":56,"context_line":"    the data is fully synced in cache and backend storage. There will not be"},{"line_number":57,"context_line":"    any data corruption when cache become invalid."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"  - Write-Around (WA): like Write-Through, but only cache for volume blocks"},{"line_number":60,"context_line":"    that already in cache."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_b06c6a07","line":57,"range":{"start_line":57,"start_character":35,"end_line":57,"end_character":41},"updated":"2019-11-20 12:34:51.000000000","message":"becomes","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0ed47157e031e55493570843b30f8ff4937b7cc0","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    any data corruption when cache become invalid."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"  - Write-Around (WA): like Write-Through, but only cache for volume blocks"},{"line_number":60,"context_line":"    that already in cache."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"  - Write-Invalidate (WI): write to backend storage and invalidate cache"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_d04a4681","line":60,"range":{"start_line":60,"start_character":4,"end_line":60,"end_character":16},"updated":"2019-11-20 12:34:51.000000000","message":"that are already","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0ed47157e031e55493570843b30f8ff4937b7cc0","unresolved":false,"context_lines":[{"line_number":62,"context_line":"  - Write-Invalidate (WI): write to backend storage and invalidate cache"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"  - Write-Back (WB): write to cache and lazy write to backend storage. This"},{"line_number":65,"context_line":"    mode has better write performance but is possible to lost data because the"},{"line_number":66,"context_line":"    latest data is in cache, but may not in backend storage."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"  - Write-Only (WO): like write-back, but only cache write, will not cache"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_b03a2ae3","line":65,"range":{"start_line":65,"start_character":54,"end_line":65,"end_character":66},"updated":"2019-11-20 12:34:51.000000000","message":"\u0027to lose data\u0027 or \u0027to have the data lost\u0027","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0ed47157e031e55493570843b30f8ff4937b7cc0","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"  - Write-Back (WB): write to cache and lazy write to backend storage. This"},{"line_number":65,"context_line":"    mode has better write performance but is possible to lost data because the"},{"line_number":66,"context_line":"    latest data is in cache, but may not in backend storage."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"  - Write-Only (WO): like write-back, but only cache write, will not cache"},{"line_number":69,"context_line":"    read. So this mode also has the possibility to lost data."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_7009122f","line":66,"range":{"start_line":66,"start_character":33,"end_line":66,"end_character":59},"updated":"2019-11-20 12:34:51.000000000","message":"\u0027may not be in the backend storage\u0027 or \u0027may not be flushed to the backend storage\u0027","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0ed47157e031e55493570843b30f8ff4937b7cc0","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    latest data is in cache, but may not in backend storage."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"  - Write-Only (WO): like write-back, but only cache write, will not cache"},{"line_number":69,"context_line":"    read. So this mode also has the possibility to lost data."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"So the first 3 modes are suitable for VM volume caching, because every write io"},{"line_number":72,"context_line":"is both written to cache and backend storage, so data is integrited. This"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_f302ec08","line":69,"range":{"start_line":69,"start_character":47,"end_line":69,"end_character":55},"updated":"2019-11-20 12:34:51.000000000","message":"to lose","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0ed47157e031e55493570843b30f8ff4937b7cc0","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    read. So this mode also has the possibility to lost data."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"So the first 3 modes are suitable for VM volume caching, because every write io"},{"line_number":72,"context_line":"is both written to cache and backend storage, so data is integrited. This"},{"line_number":73,"context_line":"feature is suitable for read intensive scenario where data is cached. E.g. some"},{"line_number":74,"context_line":"customer uses this for AI traning, web site, database, etc. But it will be no"},{"line_number":75,"context_line":"benefit for write io because every write io need to go to backend storage"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_7337dce4","line":72,"range":{"start_line":72,"start_character":49,"end_line":72,"end_character":67},"updated":"2019-11-20 12:34:51.000000000","message":"data integrity is guaranteed","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0ed47157e031e55493570843b30f8ff4937b7cc0","unresolved":false,"context_lines":[{"line_number":83,"context_line":"  io latency)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"* In write intensive scenarios, e.g. video surveillance, the latest data"},{"line_number":86,"context_line":"  written would be read more frequently. So if select cache mode as"},{"line_number":87,"context_line":"  \"Write-Only\", the read performance would be boost because the latest written"},{"line_number":88,"context_line":"  data is cached."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_936a98b2","line":87,"range":{"start_line":86,"start_character":44,"end_line":87,"end_character":14},"updated":"2019-11-20 12:34:51.000000000","message":"if \"Write-Only\" cache mode is selected","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0ed47157e031e55493570843b30f8ff4937b7cc0","unresolved":false,"context_lines":[{"line_number":136,"context_line":"  * Volume local cache cannot work with multiattach. So when adding \"cached\" to"},{"line_number":137,"context_line":"    extra-spec, cinder should check if \"multiattach\" property exists or not. If"},{"line_number":138,"context_line":"    \"multiattach\" exists, then cinder should refuse to add \"cached\" property to"},{"line_number":139,"context_line":"    volume type, vice versa."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"  * Report \"cached\" property to volume details. So Nova can know whether a"},{"line_number":142,"context_line":"    volume need to be cached or not."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_53ad00e8","line":139,"range":{"start_line":139,"start_character":16,"end_line":139,"end_character":27},"updated":"2019-11-20 12:34:51.000000000","message":"and vice versa","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0ed47157e031e55493570843b30f8ff4937b7cc0","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    volume type, vice versa."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"  * Report \"cached\" property to volume details. So Nova can know whether a"},{"line_number":142,"context_line":"    volume need to be cached or not."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"- Add a common framework for different cache software in os-brick. This"},{"line_number":145,"context_line":"  framework should be flexible to support different cache software."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_13b30850","line":142,"range":{"start_line":142,"start_character":11,"end_line":142,"end_character":15},"updated":"2019-11-20 12:34:51.000000000","message":"needs","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"ed9ad5158e09174f06863b203f27fcfd0f3d268e","unresolved":false,"context_lines":[{"line_number":146,"context_line":""},{"line_number":147,"context_line":"  1) A base class would be added and the main functions would be:"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    * attach_volume()"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"      This function would be called by Nova (in function _connect_volume) to"},{"line_number":152,"context_line":"      setup cache for a volume when it trying to attach the volume. In base"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_de79f792","line":149,"updated":"2019-11-20 12:47:03.000000000","message":"These lines are over-indented and being rendered as a citation: https://storage.gra1.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_b6e/684556/5/check/openstack-tox-docs/b6e039c/docs/specs/untargeted/support-volume-local-cache.html","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0ed47157e031e55493570843b30f8ff4937b7cc0","unresolved":false,"context_lines":[{"line_number":178,"context_line":"      Meanwhile a function like get_cache_class() would be added to go through"},{"line_number":179,"context_line":"      the map to find the correct class."},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"- Add the support of open-cas in os-brick."},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"  Implement functions attach_volume/detach_volume for open-cas."},{"line_number":184,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_b3831403","line":181,"range":{"start_line":181,"start_character":18,"end_line":181,"end_character":20},"updated":"2019-11-20 12:34:51.000000000","message":"for","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0ed47157e031e55493570843b30f8ff4937b7cc0","unresolved":false,"context_lines":[{"line_number":183,"context_line":"  Implement functions attach_volume/detach_volume for open-cas."},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"Nova need to call os-brick to set cache for the volume only when the volume has"},{"line_number":187,"context_line":"the property of \"cached\". Let cinder to determine and set this property, just"},{"line_number":188,"context_line":"like the way did for volume encryption. e.g. if the volume with property"},{"line_number":189,"context_line":"\"multiattach\", cinder would not set \"cached\" for it. Code work flow would be"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_537c201f","line":186,"range":{"start_line":186,"start_character":5,"end_line":186,"end_character":9},"updated":"2019-11-20 12:34:51.000000000","message":"needs","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0ed47157e031e55493570843b30f8ff4937b7cc0","unresolved":false,"context_lines":[{"line_number":184,"context_line":""},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"Nova need to call os-brick to set cache for the volume only when the volume has"},{"line_number":187,"context_line":"the property of \"cached\". Let cinder to determine and set this property, just"},{"line_number":188,"context_line":"like the way did for volume encryption. e.g. if the volume with property"},{"line_number":189,"context_line":"\"multiattach\", cinder would not set \"cached\" for it. Code work flow would be"},{"line_number":190,"context_line":"like::"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_d3b6d0dc","line":187,"range":{"start_line":187,"start_character":25,"end_line":187,"end_character":49},"updated":"2019-11-20 12:34:51.000000000","message":"Let Cinder determine","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0ed47157e031e55493570843b30f8ff4937b7cc0","unresolved":false,"context_lines":[{"line_number":185,"context_line":""},{"line_number":186,"context_line":"Nova need to call os-brick to set cache for the volume only when the volume has"},{"line_number":187,"context_line":"the property of \"cached\". Let cinder to determine and set this property, just"},{"line_number":188,"context_line":"like the way did for volume encryption. e.g. if the volume with property"},{"line_number":189,"context_line":"\"multiattach\", cinder would not set \"cached\" for it. Code work flow would be"},{"line_number":190,"context_line":"like::"},{"line_number":191,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_b3b1d4e2","line":188,"range":{"start_line":188,"start_character":5,"end_line":188,"end_character":16},"updated":"2019-11-20 12:34:51.000000000","message":"\u0027the way we did\u0027 or \u0027the way it did\u0027","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0ed47157e031e55493570843b30f8ff4937b7cc0","unresolved":false,"context_lines":[{"line_number":185,"context_line":""},{"line_number":186,"context_line":"Nova need to call os-brick to set cache for the volume only when the volume has"},{"line_number":187,"context_line":"the property of \"cached\". Let cinder to determine and set this property, just"},{"line_number":188,"context_line":"like the way did for volume encryption. e.g. if the volume with property"},{"line_number":189,"context_line":"\"multiattach\", cinder would not set \"cached\" for it. Code work flow would be"},{"line_number":190,"context_line":"like::"},{"line_number":191,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_13c0e82a","line":188,"range":{"start_line":188,"start_character":59,"end_line":188,"end_character":72},"updated":"2019-11-20 12:34:51.000000000","message":"has property","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0ed47157e031e55493570843b30f8ff4937b7cc0","unresolved":false,"context_lines":[{"line_number":186,"context_line":"Nova need to call os-brick to set cache for the volume only when the volume has"},{"line_number":187,"context_line":"the property of \"cached\". Let cinder to determine and set this property, just"},{"line_number":188,"context_line":"like the way did for volume encryption. e.g. if the volume with property"},{"line_number":189,"context_line":"\"multiattach\", cinder would not set \"cached\" for it. Code work flow would be"},{"line_number":190,"context_line":"like::"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"              Nova                                        os-brick"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_73ccbc60","line":189,"range":{"start_line":189,"start_character":15,"end_line":189,"end_character":21},"updated":"2019-11-20 12:34:51.000000000","message":"Cinder","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0ed47157e031e55493570843b30f8ff4937b7cc0","unresolved":false,"context_lines":[{"line_number":251,"context_line":"    other VMs. Unlike RAM, SSD normally is in TB level and large enough to"},{"line_number":252,"context_line":"    cache for all the VMs in one node."},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"  - The owner of the VM should setup cache explicitly. But not all the VM owner"},{"line_number":255,"context_line":"    want to do this, and not all the VM owner has the knowledge to do this. But"},{"line_number":256,"context_line":"    they for sure want the volume performance is better by default."},{"line_number":257,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_336e442c","line":254,"range":{"start_line":254,"start_character":63,"end_line":254,"end_character":79},"updated":"2019-11-20 12:34:51.000000000","message":"\u0027all the VM owners\u0027 or \u0027every VM owner\u0027","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0ed47157e031e55493570843b30f8ff4937b7cc0","unresolved":false,"context_lines":[{"line_number":252,"context_line":"    cache for all the VMs in one node."},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"  - The owner of the VM should setup cache explicitly. But not all the VM owner"},{"line_number":255,"context_line":"    want to do this, and not all the VM owner has the knowledge to do this. But"},{"line_number":256,"context_line":"    they for sure want the volume performance is better by default."},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"* Create a dedicated cache cluster. Mount all the cache (NVME SSD) in cache"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_f3650c46","line":255,"range":{"start_line":255,"start_character":29,"end_line":255,"end_character":45},"updated":"2019-11-20 12:34:51.000000000","message":"\u0027all the VM owners\u0027 or \u0027every VM owner\u0027","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0ed47157e031e55493570843b30f8ff4937b7cc0","unresolved":false,"context_lines":[{"line_number":253,"context_line":""},{"line_number":254,"context_line":"  - The owner of the VM should setup cache explicitly. But not all the VM owner"},{"line_number":255,"context_line":"    want to do this, and not all the VM owner has the knowledge to do this. But"},{"line_number":256,"context_line":"    they for sure want the volume performance is better by default."},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"* Create a dedicated cache cluster. Mount all the cache (NVME SSD) in cache"},{"line_number":259,"context_line":"  cluster as a big cache pool. Then allocate a certain ammount of cache to a"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_f3caec17","line":256,"range":{"start_line":256,"start_character":18,"end_line":256,"end_character":55},"updated":"2019-11-20 12:34:51.000000000","message":"\u0027want that the volume performance is better\u0027 or \u0027want the volume performance to be better\u0027","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0ed47157e031e55493570843b30f8ff4937b7cc0","unresolved":false,"context_lines":[{"line_number":256,"context_line":"    they for sure want the volume performance is better by default."},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"* Create a dedicated cache cluster. Mount all the cache (NVME SSD) in cache"},{"line_number":259,"context_line":"  cluster as a big cache pool. Then allocate a certain ammount of cache to a"},{"line_number":260,"context_line":"  specific volume. The allocated cache can be mounted on compute node through"},{"line_number":261,"context_line":"  NVMEof protocol. Then still use cache software to do the same cache."},{"line_number":262,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_13df88d7","line":259,"range":{"start_line":259,"start_character":55,"end_line":259,"end_character":62},"updated":"2019-11-20 12:34:51.000000000","message":"amount","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0ed47157e031e55493570843b30f8ff4937b7cc0","unresolved":false,"context_lines":[{"line_number":258,"context_line":"* Create a dedicated cache cluster. Mount all the cache (NVME SSD) in cache"},{"line_number":259,"context_line":"  cluster as a big cache pool. Then allocate a certain ammount of cache to a"},{"line_number":260,"context_line":"  specific volume. The allocated cache can be mounted on compute node through"},{"line_number":261,"context_line":"  NVMEof protocol. Then still use cache software to do the same cache."},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"  But this would be the compete between local PCIe and remote network. The"},{"line_number":264,"context_line":"  disadvantage if doing like these ways is: the network of the storage server"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_73727ce5","line":261,"range":{"start_line":261,"start_character":24,"end_line":261,"end_character":33},"updated":"2019-11-20 12:34:51.000000000","message":"\u0027keep using\u0027 or \u0027continue using\u0027","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0ed47157e031e55493570843b30f8ff4937b7cc0","unresolved":false,"context_lines":[{"line_number":258,"context_line":"* Create a dedicated cache cluster. Mount all the cache (NVME SSD) in cache"},{"line_number":259,"context_line":"  cluster as a big cache pool. Then allocate a certain ammount of cache to a"},{"line_number":260,"context_line":"  specific volume. The allocated cache can be mounted on compute node through"},{"line_number":261,"context_line":"  NVMEof protocol. Then still use cache software to do the same cache."},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"  But this would be the compete between local PCIe and remote network. The"},{"line_number":264,"context_line":"  disadvantage if doing like these ways is: the network of the storage server"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_138d48d3","line":261,"range":{"start_line":261,"start_character":2,"end_line":261,"end_character":8},"updated":"2019-11-20 12:34:51.000000000","message":"NVMeOF","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0ed47157e031e55493570843b30f8ff4937b7cc0","unresolved":false,"context_lines":[{"line_number":264,"context_line":"  disadvantage if doing like these ways is: the network of the storage server"},{"line_number":265,"context_line":"  would be bottleneck."},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"  - Latency) Storage cluster typically provide volume through iscsi/fc"},{"line_number":268,"context_line":"    protocol, or through librbd if ceph is used. The latency would be"},{"line_number":269,"context_line":"    millisecond level. Even NVME over TCP, the latency would be hundreds of"},{"line_number":270,"context_line":"    microsecond, depends on the network topology. As a contrast, the latency of"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_f32e6cf8","line":267,"range":{"start_line":267,"start_character":39,"end_line":267,"end_character":46},"updated":"2019-11-20 12:34:51.000000000","message":"provides","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0ed47157e031e55493570843b30f8ff4937b7cc0","unresolved":false,"context_lines":[{"line_number":267,"context_line":"  - Latency) Storage cluster typically provide volume through iscsi/fc"},{"line_number":268,"context_line":"    protocol, or through librbd if ceph is used. The latency would be"},{"line_number":269,"context_line":"    millisecond level. Even NVME over TCP, the latency would be hundreds of"},{"line_number":270,"context_line":"    microsecond, depends on the network topology. As a contrast, the latency of"},{"line_number":271,"context_line":"    NVME SSD would be around 10 us, take Intel Optane SSD p4800x as example."},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"* Cache can be added in backend storage side, e.g. in ceph. Storage server"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_d329f0f1","line":270,"range":{"start_line":270,"start_character":17,"end_line":270,"end_character":24},"updated":"2019-11-20 12:34:51.000000000","message":"depending","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0ed47157e031e55493570843b30f8ff4937b7cc0","unresolved":false,"context_lines":[{"line_number":266,"context_line":""},{"line_number":267,"context_line":"  - Latency) Storage cluster typically provide volume through iscsi/fc"},{"line_number":268,"context_line":"    protocol, or through librbd if ceph is used. The latency would be"},{"line_number":269,"context_line":"    millisecond level. Even NVME over TCP, the latency would be hundreds of"},{"line_number":270,"context_line":"    microsecond, depends on the network topology. As a contrast, the latency of"},{"line_number":271,"context_line":"    NVME SSD would be around 10 us, take Intel Optane SSD p4800x as example."},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"* Cache can be added in backend storage side, e.g. in ceph. Storage server"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_13eea8b4","line":270,"range":{"start_line":269,"start_character":64,"end_line":270,"end_character":15},"updated":"2019-11-20 12:34:51.000000000","message":"hundreds of microseconds","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"0ed47157e031e55493570843b30f8ff4937b7cc0","unresolved":false,"context_lines":[{"line_number":316,"context_line":"Developer impact"},{"line_number":317,"context_line":"----------------"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"* The support of other cache software can be added by other developers later"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"Implementation"},{"line_number":322,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_d3049080","line":319,"range":{"start_line":319,"start_character":14,"end_line":319,"end_character":16},"updated":"2019-11-20 12:34:51.000000000","message":"for","commit_id":"fd28218c108857940fc65cdb716903fdd6fdef0d"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d2469b0baba4e0d665d5b2f51a7177c28d664445","unresolved":false,"context_lines":[{"line_number":33,"context_line":"original block device mount point will remain unchanged. All of the cache setup"},{"line_number":34,"context_line":"and teardown would be handled within os-brick."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"A property would be added in extra-spec of volume type. If a volume type has"},{"line_number":37,"context_line":"extra-spec of \"cached \u003cis\u003e True\", then it means the related volumes would be"},{"line_number":38,"context_line":"cached."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Like all the local cache solution, multi-attach cannot work. This is because"},{"line_number":41,"context_line":"cache on node1 don\u0027t know the changes made to backend volume by node2. So"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa7e38b_c7a2ee97","line":38,"range":{"start_line":36,"start_character":0,"end_line":38,"end_character":7},"updated":"2019-12-19 21:12:24.000000000","message":"This is a minor point, but I think this property should be named \u0027cachable\u0027, because whether or not the volume will actually be cached will depend on whethr the VM it\u0027s attached to is on a hypervisor with a cache.","commit_id":"a265ab99790b14113dd43aa67875ca2424d128c4"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"5f9eb357fadbe4b8894daf80d583163bd26c9fe7","unresolved":false,"context_lines":[{"line_number":33,"context_line":"original block device mount point will remain unchanged. All of the cache setup"},{"line_number":34,"context_line":"and teardown would be handled within os-brick."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"A property would be added in extra-spec of volume type. If a volume type has"},{"line_number":37,"context_line":"extra-spec of \"cached \u003cis\u003e True\", then it means the related volumes would be"},{"line_number":38,"context_line":"cached."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Like all the local cache solution, multi-attach cannot work. This is because"},{"line_number":41,"context_line":"cache on node1 don\u0027t know the changes made to backend volume by node2. So"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa7e38b_451a3dc7","line":38,"range":{"start_line":36,"start_character":0,"end_line":38,"end_character":7},"in_reply_to":"3fa7e38b_c7a2ee97","updated":"2019-12-31 08:30:54.000000000","message":"Fixed, thanks","commit_id":"a265ab99790b14113dd43aa67875ca2424d128c4"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d2469b0baba4e0d665d5b2f51a7177c28d664445","unresolved":false,"context_lines":[{"line_number":84,"context_line":"  io latency)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"* In write intensive scenarios, e.g. video surveillance, the latest data"},{"line_number":87,"context_line":"  written would be read more frequently. So if \"Write-Only\" cache mode is"},{"line_number":88,"context_line":"  selected, the read performance would be boost because the latest written data"},{"line_number":89,"context_line":"  is cached."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Proposed change"},{"line_number":92,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa7e38b_18306355","line":89,"range":{"start_line":87,"start_character":41,"end_line":89,"end_character":12},"updated":"2019-12-19 21:12:24.000000000","message":"From what you said at line 72, I got the impression that you were only going to allow the first 3 modes (WT, WA, WI).  If that\u0027s not the case, please rewrite that paragraph, or add another sentence about wanting to allow all modes, because for some applications, users may want to accept the speed/data integrity tradeoff.","commit_id":"a265ab99790b14113dd43aa67875ca2424d128c4"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"5f9eb357fadbe4b8894daf80d583163bd26c9fe7","unresolved":false,"context_lines":[{"line_number":84,"context_line":"  io latency)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"* In write intensive scenarios, e.g. video surveillance, the latest data"},{"line_number":87,"context_line":"  written would be read more frequently. So if \"Write-Only\" cache mode is"},{"line_number":88,"context_line":"  selected, the read performance would be boost because the latest written data"},{"line_number":89,"context_line":"  is cached."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Proposed change"},{"line_number":92,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa7e38b_a51e9171","line":89,"range":{"start_line":87,"start_character":41,"end_line":89,"end_character":12},"in_reply_to":"3fa7e38b_18306355","updated":"2019-12-31 08:30:54.000000000","message":"It makes sense. I changed paragraph in line 72 to add scenarios for last two cache modes.","commit_id":"a265ab99790b14113dd43aa67875ca2424d128c4"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d2469b0baba4e0d665d5b2f51a7177c28d664445","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Proposed change"},{"line_number":92,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"The final solution would be like::"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"                        Compute Node"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa7e38b_131da461","line":93,"updated":"2019-12-19 21:12:24.000000000","message":"It would be helpful to have some more info in this section about how the cache is configured.  Is it possible to specify the cache-mode per device, or must all cached devices use the same mode?  Can the mode be set dynamically, or does the operator determine it by configuration? Are all volumes going to share the same cache, or will it be possible to use multiple caches in an open-cas instance?\n\nIs os-brick going to be aware of the cache mode, or is that meant to be transparent?","commit_id":"a265ab99790b14113dd43aa67875ca2424d128c4"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"5f9eb357fadbe4b8894daf80d583163bd26c9fe7","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Proposed change"},{"line_number":92,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"The final solution would be like::"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"                        Compute Node"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa7e38b_45279dc9","line":93,"in_reply_to":"3fa7e38b_131da461","updated":"2019-12-31 08:30:54.000000000","message":"Added more explanation.","commit_id":"a265ab99790b14113dd43aa67875ca2424d128c4"}],"specs/ussuri/support-volume-local-cache.rst":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This blueprint proposes to add support of volume local cache in cinder and"},{"line_number":14,"context_line":"os-brick. Cache software such as open-cas [4]_ can use fast NVME SSD to cache"},{"line_number":15,"context_line":"for the slow remote volume."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_3d169f4c","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":26},"updated":"2020-01-14 20:36:31.000000000","message":"nit: replace with: \"slow remote volumes\"","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Currently there\u0027re different types of fast NVME SSDs, such as Intel Optane SSD,"},{"line_number":21,"context_line":"which r/w throughput can be 2.x~3.x GB/s, latency can be ~10 us. While typical"},{"line_number":22,"context_line":"remote volume for a VM can be hundreds of MB/s, latency can be millisecond"},{"line_number":23,"context_line":"level (iscsi / rbd). So these fast SSDs can be mounted on compute node locally"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_bd1b6f6d","line":20,"range":{"start_line":20,"start_character":10,"end_line":20,"end_character":18},"updated":"2020-01-14 20:36:31.000000000","message":"nit: there are","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Currently there\u0027re different types of fast NVME SSDs, such as Intel Optane SSD,"},{"line_number":21,"context_line":"which r/w throughput can be 2.x~3.x GB/s, latency can be ~10 us. While typical"},{"line_number":22,"context_line":"remote volume for a VM can be hundreds of MB/s, latency can be millisecond"},{"line_number":23,"context_line":"level (iscsi / rbd). So these fast SSDs can be mounted on compute node locally"},{"line_number":24,"context_line":"and used as a cache for remote volumes."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_7da897d9","line":21,"range":{"start_line":21,"start_character":42,"end_line":21,"end_character":58},"updated":"2020-01-14 20:36:31.000000000","message":"nit: with latency as low as","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Currently there\u0027re different types of fast NVME SSDs, such as Intel Optane SSD,"},{"line_number":21,"context_line":"which r/w throughput can be 2.x~3.x GB/s, latency can be ~10 us. While typical"},{"line_number":22,"context_line":"remote volume for a VM can be hundreds of MB/s, latency can be millisecond"},{"line_number":23,"context_line":"level (iscsi / rbd). So these fast SSDs can be mounted on compute node locally"},{"line_number":24,"context_line":"and used as a cache for remote volumes."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"In order to do the cache, three projects need to be changed. These are cinder,"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_bd77ef8e","line":23,"range":{"start_line":22,"start_character":48,"end_line":23,"end_character":5},"updated":"2020-01-14 20:36:31.000000000","message":"nit: and the latency can be at the millisecond level","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":20,"context_line":"Currently there\u0027re different types of fast NVME SSDs, such as Intel Optane SSD,"},{"line_number":21,"context_line":"which r/w throughput can be 2.x~3.x GB/s, latency can be ~10 us. While typical"},{"line_number":22,"context_line":"remote volume for a VM can be hundreds of MB/s, latency can be millisecond"},{"line_number":23,"context_line":"level (iscsi / rbd). So these fast SSDs can be mounted on compute node locally"},{"line_number":24,"context_line":"and used as a cache for remote volumes."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"In order to do the cache, three projects need to be changed. These are cinder,"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_7d91779b","line":23,"range":{"start_line":23,"start_character":55,"end_line":23,"end_character":78},"updated":"2020-01-14 20:36:31.000000000","message":"nit: locally on compute nodes","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":24,"context_line":"and used as a cache for remote volumes."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"In order to do the cache, three projects need to be changed. These are cinder,"},{"line_number":27,"context_line":"os-brick, and Nova. The mechanism is similar with volume encryption where"},{"line_number":28,"context_line":"dm-crypt is supported, cache software support would be added in os-brick. Nova"},{"line_number":29,"context_line":"will call os-brick when it is trying to attach a volume, os-brick then calls"},{"line_number":30,"context_line":"the cache software to setup the cache for the volume. After that, a new virtual"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_3db9bf15","line":27,"range":{"start_line":27,"start_character":45,"end_line":27,"end_character":49},"updated":"2020-01-14 20:36:31.000000000","message":"nit: to","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"In order to do the cache, three projects need to be changed. These are cinder,"},{"line_number":27,"context_line":"os-brick, and Nova. The mechanism is similar with volume encryption where"},{"line_number":28,"context_line":"dm-crypt is supported, cache software support would be added in os-brick. Nova"},{"line_number":29,"context_line":"will call os-brick when it is trying to attach a volume, os-brick then calls"},{"line_number":30,"context_line":"the cache software to setup the cache for the volume. After that, a new virtual"},{"line_number":31,"context_line":"block device would be created and laying upon the original block device."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_1d5f23e5","line":28,"range":{"start_line":28,"start_character":72,"end_line":28,"end_character":78},"updated":"2020-01-14 20:36:31.000000000","message":"nit: and Nova","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"In order to do the cache, three projects need to be changed. These are cinder,"},{"line_number":27,"context_line":"os-brick, and Nova. The mechanism is similar with volume encryption where"},{"line_number":28,"context_line":"dm-crypt is supported, cache software support would be added in os-brick. Nova"},{"line_number":29,"context_line":"will call os-brick when it is trying to attach a volume, os-brick then calls"},{"line_number":30,"context_line":"the cache software to setup the cache for the volume. After that, a new virtual"},{"line_number":31,"context_line":"block device would be created and laying upon the original block device."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_3d4e9f39","line":28,"range":{"start_line":28,"start_character":12,"end_line":28,"end_character":28},"updated":"2020-01-14 20:36:31.000000000","message":"nit: use. Cache","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":33,"context_line":"original block device mount point will remain unchanged. All of the cache setup"},{"line_number":34,"context_line":"and teardown would be handled within os-brick."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"A property would be added in extra-spec of volume type. If a volume type has"},{"line_number":37,"context_line":"extra-spec of \"cachable \u003cis\u003e True\", then it means the related volumes would be"},{"line_number":38,"context_line":"cached in compute node locally."},{"line_number":39,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_1dd2c334","line":36,"range":{"start_line":36,"start_character":29,"end_line":36,"end_character":54},"updated":"2020-01-14 20:36:31.000000000","message":"nit: the extra specs of the volume type","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":34,"context_line":"and teardown would be handled within os-brick."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"A property would be added in extra-spec of volume type. If a volume type has"},{"line_number":37,"context_line":"extra-spec of \"cachable \u003cis\u003e True\", then it means the related volumes would be"},{"line_number":38,"context_line":"cached in compute node locally."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Like all the local cache solution, multi-attach cannot work with it. This is"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_dd6bcbed","line":37,"range":{"start_line":37,"start_character":15,"end_line":37,"end_character":23},"updated":"2020-01-14 20:36:31.000000000","message":"-1: I prefer if we use cacheable.  It is also what the W3C uses in their official text.  Google also returns more hits,  1,430,000 vs 121,000","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":34,"context_line":"and teardown would be handled within os-brick."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"A property would be added in extra-spec of volume type. If a volume type has"},{"line_number":37,"context_line":"extra-spec of \"cachable \u003cis\u003e True\", then it means the related volumes would be"},{"line_number":38,"context_line":"cached in compute node locally."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Like all the local cache solution, multi-attach cannot work with it. This is"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_ef612e12","line":37,"range":{"start_line":37,"start_character":24,"end_line":37,"end_character":34},"updated":"2020-01-14 20:36:31.000000000","message":"-1: Why would we set it to \u003cis\u003e True?  This is not a backend specific feature that will be used in the scheduler to filter.","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"11bf462f7e01c4902e27a25de03cc511be651d9d","unresolved":false,"context_lines":[{"line_number":34,"context_line":"and teardown would be handled within os-brick."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"A property would be added in extra-spec of volume type. If a volume type has"},{"line_number":37,"context_line":"extra-spec of \"cachable \u003cis\u003e True\", then it means the related volumes would be"},{"line_number":38,"context_line":"cached in compute node locally."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Like all the local cache solution, multi-attach cannot work with it. This is"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_74b98214","line":37,"range":{"start_line":37,"start_character":24,"end_line":37,"end_character":34},"in_reply_to":"3fa7e38b_05fca9b4","updated":"2020-01-15 13:12:53.000000000","message":"If we want the drivers to report this (remote fs drivers would fall in the non-cacheable category) then when modifying the volume type we should have the code to prevent users from setting a volume type that would always fail to create, right? Otherwise this would not be user friendly at all. ie: backend is Ceph and I want it cacheable.","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"2db68389598336c15a202a152692776e56519c84","unresolved":false,"context_lines":[{"line_number":34,"context_line":"and teardown would be handled within os-brick."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"A property would be added in extra-spec of volume type. If a volume type has"},{"line_number":37,"context_line":"extra-spec of \"cachable \u003cis\u003e True\", then it means the related volumes would be"},{"line_number":38,"context_line":"cached in compute node locally."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Like all the local cache solution, multi-attach cannot work with it. This is"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_dddd0140","line":37,"range":{"start_line":37,"start_character":24,"end_line":37,"end_character":34},"in_reply_to":"3fa7e38b_05fca9b4","updated":"2020-01-15 09:10:32.000000000","message":"Yes, rbd will not be supported.","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"fa60348d4e0d3fe549b653bf94691bbd2c91d26e","unresolved":false,"context_lines":[{"line_number":34,"context_line":"and teardown would be handled within os-brick."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"A property would be added in extra-spec of volume type. If a volume type has"},{"line_number":37,"context_line":"extra-spec of \"cachable \u003cis\u003e True\", then it means the related volumes would be"},{"line_number":38,"context_line":"cached in compute node locally."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Like all the local cache solution, multi-attach cannot work with it. This is"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_f5bec2cc","line":37,"range":{"start_line":37,"start_character":24,"end_line":37,"end_character":34},"in_reply_to":"3fa7e38b_74b98214","updated":"2020-01-16 08:56:14.000000000","message":"yes, should not add \"cacheable\" to volume types of RBD and file system like backends","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"11bf462f7e01c4902e27a25de03cc511be651d9d","unresolved":false,"context_lines":[{"line_number":34,"context_line":"and teardown would be handled within os-brick."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"A property would be added in extra-spec of volume type. If a volume type has"},{"line_number":37,"context_line":"extra-spec of \"cachable \u003cis\u003e True\", then it means the related volumes would be"},{"line_number":38,"context_line":"cached in compute node locally."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Like all the local cache solution, multi-attach cannot work with it. This is"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_147dae6c","line":37,"range":{"start_line":37,"start_character":24,"end_line":37,"end_character":34},"in_reply_to":"3fa7e38b_bd44c51b","updated":"2020-01-15 13:12:53.000000000","message":"If that\u0027s the case, then I believe it\u0027s a bug, since those should be ignored: https://github.com/openstack/cinder/blob/master/cinder/scheduler/filters/extra_specs_ops.py#L23-L24","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"2db68389598336c15a202a152692776e56519c84","unresolved":false,"context_lines":[{"line_number":34,"context_line":"and teardown would be handled within os-brick."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"A property would be added in extra-spec of volume type. If a volume type has"},{"line_number":37,"context_line":"extra-spec of \"cachable \u003cis\u003e True\", then it means the related volumes would be"},{"line_number":38,"context_line":"cached in compute node locally."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Like all the local cache solution, multi-attach cannot work with it. This is"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_1dcb99a4","line":37,"range":{"start_line":37,"start_character":15,"end_line":37,"end_character":23},"in_reply_to":"3fa7e38b_dd6bcbed","updated":"2020-01-15 09:10:32.000000000","message":"As you and Brian suggested, we need to specify cache mode for different volume types. So how about to use name \"cache_mode\" here? If it is not null, then it means the volume should be cached.","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"11bf462f7e01c4902e27a25de03cc511be651d9d","unresolved":false,"context_lines":[{"line_number":34,"context_line":"and teardown would be handled within os-brick."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"A property would be added in extra-spec of volume type. If a volume type has"},{"line_number":37,"context_line":"extra-spec of \"cachable \u003cis\u003e True\", then it means the related volumes would be"},{"line_number":38,"context_line":"cached in compute node locally."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Like all the local cache solution, multi-attach cannot work with it. This is"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_f43a5295","line":37,"range":{"start_line":37,"start_character":24,"end_line":37,"end_character":34},"in_reply_to":"3fa7e38b_dddd0140","updated":"2020-01-15 13:12:53.000000000","message":"Remote FS backends won\u0027t be supported either.","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a2aea601b5242d1662891270eaaa3a1a690f924f","unresolved":false,"context_lines":[{"line_number":34,"context_line":"and teardown would be handled within os-brick."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"A property would be added in extra-spec of volume type. If a volume type has"},{"line_number":37,"context_line":"extra-spec of \"cachable \u003cis\u003e True\", then it means the related volumes would be"},{"line_number":38,"context_line":"cached in compute node locally."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Like all the local cache solution, multi-attach cannot work with it. This is"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_05fca9b4","line":37,"range":{"start_line":37,"start_character":24,"end_line":37,"end_character":34},"in_reply_to":"3fa7e38b_ef612e12","updated":"2020-01-14 21:27:58.000000000","message":"From my reading of the Nova spec, rbd is not cacheable, so a cacheable volume type couldn\u0027t land on an rbd backend.  Liang, can you clarify?","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"2db68389598336c15a202a152692776e56519c84","unresolved":false,"context_lines":[{"line_number":34,"context_line":"and teardown would be handled within os-brick."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"A property would be added in extra-spec of volume type. If a volume type has"},{"line_number":37,"context_line":"extra-spec of \"cachable \u003cis\u003e True\", then it means the related volumes would be"},{"line_number":38,"context_line":"cached in compute node locally."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Like all the local cache solution, multi-attach cannot work with it. This is"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_bd44c51b","line":37,"range":{"start_line":37,"start_character":24,"end_line":37,"end_character":34},"in_reply_to":"3fa7e38b_ef612e12","updated":"2020-01-15 09:10:32.000000000","message":"I failed to create volume from volume type that without \u0027\u003cis\u003e\u0027. I debugged and found the property specified in extra-spec would be used by scheduler filter. So I think when cache_mode is used, the value would be something like \"\u003cis\u003e wt\", \"\u003cis\u003e wb\". \nps: wt: write-through; wb: write-back.","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"fa60348d4e0d3fe549b653bf94691bbd2c91d26e","unresolved":false,"context_lines":[{"line_number":34,"context_line":"and teardown would be handled within os-brick."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"A property would be added in extra-spec of volume type. If a volume type has"},{"line_number":37,"context_line":"extra-spec of \"cachable \u003cis\u003e True\", then it means the related volumes would be"},{"line_number":38,"context_line":"cached in compute node locally."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Like all the local cache solution, multi-attach cannot work with it. This is"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_75b3b20a","line":37,"range":{"start_line":37,"start_character":24,"end_line":37,"end_character":34},"in_reply_to":"3fa7e38b_f43a5295","updated":"2020-01-16 08:56:14.000000000","message":"Yes, it cannot be mounted as block device","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"A property would be added in extra-spec of volume type. If a volume type has"},{"line_number":37,"context_line":"extra-spec of \"cachable \u003cis\u003e True\", then it means the related volumes would be"},{"line_number":38,"context_line":"cached in compute node locally."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Like all the local cache solution, multi-attach cannot work with it. This is"},{"line_number":41,"context_line":"because cache on node1 don\u0027t know the changes made to backend volume by node2."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_9ddd5341","line":38,"range":{"start_line":38,"start_character":0,"end_line":38,"end_character":30},"updated":"2020-01-14 20:36:31.000000000","message":"nit: eligible to be cached locally in the compute nodes","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"2db68389598336c15a202a152692776e56519c84","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"A property would be added in extra-spec of volume type. If a volume type has"},{"line_number":37,"context_line":"extra-spec of \"cachable \u003cis\u003e True\", then it means the related volumes would be"},{"line_number":38,"context_line":"cached in compute node locally."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Like all the local cache solution, multi-attach cannot work with it. This is"},{"line_number":41,"context_line":"because cache on node1 don\u0027t know the changes made to backend volume by node2."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_ddd3c162","line":38,"range":{"start_line":38,"start_character":0,"end_line":38,"end_character":30},"in_reply_to":"3fa7e38b_9ddd5341","updated":"2020-01-15 09:10:32.000000000","message":"I think \"cache\" is \"must\" if cache_mode is specified. So looks like it\u0027s better to keep the original sentence?","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"fa60348d4e0d3fe549b653bf94691bbd2c91d26e","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"A property would be added in extra-spec of volume type. If a volume type has"},{"line_number":37,"context_line":"extra-spec of \"cachable \u003cis\u003e True\", then it means the related volumes would be"},{"line_number":38,"context_line":"cached in compute node locally."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Like all the local cache solution, multi-attach cannot work with it. This is"},{"line_number":41,"context_line":"because cache on node1 don\u0027t know the changes made to backend volume by node2."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_7532d25f","line":38,"range":{"start_line":38,"start_character":0,"end_line":38,"end_character":30},"in_reply_to":"3fa7e38b_b435bade","updated":"2020-01-16 08:56:14.000000000","message":"May can leverage \"aggregate\" feature, group the servers with open-cas, and schedule vm to this group. But I prefer not \"MUST\" too.","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"11bf462f7e01c4902e27a25de03cc511be651d9d","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"A property would be added in extra-spec of volume type. If a volume type has"},{"line_number":37,"context_line":"extra-spec of \"cachable \u003cis\u003e True\", then it means the related volumes would be"},{"line_number":38,"context_line":"cached in compute node locally."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Like all the local cache solution, multi-attach cannot work with it. This is"},{"line_number":41,"context_line":"because cache on node1 don\u0027t know the changes made to backend volume by node2."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_b435bade","line":38,"range":{"start_line":38,"start_character":0,"end_line":38,"end_character":30},"in_reply_to":"3fa7e38b_ddd3c162","updated":"2020-01-15 13:12:53.000000000","message":"If it\u0027s a must there are at least 3 problems:\n- Nova needs to know about volume types when scheduling instances using Cinder volumes as boot\n- What happens if we have an instance on a node without cache but we try to attach a volume that has cache enabled?  We would fail, and afaik Nova doesn\u0027t have a way to send a useful message to the user why it is failing.\n- Since we\u0027ll be locking volumes to only nodes that have cache, this could be a problem when evacuating instances from a node if we have no node available with cache to take on the instances.","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":37,"context_line":"extra-spec of \"cachable \u003cis\u003e True\", then it means the related volumes would be"},{"line_number":38,"context_line":"cached in compute node locally."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Like all the local cache solution, multi-attach cannot work with it. This is"},{"line_number":41,"context_line":"because cache on node1 don\u0027t know the changes made to backend volume by node2."},{"line_number":42,"context_line":"So cinder should guarantee these two properties not to be set at the same time."},{"line_number":43,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_1dbba3e4","line":40,"range":{"start_line":40,"start_character":55,"end_line":40,"end_character":67},"updated":"2020-01-14 20:36:31.000000000","message":"nit: be supported","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9b466a561898700f7c1016c503dab887b5149651","unresolved":false,"context_lines":[{"line_number":38,"context_line":"cached in compute node locally."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Like all the local cache solution, multi-attach cannot work with it. This is"},{"line_number":41,"context_line":"because cache on node1 don\u0027t know the changes made to backend volume by node2."},{"line_number":42,"context_line":"So cinder should guarantee these two properties not to be set at the same time."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Considering VM migration, cache software should not format the source volume"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_9181c9c5","line":41,"range":{"start_line":41,"start_character":23,"end_line":41,"end_character":26},"updated":"2020-01-14 12:26:30.000000000","message":"doesn\u0027t","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Like all the local cache solution, multi-attach cannot work with it. This is"},{"line_number":41,"context_line":"because cache on node1 don\u0027t know the changes made to backend volume by node2."},{"line_number":42,"context_line":"So cinder should guarantee these two properties not to be set at the same time."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Considering VM migration, cache software should not format the source volume"},{"line_number":45,"context_line":"(the volume to be cached). So cache software such as bcache cannot be used."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_3dc3ff5a","line":42,"range":{"start_line":42,"start_character":48,"end_line":42,"end_character":54},"updated":"2020-01-14 20:36:31.000000000","message":"nit: cannot be","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Considering VM migration, cache software should not format the source volume"},{"line_number":45,"context_line":"(the volume to be cached). So cache software such as bcache cannot be used."},{"line_number":46,"context_line":"This spec only supports open-cas. open-cas is easy to use. You just need to"},{"line_number":47,"context_line":"specify a block device as the cache device, and then can use this device to"},{"line_number":48,"context_line":"cache for other block devices. This is transparent to upper layer and lower"},{"line_number":49,"context_line":"layer.  Regarding upper layer, guest doesn\u0027t know it is using an emulated block"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_dda98b8f","line":46,"range":{"start_line":46,"start_character":54,"end_line":46,"end_character":62},"updated":"2020-01-14 20:36:31.000000000","message":"nit: use, you","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":45,"context_line":"(the volume to be cached). So cache software such as bcache cannot be used."},{"line_number":46,"context_line":"This spec only supports open-cas. open-cas is easy to use. You just need to"},{"line_number":47,"context_line":"specify a block device as the cache device, and then can use this device to"},{"line_number":48,"context_line":"cache for other block devices. This is transparent to upper layer and lower"},{"line_number":49,"context_line":"layer.  Regarding upper layer, guest doesn\u0027t know it is using an emulated block"},{"line_number":50,"context_line":"device.  Regarding lower layer, backend volume doesn\u0027t know it is cached, and"},{"line_number":51,"context_line":"the data in backend volume will not have extra change because of cache. That"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_7d8e5734","line":48,"range":{"start_line":48,"start_character":6,"end_line":48,"end_character":15},"updated":"2020-01-14 20:36:31.000000000","message":"nit: other","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"- Write-Invalidate (WI): write to backend storage and invalidate cache"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"- Write-Back (WB): write to cache and lazy write to backend storage. This mode"},{"line_number":66,"context_line":"  has better write performance but is possible to lose data because the latest"},{"line_number":67,"context_line":"  data is in cache, but may not be flushed to the backend storage."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"- Write-Only (WO): like write-back, but only cache write, will not cache read."},{"line_number":70,"context_line":"  So this mode also has the possibility to lose data."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_fdb1e7e4","line":67,"range":{"start_line":65,"start_character":0,"end_line":67,"end_character":66},"updated":"2020-01-14 20:36:31.000000000","message":"?: Does this mode obey flushing requests and ensures they are written to the backend storage synchronously in those cases?","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"11bf462f7e01c4902e27a25de03cc511be651d9d","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"- Write-Invalidate (WI): write to backend storage and invalidate cache"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"- Write-Back (WB): write to cache and lazy write to backend storage. This mode"},{"line_number":66,"context_line":"  has better write performance but is possible to lose data because the latest"},{"line_number":67,"context_line":"  data is in cache, but may not be flushed to the backend storage."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"- Write-Only (WO): like write-back, but only cache write, will not cache read."},{"line_number":70,"context_line":"  So this mode also has the possibility to lose data."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_944bde26","line":67,"range":{"start_line":65,"start_character":0,"end_line":67,"end_character":66},"in_reply_to":"3fa7e38b_1daab983","updated":"2020-01-15 13:12:53.000000000","message":"Then we have more code to add, since live migration of a volume using this cache mode is not possible, right?","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"fa60348d4e0d3fe549b653bf94691bbd2c91d26e","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"- Write-Invalidate (WI): write to backend storage and invalidate cache"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"- Write-Back (WB): write to cache and lazy write to backend storage. This mode"},{"line_number":66,"context_line":"  has better write performance but is possible to lose data because the latest"},{"line_number":67,"context_line":"  data is in cache, but may not be flushed to the backend storage."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"- Write-Only (WO): like write-back, but only cache write, will not cache read."},{"line_number":70,"context_line":"  So this mode also has the possibility to lose data."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_75dad24a","line":67,"range":{"start_line":65,"start_character":0,"end_line":67,"end_character":66},"in_reply_to":"3fa7e38b_944bde26","updated":"2020-01-16 08:56:14.000000000","message":"It seems we need to give up write-back because it has too much issues. Operator can change to write-back via admin tool when he well know what he is doing.","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"2db68389598336c15a202a152692776e56519c84","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"- Write-Invalidate (WI): write to backend storage and invalidate cache"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"- Write-Back (WB): write to cache and lazy write to backend storage. This mode"},{"line_number":66,"context_line":"  has better write performance but is possible to lose data because the latest"},{"line_number":67,"context_line":"  data is in cache, but may not be flushed to the backend storage."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"- Write-Only (WO): like write-back, but only cache write, will not cache read."},{"line_number":70,"context_line":"  So this mode also has the possibility to lose data."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_1daab983","line":67,"range":{"start_line":65,"start_character":0,"end_line":67,"end_character":66},"in_reply_to":"3fa7e38b_fdb1e7e4","updated":"2020-01-15 09:10:32.000000000","message":"no, write-back mode would write to cache and return. So it don\u0027t obey flushing requests. It only obey it\u0027s admin tool\u0027s cmd, e.g. \"casadm --flush-cache\", it is running in compute node host os, not in vm.","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":69,"context_line":"- Write-Only (WO): like write-back, but only cache write, will not cache read."},{"line_number":70,"context_line":"  So this mode also has the possibility to lose data."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"The first three modes are suitable for scenarios that data integrity must be"},{"line_number":73,"context_line":"guaranteed, every write io is both written to cache and backend storage.  This"},{"line_number":74,"context_line":"is suitable for read intensive scenario where data is cached. E.g. some"},{"line_number":75,"context_line":"customer uses this for AI traning, web site, database, etc. But it will be no"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_bdf92f83","line":72,"range":{"start_line":72,"start_character":54,"end_line":72,"end_character":68},"updated":"2020-01-14 20:36:31.000000000","message":"?: I\u0027m not following this whole data integrity.  Why don\u0027t we have it?\n\nWhen we do i/o the data will always be correct (assuming the node doesn\u0027t die or anything like that), right?\n\nIt\u0027s only that you don\u0027t have the data in your cache and backend in sync.","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"11bf462f7e01c4902e27a25de03cc511be651d9d","unresolved":false,"context_lines":[{"line_number":69,"context_line":"- Write-Only (WO): like write-back, but only cache write, will not cache read."},{"line_number":70,"context_line":"  So this mode also has the possibility to lose data."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"The first three modes are suitable for scenarios that data integrity must be"},{"line_number":73,"context_line":"guaranteed, every write io is both written to cache and backend storage.  This"},{"line_number":74,"context_line":"is suitable for read intensive scenario where data is cached. E.g. some"},{"line_number":75,"context_line":"customer uses this for AI traning, web site, database, etc. But it will be no"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_d46ab680","line":72,"range":{"start_line":72,"start_character":54,"end_line":72,"end_character":68},"in_reply_to":"3fa7e38b_3d89b51d","updated":"2020-01-15 13:12:53.000000000","message":"Data would be corrupted when the node starts again, or the data would be out of sync, similar to a node dying if the instance didn\u0027t flush the data?","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"2db68389598336c15a202a152692776e56519c84","unresolved":false,"context_lines":[{"line_number":69,"context_line":"- Write-Only (WO): like write-back, but only cache write, will not cache read."},{"line_number":70,"context_line":"  So this mode also has the possibility to lose data."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"The first three modes are suitable for scenarios that data integrity must be"},{"line_number":73,"context_line":"guaranteed, every write io is both written to cache and backend storage.  This"},{"line_number":74,"context_line":"is suitable for read intensive scenario where data is cached. E.g. some"},{"line_number":75,"context_line":"customer uses this for AI traning, web site, database, etc. But it will be no"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_3d89b51d","line":72,"range":{"start_line":72,"start_character":54,"end_line":72,"end_character":68},"in_reply_to":"3fa7e38b_bdf92f83","updated":"2020-01-15 09:10:32.000000000","message":"In the first 3 modes, no dirty data in cache, cache and backend are in sync. So don\u0027t have data integrity issues.\n\nBut the last 2 modes, cache may contains dirty data, so when the server with cache die for some reason, data would be corrupted, because backend data is old.","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"fa60348d4e0d3fe549b653bf94691bbd2c91d26e","unresolved":false,"context_lines":[{"line_number":69,"context_line":"- Write-Only (WO): like write-back, but only cache write, will not cache read."},{"line_number":70,"context_line":"  So this mode also has the possibility to lose data."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"The first three modes are suitable for scenarios that data integrity must be"},{"line_number":73,"context_line":"guaranteed, every write io is both written to cache and backend storage.  This"},{"line_number":74,"context_line":"is suitable for read intensive scenario where data is cached. E.g. some"},{"line_number":75,"context_line":"customer uses this for AI traning, web site, database, etc. But it will be no"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_e01b62c8","line":72,"range":{"start_line":72,"start_character":54,"end_line":72,"end_character":68},"in_reply_to":"3fa7e38b_d46ab680","updated":"2020-01-16 08:56:14.000000000","message":"no, in write-through mode, data would not be corrupted. Because all the data are written to backend storage, always no dirty data in cache. When the compute node restart, all the cache mapping has lost, and it is a brand new cache instance. Then the cache would be created again when VM attaching volume.","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":94,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"Cache mode is bound to cache instance. So different cache instances can have"},{"line_number":97,"context_line":"different cache mode. All cached volumes in a single compute node share same"},{"line_number":98,"context_line":"cache mode if they are cached by the same cache instance. The operator can"},{"line_number":99,"context_line":"change cache mode dynamically, using cache software management tool. os-brick"},{"line_number":100,"context_line":"just accept the cache_name and opencas_cache_id from Nova. cache_name"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_8f219a52","line":97,"range":{"start_line":97,"start_character":16,"end_line":97,"end_character":20},"updated":"2020-01-14 20:36:31.000000000","message":"nit: modes","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":96,"context_line":"Cache mode is bound to cache instance. So different cache instances can have"},{"line_number":97,"context_line":"different cache mode. All cached volumes in a single compute node share same"},{"line_number":98,"context_line":"cache mode if they are cached by the same cache instance. The operator can"},{"line_number":99,"context_line":"change cache mode dynamically, using cache software management tool. os-brick"},{"line_number":100,"context_line":"just accept the cache_name and opencas_cache_id from Nova. cache_name"},{"line_number":101,"context_line":"identifies which cache software to use, currently it only supports \u0027opencas\u0027."},{"line_number":102,"context_line":"It is allowed that more than one cache instance in one compute node."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_6f99be69","line":99,"range":{"start_line":99,"start_character":0,"end_line":99,"end_character":29},"updated":"2020-01-14 20:36:31.000000000","message":"This is a considerable limitation, as all volumes will have the same cache mode and we could have different type of workloads running on a single node.\n\nShould we add some mechanism for Nova to pass OS-Brick a mapping of modes to IDs?  For example:\n\n{\n\u0027cache-all\u0027: opencas-id#1,\n\u0027write-only\u0027: opencas-id#2,\n\u0027read-only\u0027: opencas-id#3,\n\u0027default\u0027: opencas-id#1,\n}","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"fa60348d4e0d3fe549b653bf94691bbd2c91d26e","unresolved":false,"context_lines":[{"line_number":96,"context_line":"Cache mode is bound to cache instance. So different cache instances can have"},{"line_number":97,"context_line":"different cache mode. All cached volumes in a single compute node share same"},{"line_number":98,"context_line":"cache mode if they are cached by the same cache instance. The operator can"},{"line_number":99,"context_line":"change cache mode dynamically, using cache software management tool. os-brick"},{"line_number":100,"context_line":"just accept the cache_name and opencas_cache_id from Nova. cache_name"},{"line_number":101,"context_line":"identifies which cache software to use, currently it only supports \u0027opencas\u0027."},{"line_number":102,"context_line":"It is allowed that more than one cache instance in one compute node."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_006c7e31","line":99,"range":{"start_line":99,"start_character":0,"end_line":99,"end_character":29},"in_reply_to":"3fa7e38b_34cd4a92","updated":"2020-01-16 08:56:14.000000000","message":"yes, but it would not be a issue if we only support write-through.","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"2db68389598336c15a202a152692776e56519c84","unresolved":false,"context_lines":[{"line_number":96,"context_line":"Cache mode is bound to cache instance. So different cache instances can have"},{"line_number":97,"context_line":"different cache mode. All cached volumes in a single compute node share same"},{"line_number":98,"context_line":"cache mode if they are cached by the same cache instance. The operator can"},{"line_number":99,"context_line":"change cache mode dynamically, using cache software management tool. os-brick"},{"line_number":100,"context_line":"just accept the cache_name and opencas_cache_id from Nova. cache_name"},{"line_number":101,"context_line":"identifies which cache software to use, currently it only supports \u0027opencas\u0027."},{"line_number":102,"context_line":"It is allowed that more than one cache instance in one compute node."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_ddf0a195","line":99,"range":{"start_line":99,"start_character":0,"end_line":99,"end_character":29},"in_reply_to":"3fa7e38b_45a861d9","updated":"2020-01-15 09:10:32.000000000","message":"Good idea. Nova can pass the \"cache mode\" and \"cache instance list\" map to os-brick, like:\n{\n\u0027write-through\u0027: [opencas-id#1, opencas-id#2],\n\u0027write-around\u0027: [opencas-id#3],\n\u0027write-invalidate\u0027: [],\n\u0027write-back\u0027: [opencas-id#5,opencas-id#6,opencas-id#7],\n\u0027write-only\u0027: [],\n}\nEach cache mode can have more than one cache instances. os-brick can weight each cache instance, e.g. total cache size, how many free space, etc, via cache admin tool(casadm). and select the best one.","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a2aea601b5242d1662891270eaaa3a1a690f924f","unresolved":false,"context_lines":[{"line_number":96,"context_line":"Cache mode is bound to cache instance. So different cache instances can have"},{"line_number":97,"context_line":"different cache mode. All cached volumes in a single compute node share same"},{"line_number":98,"context_line":"cache mode if they are cached by the same cache instance. The operator can"},{"line_number":99,"context_line":"change cache mode dynamically, using cache software management tool. os-brick"},{"line_number":100,"context_line":"just accept the cache_name and opencas_cache_id from Nova. cache_name"},{"line_number":101,"context_line":"identifies which cache software to use, currently it only supports \u0027opencas\u0027."},{"line_number":102,"context_line":"It is allowed that more than one cache instance in one compute node."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_45a861d9","line":99,"range":{"start_line":99,"start_character":0,"end_line":99,"end_character":29},"in_reply_to":"3fa7e38b_6f99be69","updated":"2020-01-14 21:27:58.000000000","message":"I think we\u0027d also need a way to specify for a particular volume what cache-mode it requests.  Right now we just have \u0027cacheable\u0027 or not.  Would that happen as part of the attach request?  It may be beyond the scope of this spec, but like Gorka says, it\u0027s a considerable limitation, so it would be good to make sure whatever we do now will be extensible.","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"11bf462f7e01c4902e27a25de03cc511be651d9d","unresolved":false,"context_lines":[{"line_number":96,"context_line":"Cache mode is bound to cache instance. So different cache instances can have"},{"line_number":97,"context_line":"different cache mode. All cached volumes in a single compute node share same"},{"line_number":98,"context_line":"cache mode if they are cached by the same cache instance. The operator can"},{"line_number":99,"context_line":"change cache mode dynamically, using cache software management tool. os-brick"},{"line_number":100,"context_line":"just accept the cache_name and opencas_cache_id from Nova. cache_name"},{"line_number":101,"context_line":"identifies which cache software to use, currently it only supports \u0027opencas\u0027."},{"line_number":102,"context_line":"It is allowed that more than one cache instance in one compute node."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_34cd4a92","line":99,"range":{"start_line":99,"start_character":0,"end_line":99,"end_character":29},"in_reply_to":"3fa7e38b_ddf0a195","updated":"2020-01-15 13:12:53.000000000","message":"There should be a safe default value, otherwise Nova would have to use this cache information together with the volume type info to schedule where volumes can land on Nova.","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":97,"context_line":"different cache mode. All cached volumes in a single compute node share same"},{"line_number":98,"context_line":"cache mode if they are cached by the same cache instance. The operator can"},{"line_number":99,"context_line":"change cache mode dynamically, using cache software management tool. os-brick"},{"line_number":100,"context_line":"just accept the cache_name and opencas_cache_id from Nova. cache_name"},{"line_number":101,"context_line":"identifies which cache software to use, currently it only supports \u0027opencas\u0027."},{"line_number":102,"context_line":"It is allowed that more than one cache instance in one compute node."},{"line_number":103,"context_line":"opencas_cache_id is specific for open-cas, it identifies which cache instance"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_8fd67a26","line":100,"range":{"start_line":100,"start_character":5,"end_line":100,"end_character":11},"updated":"2020-01-14 20:36:31.000000000","message":"nit: accepts","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":101,"context_line":"identifies which cache software to use, currently it only supports \u0027opencas\u0027."},{"line_number":102,"context_line":"It is allowed that more than one cache instance in one compute node."},{"line_number":103,"context_line":"opencas_cache_id is specific for open-cas, it identifies which cache instance"},{"line_number":104,"context_line":"to use. Cache mode is transparent to os-brick."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"The final solution would be like::"},{"line_number":107,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_1d616339","line":104,"range":{"start_line":104,"start_character":37,"end_line":104,"end_character":46},"updated":"2020-01-14 20:36:31.000000000","message":"nit: os-brick, since it is associated with the cache instance and configured by the administrator outside of Nova or OS-Brick.","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"Changes would include:"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"- Add \"cachable\" property in extra-spec of volume type"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"  * Volume local cache cannot work with multiattach. So when adding \"cachable\""},{"line_number":150,"context_line":"    to extra-spec, cinder should check if \"multiattach\" property exists or not."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_7d7097dc","line":147,"range":{"start_line":147,"start_character":7,"end_line":147,"end_character":15},"updated":"2020-01-14 20:36:31.000000000","message":"-1: cacheable","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":146,"context_line":""},{"line_number":147,"context_line":"- Add \"cachable\" property in extra-spec of volume type"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"  * Volume local cache cannot work with multiattach. So when adding \"cachable\""},{"line_number":150,"context_line":"    to extra-spec, cinder should check if \"multiattach\" property exists or not."},{"line_number":151,"context_line":"    If \"multiattach\" exists, then cinder should refuse to add \"cachable\""},{"line_number":152,"context_line":"    property to volume type, and vice versa."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_5d77dbd2","line":149,"range":{"start_line":149,"start_character":69,"end_line":149,"end_character":77},"updated":"2020-01-14 20:36:31.000000000","message":"cacheable","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":151,"context_line":"    If \"multiattach\" exists, then cinder should refuse to add \"cachable\""},{"line_number":152,"context_line":"    property to volume type, and vice versa."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"  * Report \"cachable\" property to volume details. So Nova can know whether a"},{"line_number":155,"context_line":"    volume needs to be cached or not."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"- Add a common framework for different cache software in os-brick. This"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_dd442b76","line":154,"range":{"start_line":154,"start_character":12,"end_line":154,"end_character":20},"updated":"2020-01-14 20:36:31.000000000","message":"cacheable","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    property to volume type, and vice versa."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"  * Report \"cachable\" property to volume details. So Nova can know whether a"},{"line_number":155,"context_line":"    volume needs to be cached or not."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"- Add a common framework for different cache software in os-brick. This"},{"line_number":158,"context_line":"  framework should be flexible to support different cache software."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_9d56b32b","line":155,"range":{"start_line":155,"start_character":11,"end_line":155,"end_character":22},"updated":"2020-01-14 20:36:31.000000000","message":"nit: can be","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"11bf462f7e01c4902e27a25de03cc511be651d9d","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    property to volume type, and vice versa."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"  * Report \"cachable\" property to volume details. So Nova can know whether a"},{"line_number":155,"context_line":"    volume needs to be cached or not."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"- Add a common framework for different cache software in os-brick. This"},{"line_number":158,"context_line":"  framework should be flexible to support different cache software."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_54b7a6d8","line":155,"range":{"start_line":155,"start_character":11,"end_line":155,"end_character":22},"in_reply_to":"3fa7e38b_8502d907","updated":"2020-01-15 13:12:53.000000000","message":"If we don\u0027t allow changing the volume type to change the cache then we could have problems when evacuating instances from nodes if we have no node available (or with enough resources) that has cache.","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"2db68389598336c15a202a152692776e56519c84","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    property to volume type, and vice versa."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"  * Report \"cachable\" property to volume details. So Nova can know whether a"},{"line_number":155,"context_line":"    volume needs to be cached or not."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"- Add a common framework for different cache software in os-brick. This"},{"line_number":158,"context_line":"  framework should be flexible to support different cache software."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_9d2549c2","line":155,"range":{"start_line":155,"start_character":11,"end_line":155,"end_character":22},"in_reply_to":"3fa7e38b_8502d907","updated":"2020-01-15 09:10:32.000000000","message":"Yes, talked with Nova core, he think we need to fail the operation if compute node don\u0027t have the cache capability. So it would be MUST.\nI think volume type just like a utility for Nova. Nova can add volume type to flavor in the future. I think even add volume type to flavor, we still need to create a new volume type with cache_mode, or retype an existing one, so that Nova-flavor can use it.","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"11bf462f7e01c4902e27a25de03cc511be651d9d","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    property to volume type, and vice versa."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"  * Report \"cachable\" property to volume details. So Nova can know whether a"},{"line_number":155,"context_line":"    volume needs to be cached or not."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"- Add a common framework for different cache software in os-brick. This"},{"line_number":158,"context_line":"  framework should be flexible to support different cache software."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_54dc8616","line":155,"range":{"start_line":155,"start_character":11,"end_line":155,"end_character":22},"in_reply_to":"3fa7e38b_9d2549c2","updated":"2020-01-15 13:12:53.000000000","message":"Do they have a way to report to users why the attach is failing?  If they don\u0027t, then customers will go crazy when things fail.\n\nDoes the Nova spec include the scheduling changes required for this to happen with boot from Cinder volume instances?","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a2aea601b5242d1662891270eaaa3a1a690f924f","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    property to volume type, and vice versa."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"  * Report \"cachable\" property to volume details. So Nova can know whether a"},{"line_number":155,"context_line":"    volume needs to be cached or not."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"- Add a common framework for different cache software in os-brick. This"},{"line_number":158,"context_line":"  framework should be flexible to support different cache software."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_8502d907","line":155,"range":{"start_line":155,"start_character":11,"end_line":155,"end_character":22},"in_reply_to":"3fa7e38b_9d56b32b","updated":"2020-01-14 21:27:58.000000000","message":"I want to follow up on this.  Reading the nova spec and looking at line 236 in this spec, it looks like your proposal is that cacheable volumes MUST be attached to a host with a cache.  That would mean that the only way to attach one of these to a host without a cache would be to retype the volume first to a noncacheable type.  Is that what you have in mind?  If so, maybe this property should be named \u0027must_cache\u0027.\n\nWhen you originally proposed this, I was thinking that an operator could offer a server flavor that had a cache (which presumably would be more expensive), and an end user could create a volume of a cacheable volume type, and the end user could control whether the volume was cached or not by picking a flavor, which seems more flexible than having to retype the volume.  But I just want to be clear about what you\u0027re proposing.\n\nAlso, we probably won\u0027t want to allow retyping of an in-use volume from cacheable to noncacheable and vice-versa.","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":173,"context_line":"  * attach_volume()"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    This function would be called by Nova (in function _connect_volume) to"},{"line_number":176,"context_line":"    setup cache for a volume when it trying to attach the volume."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"  * detach_volume()"},{"line_number":179,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_7d073720","line":176,"range":{"start_line":176,"start_character":34,"end_line":176,"end_character":36},"updated":"2020-01-14 20:36:31.000000000","message":"nit: it is","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":183,"context_line":"  2) In __init__.py, a map of cache software and different cache class would be"},{"line_number":184,"context_line":"  added. So os-brick can find the correct class based on cache name."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"  CACHE_ENGINE_TO_CACHE_CLASS_MAP \u003d {"},{"line_number":187,"context_line":"      \"opencas\": \u0027os_brick.caches.opencas.OpenCASEngine\u0027,"},{"line_number":188,"context_line":"      ..."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"  }"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"  Meanwhile a function like _get_engine() would be added to go through the"},{"line_number":193,"context_line":"  map to find the correct class."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_4f0c023a","line":190,"range":{"start_line":186,"start_character":0,"end_line":190,"end_character":3},"updated":"2020-01-14 20:36:31.000000000","message":"We could argue that it would be better to use entrypoints, but I don\u0027t think there will be a lot of external cache drivers anyway, so this looks good to me.","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":11347,"name":"Rui Zang","email":"rui.zang@yandex.com","username":"rzang"},"change_message_id":"f2729ea81a90fac3e2805c6f2413acabc0637605","unresolved":false,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"  }"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"  Meanwhile a function like _get_engine() would be added to go through the"},{"line_number":193,"context_line":"  map to find the correct class."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"- Add the support for open-cas in os-brick."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_7a53b33b","line":192,"range":{"start_line":192,"start_character":28,"end_line":192,"end_character":41},"updated":"2020-01-15 06:23:58.000000000","message":"I suppose _get_engine() will accept a \"cache_name\" or \"cache_class\" parameter, and go through CACHE_ENGINE_TO_CACHE_CLASS_MAPto get the engine of the required cache class. So the question would be, how does nova know which \"cache_class\" to use for which volume type? \nIf multiple cache software exists on a certain compute host, how does Nova differentiate one from the other?","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"dfb412af0416a5950a88acadb6b58b0789d5a592","unresolved":false,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"  }"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"  Meanwhile a function like _get_engine() would be added to go through the"},{"line_number":193,"context_line":"  map to find the correct class."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"- Add the support for open-cas in os-brick."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_18b063fd","line":192,"range":{"start_line":192,"start_character":28,"end_line":192,"end_character":41},"in_reply_to":"3fa7e38b_1878637c","updated":"2020-01-17 04:22:40.000000000","message":"oh, here cache class means python class. How do you think about the name: CACHE_NAME_TO_CACHE_CLASS?\n\nIt may be possible that QUME has it\u0027s own cache method, then it can have it\u0027s own cache name in it\u0027s own configuration section, it would not in the same \"namespace\" with volume local cache feature I think(but yes, I may need to put the cache_name in a new section, e.g. [volume_local_cache] in nova-cpu.conf). But I think it is not likely to have different cache software in a single compute node work for volume local cache, because the key resource is the fast ssd, not the cache software.\n\nI mean, two compute nodes can have two different cache software, and two cache software can co-exist in a single compute node, but it does not make sense to have both two cache software in a single compute node both work for volume local cache at the same time. No benefit here. Fast SSD(cache) is the key resource.","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":11347,"name":"Rui Zang","email":"rui.zang@yandex.com","username":"rzang"},"change_message_id":"0fb44bf3b31ebd1118ad262614505f0617304212","unresolved":false,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"  }"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"  Meanwhile a function like _get_engine() would be added to go through the"},{"line_number":193,"context_line":"  map to find the correct class."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"- Add the support for open-cas in os-brick."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_1878637c","line":192,"range":{"start_line":192,"start_character":28,"end_line":192,"end_character":41},"in_reply_to":"3fa7e38b_5b3b479a","updated":"2020-01-17 03:29:04.000000000","message":"The dict name is CACHE_ENGINE_TO_CACHE_CLASS_MAP. And in Line 183, there is \"cache class\".\nI suppose opencas and bcache are different types (or classes) of local software. \nIf you mean it as a python class, then we can use the phrase \"cache name\" to differentiate multiple cache software.\n\nThe question is how does Nova choose which cache software to use. The nova spec does not cover it yet.","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"fa60348d4e0d3fe549b653bf94691bbd2c91d26e","unresolved":false,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"  }"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"  Meanwhile a function like _get_engine() would be added to go through the"},{"line_number":193,"context_line":"  map to find the correct class."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"- Add the support for open-cas in os-brick."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_60677226","line":192,"range":{"start_line":192,"start_character":28,"end_line":192,"end_character":41},"in_reply_to":"3fa7e38b_74d422eb","updated":"2020-01-16 08:56:14.000000000","message":"cache_class means cache_mode? makes sense to have a default mode, e.g. write-through which is safe enough. But if we go back to only using property \"cacheable\", it would not be an issue then.","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"2db68389598336c15a202a152692776e56519c84","unresolved":false,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"  }"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"  Meanwhile a function like _get_engine() would be added to go through the"},{"line_number":193,"context_line":"  map to find the correct class."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"- Add the support for open-cas in os-brick."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_808ba067","line":192,"range":{"start_line":192,"start_character":28,"end_line":192,"end_character":41},"in_reply_to":"3fa7e38b_7a53b33b","updated":"2020-01-15 09:10:32.000000000","message":"Administrator would list the cache mode - cache instances mapping in Nova configuration file. Like:\n{\n\u0027write-through\u0027: [opencas-id#1, opencas-id#2],\n\u0027write-around\u0027: [opencas-id#3],\n\u0027write-invalidate\u0027: [],\n\u0027write-back\u0027: [opencas-id#5,opencas-id#6,opencas-id#7],\n\u0027write-only\u0027: [],\n}\nAnd then pass this to os-brick, and let os-brick to determine which cache instance to use.","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"11bf462f7e01c4902e27a25de03cc511be651d9d","unresolved":false,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"  }"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"  Meanwhile a function like _get_engine() would be added to go through the"},{"line_number":193,"context_line":"  map to find the correct class."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"- Add the support for open-cas in os-brick."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_74d422eb","line":192,"range":{"start_line":192,"start_character":28,"end_line":192,"end_character":41},"in_reply_to":"3fa7e38b_808ba067","updated":"2020-01-15 13:12:53.000000000","message":"What happens if the volume type defines cache_class that is not supported by the node?  How will Nova schedule with this?  Should we have a safe default defined somehow?","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":11347,"name":"Rui Zang","email":"rui.zang@yandex.com","username":"rzang"},"change_message_id":"ed63fbca861edf17de702eb0edac3dffc786d20e","unresolved":false,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"  }"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"  Meanwhile a function like _get_engine() would be added to go through the"},{"line_number":193,"context_line":"  map to find the correct class."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"- Add the support for open-cas in os-brick."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_f22338ba","line":192,"range":{"start_line":192,"start_character":28,"end_line":192,"end_character":41},"in_reply_to":"3fa7e38b_808ba067","updated":"2020-01-16 01:58:01.000000000","message":"What is the relationship of cache_instances with cache_class?\nOne would assume cache_class is a higher concept to differentiate \"opencas\" and other local volume caches like the ones you mentioned earlier in the spec (bcache ...) or others that may come out in future.\nAnd cache_instances should be associated with one cache class. In your example, all the cache_instances belong to opencas.\nYou mentioned it is a common framework. So I am wondering how others (besides opencas) fit in.","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"fa60348d4e0d3fe549b653bf94691bbd2c91d26e","unresolved":false,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"  }"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"  Meanwhile a function like _get_engine() would be added to go through the"},{"line_number":193,"context_line":"  map to find the correct class."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"- Add the support for open-cas in os-brick."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_5b3b479a","line":192,"range":{"start_line":192,"start_character":28,"end_line":192,"end_character":41},"in_reply_to":"3fa7e38b_f22338ba","updated":"2020-01-16 08:56:14.000000000","message":"I think here cache_class means cache_mode. No \"cache_class\" mentioned in spec:)\n\nDifferent cache software may have different parameters. os-brick just accepts the cache_name and a group of parameters. It find the correct cache software by the cache_name, then pass the group of parameters to this cache software. cache_id is just a concept of open-cas, os_brick/caches/opencas.py will consume it.\n\nSo if other cache software is used, the same way, os-brick accept cache_name and a group of parameters, find the related os_brick/caches/xxx.py, pass parameters to it.\n\nSo in os-brick, it is flexible.\n\nIn nova, if want to use different cache software for volume local cache, Nova should distinguish which cache software to it want to use, then well prepare parameter, and pass to os-brick.","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":196,"context_line":""},{"line_number":197,"context_line":"  Implement functions attach_volume/detach_volume for open-cas."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"It is cinder which determines and set the \u0027cachable\u0027 property. Nova calls"},{"line_number":200,"context_line":"os-brick to set cache for the volume only when the volume has the property of"},{"line_number":201,"context_line":"\u0027cachable\u0027."},{"line_number":202,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_cf46b257","line":199,"range":{"start_line":199,"start_character":43,"end_line":199,"end_character":51},"updated":"2020-01-14 20:36:31.000000000","message":"cacheable","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":196,"context_line":""},{"line_number":197,"context_line":"  Implement functions attach_volume/detach_volume for open-cas."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"It is cinder which determines and set the \u0027cachable\u0027 property. Nova calls"},{"line_number":200,"context_line":"os-brick to set cache for the volume only when the volume has the property of"},{"line_number":201,"context_line":"\u0027cachable\u0027."},{"line_number":202,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_2f2c2692","line":199,"range":{"start_line":199,"start_character":34,"end_line":199,"end_character":37},"updated":"2020-01-14 20:36:31.000000000","message":"sets","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":266,"context_line":""},{"line_number":267,"context_line":"  - The owner of the VM should setup cache explicitly. But not all the VM"},{"line_number":268,"context_line":"    owners want to do this, and not all the VM owners have the knowledge to do"},{"line_number":269,"context_line":"    this. But they for sure want that the volume performance is better by"},{"line_number":270,"context_line":"    default."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"* Create a dedicated cache cluster. Mount all the cache (NVME SSD) in cache"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_6f60ded1","line":269,"range":{"start_line":269,"start_character":61,"end_line":269,"end_character":63},"updated":"2020-01-14 20:36:31.000000000","message":"nit: to be","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":269,"context_line":"    this. But they for sure want that the volume performance is better by"},{"line_number":270,"context_line":"    default."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"* Create a dedicated cache cluster. Mount all the cache (NVME SSD) in cache"},{"line_number":273,"context_line":"  cluster as a big cache pool. Then allocate a certain amount of cache to a"},{"line_number":274,"context_line":"  specific volume. The allocated cache can be mounted on compute node through"},{"line_number":275,"context_line":"  NVMEoF protocol. Then use cache software to do the same cache."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_4f91629b","line":272,"range":{"start_line":272,"start_character":70,"end_line":272,"end_character":75},"updated":"2020-01-14 20:36:31.000000000","message":"nit: the cache","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":274,"context_line":"  specific volume. The allocated cache can be mounted on compute node through"},{"line_number":275,"context_line":"  NVMEoF protocol. Then use cache software to do the same cache."},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"  But this would be the compete between local PCIe and remote network. The"},{"line_number":278,"context_line":"  disadvantage if doing like these ways is: the network of the storage server"},{"line_number":279,"context_line":"  would be bottleneck."},{"line_number":280,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_0fb92a15","line":277,"range":{"start_line":277,"start_character":24,"end_line":277,"end_character":69},"updated":"2020-01-14 20:36:31.000000000","message":"?: I don\u0027t understand what you mean here","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":275,"context_line":"  NVMEoF protocol. Then use cache software to do the same cache."},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"  But this would be the compete between local PCIe and remote network. The"},{"line_number":278,"context_line":"  disadvantage if doing like these ways is: the network of the storage server"},{"line_number":279,"context_line":"  would be bottleneck."},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"  - Latency) Storage cluster typically provides volume through iscsi/fc"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_4fd64257","line":278,"range":{"start_line":278,"start_character":15,"end_line":278,"end_character":42},"updated":"2020-01-14 20:36:31.000000000","message":"nit: of doing it like this is","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":276,"context_line":""},{"line_number":277,"context_line":"  But this would be the compete between local PCIe and remote network. The"},{"line_number":278,"context_line":"  disadvantage if doing like these ways is: the network of the storage server"},{"line_number":279,"context_line":"  would be bottleneck."},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"  - Latency) Storage cluster typically provides volume through iscsi/fc"},{"line_number":282,"context_line":"    protocol, or through librbd if ceph is used. The latency would be"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_2fdd066d","line":279,"range":{"start_line":279,"start_character":8,"end_line":279,"end_character":10},"updated":"2020-01-14 20:36:31.000000000","message":"nit: be a","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":278,"context_line":"  disadvantage if doing like these ways is: the network of the storage server"},{"line_number":279,"context_line":"  would be bottleneck."},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"  - Latency) Storage cluster typically provides volume through iscsi/fc"},{"line_number":282,"context_line":"    protocol, or through librbd if ceph is used. The latency would be"},{"line_number":283,"context_line":"    millisecond level. Even NVME over TCP, the latency would be hundreds of"},{"line_number":284,"context_line":"    microseconds, depending on the network topology. As a contrast, the latency"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_8f3afa94","line":281,"range":{"start_line":281,"start_character":11,"end_line":281,"end_character":12},"updated":"2020-01-14 20:36:31.000000000","message":":","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":278,"context_line":"  disadvantage if doing like these ways is: the network of the storage server"},{"line_number":279,"context_line":"  would be bottleneck."},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"  - Latency) Storage cluster typically provides volume through iscsi/fc"},{"line_number":282,"context_line":"    protocol, or through librbd if ceph is used. The latency would be"},{"line_number":283,"context_line":"    millisecond level. Even NVME over TCP, the latency would be hundreds of"},{"line_number":284,"context_line":"    microseconds, depending on the network topology. As a contrast, the latency"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_af3fb684","line":281,"range":{"start_line":281,"start_character":48,"end_line":281,"end_character":54},"updated":"2020-01-14 20:36:31.000000000","message":"volumes","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":279,"context_line":"  would be bottleneck."},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"  - Latency) Storage cluster typically provides volume through iscsi/fc"},{"line_number":282,"context_line":"    protocol, or through librbd if ceph is used. The latency would be"},{"line_number":283,"context_line":"    millisecond level. Even NVME over TCP, the latency would be hundreds of"},{"line_number":284,"context_line":"    microseconds, depending on the network topology. As a contrast, the latency"},{"line_number":285,"context_line":"    of NVME SSD would be around 10 us, take Intel Optane SSD p4800x as example."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_6f41be08","line":282,"range":{"start_line":282,"start_character":67,"end_line":282,"end_character":69},"updated":"2020-01-14 20:36:31.000000000","message":"be at the","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":280,"context_line":""},{"line_number":281,"context_line":"  - Latency) Storage cluster typically provides volume through iscsi/fc"},{"line_number":282,"context_line":"    protocol, or through librbd if ceph is used. The latency would be"},{"line_number":283,"context_line":"    millisecond level. Even NVME over TCP, the latency would be hundreds of"},{"line_number":284,"context_line":"    microseconds, depending on the network topology. As a contrast, the latency"},{"line_number":285,"context_line":"    of NVME SSD would be around 10 us, take Intel Optane SSD p4800x as example."},{"line_number":286,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_2f4bc628","line":283,"range":{"start_line":283,"start_character":23,"end_line":283,"end_character":27},"updated":"2020-01-14 20:36:31.000000000","message":"Even with","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":281,"context_line":"  - Latency) Storage cluster typically provides volume through iscsi/fc"},{"line_number":282,"context_line":"    protocol, or through librbd if ceph is used. The latency would be"},{"line_number":283,"context_line":"    millisecond level. Even NVME over TCP, the latency would be hundreds of"},{"line_number":284,"context_line":"    microseconds, depending on the network topology. As a contrast, the latency"},{"line_number":285,"context_line":"    of NVME SSD would be around 10 us, take Intel Optane SSD p4800x as example."},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"* Cache can be added in backend storage side, e.g. in ceph. Storage server"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_4f6de298","line":284,"range":{"start_line":284,"start_character":53,"end_line":284,"end_character":57},"updated":"2020-01-14 20:36:31.000000000","message":"In","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd582ca2db3896400e4835290b7ada8582d95803","unresolved":false,"context_lines":[{"line_number":364,"context_line":""},{"line_number":365,"context_line":"* Must be tested with multipath for iSCSI/FC"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"* Must also test RBD and NFS"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"Documentation Impact"},{"line_number":370,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_af0d76e8","line":367,"range":{"start_line":367,"start_character":17,"end_line":367,"end_character":20},"updated":"2020-01-14 20:36:31.000000000","message":"The cache will not be used with RBD volumes, since they are not mounted on the host.  They go directly to the hypervisor.","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"2db68389598336c15a202a152692776e56519c84","unresolved":false,"context_lines":[{"line_number":364,"context_line":""},{"line_number":365,"context_line":"* Must be tested with multipath for iSCSI/FC"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"* Must also test RBD and NFS"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"Documentation Impact"},{"line_number":370,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_c00c383c","line":367,"range":{"start_line":367,"start_character":17,"end_line":367,"end_character":20},"in_reply_to":"3fa7e38b_af0d76e8","updated":"2020-01-15 09:10:32.000000000","message":"yes, thanks","commit_id":"ec06eb390eaa97cd7be4f05a5fecccdb48939772"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"863a3ce3ddd873d1af8d527a56f0e696d2b0b79d","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"- Write-Back (WB): write to cache and lazy write to backend storage. This mode"},{"line_number":68,"context_line":"  has better write performance but is possible to lose data because the latest"},{"line_number":69,"context_line":"  data is in cache, but may not be flushed to the backend storage."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"- Write-Only (WO): like write-back, but only cache write, will not cache read."},{"line_number":72,"context_line":"  So this mode also has the possibility to lose data."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3fa7e38b_6f70cf0a","line":69,"updated":"2020-01-15 15:28:46.000000000","message":"Won\u0027t write-back caching break expectations of how snapshots work?  And consistency groups, and backups...","commit_id":"7111c74a5c7fae2cf6e2b0c3e627ea3f084db9fb"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"85a85b510a19ab1bc779e5439e3c380f33e63337","unresolved":false,"context_lines":[{"line_number":372,"context_line":"Testing"},{"line_number":373,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"* Unit-tests, tempest and other related tests will be implemented."},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"* Test case in particular: Use fio to test / compare the volume with / without"},{"line_number":378,"context_line":"  cache. The expected behavior is: cached volume has larger throughput, lower"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3fa7e38b_846e4d62","line":375,"updated":"2020-01-15 15:30:11.000000000","message":"What kind of tempest tests would be interesting for this?","commit_id":"7111c74a5c7fae2cf6e2b0c3e627ea3f084db9fb"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"fa60348d4e0d3fe549b653bf94691bbd2c91d26e","unresolved":false,"context_lines":[{"line_number":372,"context_line":"Testing"},{"line_number":373,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"* Unit-tests, tempest and other related tests will be implemented."},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"* Test case in particular: Use fio to test / compare the volume with / without"},{"line_number":378,"context_line":"  cache. The expected behavior is: cached volume has larger throughput, lower"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3fa7e38b_26d75253","line":375,"in_reply_to":"3fa7e38b_846e4d62","updated":"2020-01-16 08:56:14.000000000","message":"I think it would be:\n1. create a ram disk, e.g. /dev/ram1\n2. setup open-cas, use ram disk as cache\n3. create a volume via cinder\n4. mount the volume to OS, as something like: /dev/xxx\n5. call casadm to setup cache for /dev/xxx. something like /dev/cas1-1 would be created by open-cas\n6. run fio against /dev/cas1-1, check the result (average latency)","commit_id":"7111c74a5c7fae2cf6e2b0c3e627ea3f084db9fb"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"85a85b510a19ab1bc779e5439e3c380f33e63337","unresolved":false,"context_lines":[{"line_number":380,"context_line":""},{"line_number":381,"context_line":"* Must be tested with multipath for iSCSI/FC"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"* Must also test NFS"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"Documentation Impact"},{"line_number":386,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3fa7e38b_c474453a","line":383,"updated":"2020-01-15 15:30:11.000000000","message":"I think NFS won\u0027t work","commit_id":"7111c74a5c7fae2cf6e2b0c3e627ea3f084db9fb"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"fa60348d4e0d3fe549b653bf94691bbd2c91d26e","unresolved":false,"context_lines":[{"line_number":380,"context_line":""},{"line_number":381,"context_line":"* Must be tested with multipath for iSCSI/FC"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"* Must also test NFS"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"Documentation Impact"},{"line_number":386,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3fa7e38b_465fee0f","line":383,"in_reply_to":"3fa7e38b_c474453a","updated":"2020-01-16 08:56:14.000000000","message":"yes, I will remove this line","commit_id":"7111c74a5c7fae2cf6e2b0c3e627ea3f084db9fb"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"95646db9c30bb44307c3e339b63eff723024c1e6","unresolved":false,"context_lines":[{"line_number":26,"context_line":"fast SSDs or persistent memory can be mounted locally on compute nodes and used"},{"line_number":27,"context_line":"as a cache for remote volumes."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"In order to do the cache, three projects need to be changed. These are cinder,"},{"line_number":30,"context_line":"os-brick, and Nova. The mechanism is similar to volume encryption where"},{"line_number":31,"context_line":"dm-crypt is used. Cache software support would be added in os-brick and Nova"},{"line_number":32,"context_line":"will call os-brick when it is trying to attach a volume, os-brick then calls"},{"line_number":33,"context_line":"the cache software to setup the cache for the volume. After that, a new virtual"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3fa7e38b_2eec81ba","line":30,"range":{"start_line":29,"start_character":0,"end_line":30,"end_character":19},"updated":"2020-01-27 13:42:59.000000000","message":"Additionally, the operator has to purchase and deploy the SSDs.  That\u0027s what\u0027s complicating this spec, because whereas the encrypted volume change could be done completely in software and be deployed to all hypervisors, that\u0027s not the case here.  So we need to expect that there will be hypervisors that have a volume-local cache and others that don\u0027t. \n\n(I don\u0027t insist that you add the above to the spec, but it\u0027s important to keep in mind.)","commit_id":"e3233683b5afcbadff7df9ad64730abe584974df"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"92dd283e9da349daf6900c908c4180c19ed64d17","unresolved":false,"context_lines":[{"line_number":26,"context_line":"fast SSDs or persistent memory can be mounted locally on compute nodes and used"},{"line_number":27,"context_line":"as a cache for remote volumes."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"In order to do the cache, three projects need to be changed. These are cinder,"},{"line_number":30,"context_line":"os-brick, and Nova. The mechanism is similar to volume encryption where"},{"line_number":31,"context_line":"dm-crypt is used. Cache software support would be added in os-brick and Nova"},{"line_number":32,"context_line":"will call os-brick when it is trying to attach a volume, os-brick then calls"},{"line_number":33,"context_line":"the cache software to setup the cache for the volume. After that, a new virtual"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3fa7e38b_5520484b","line":30,"range":{"start_line":29,"start_character":0,"end_line":30,"end_character":19},"in_reply_to":"3fa7e38b_2eec81ba","updated":"2020-01-29 07:14:10.000000000","message":"Added hardware related info, thanks","commit_id":"e3233683b5afcbadff7df9ad64730abe584974df"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"95646db9c30bb44307c3e339b63eff723024c1e6","unresolved":false,"context_lines":[{"line_number":93,"context_line":"operations. Cache software also cannot be changed to others except all dirty"},{"line_number":94,"context_line":"data has been flushed to backend."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"This spec would make os-brick refuse to attach volume with last two cache"},{"line_number":97,"context_line":"modes. But cache mode is set outside of OpenStack, Cinder/os-brick cannot"},{"line_number":98,"context_line":"control cache mode be set after volume attached. But it would be well"},{"line_number":99,"context_line":"documented that Write-Back (WB) and Write-Only (WO) mode is dangerous and"},{"line_number":100,"context_line":"operators should fully know what they are doing when trying to set to these"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3fa7e38b_2edd61dd","line":97,"range":{"start_line":96,"start_character":0,"end_line":97,"end_character":6},"updated":"2020-01-27 13:42:59.000000000","message":"How is this going to be accomplished (that is, how is this information going to be transmitted to os-brick)?","commit_id":"e3233683b5afcbadff7df9ad64730abe584974df"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"92dd283e9da349daf6900c908c4180c19ed64d17","unresolved":false,"context_lines":[{"line_number":93,"context_line":"operations. Cache software also cannot be changed to others except all dirty"},{"line_number":94,"context_line":"data has been flushed to backend."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"This spec would make os-brick refuse to attach volume with last two cache"},{"line_number":97,"context_line":"modes. But cache mode is set outside of OpenStack, Cinder/os-brick cannot"},{"line_number":98,"context_line":"control cache mode be set after volume attached. But it would be well"},{"line_number":99,"context_line":"documented that Write-Back (WB) and Write-Only (WO) mode is dangerous and"},{"line_number":100,"context_line":"operators should fully know what they are doing when trying to set to these"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3fa7e38b_35deec3b","line":97,"range":{"start_line":96,"start_character":0,"end_line":97,"end_character":6},"in_reply_to":"3fa7e38b_2edd61dd","updated":"2020-01-29 07:14:10.000000000","message":"Added in spec. os-brick can get cache instance info (including cache mode) from ID, via cache admin tool(e.g. casadm). So os-brick has the ability to refuse these two cache modes.","commit_id":"e3233683b5afcbadff7df9ad64730abe584974df"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"e157acf220759bc5f0005afe1ed62f3a991d1833","unresolved":false,"context_lines":[{"line_number":93,"context_line":"operations. Cache software also cannot be changed to others except all dirty"},{"line_number":94,"context_line":"data has been flushed to backend."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"This spec would make os-brick refuse to attach volume with last two cache"},{"line_number":97,"context_line":"modes. But cache mode is set outside of OpenStack, Cinder/os-brick cannot"},{"line_number":98,"context_line":"control cache mode be set after volume attached. But it would be well"},{"line_number":99,"context_line":"documented that Write-Back (WB) and Write-Only (WO) mode is dangerous and"},{"line_number":100,"context_line":"operators should fully know what they are doing when trying to set to these"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3fa7e38b_6c41fd61","line":97,"range":{"start_line":96,"start_character":0,"end_line":97,"end_character":6},"in_reply_to":"3fa7e38b_35deec3b","updated":"2020-01-29 13:45:57.000000000","message":"Thanks, that answers my question.","commit_id":"e3233683b5afcbadff7df9ad64730abe584974df"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"95646db9c30bb44307c3e339b63eff723024c1e6","unresolved":false,"context_lines":[{"line_number":110,"context_line":"* In write intensive scenarios, e.g. video surveillance, the latest data"},{"line_number":111,"context_line":"  written would be read more frequently. So if \"Write-Only\" cache mode is"},{"line_number":112,"context_line":"  selected, the read performance would be boost because the latest written data"},{"line_number":113,"context_line":"  is cached."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Proposed change"},{"line_number":116,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3fa7e38b_8e9a555d","line":113,"updated":"2020-01-27 13:42:59.000000000","message":"A problem with the second use case is that according to line 96, os-brick will not support it.","commit_id":"e3233683b5afcbadff7df9ad64730abe584974df"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"92dd283e9da349daf6900c908c4180c19ed64d17","unresolved":false,"context_lines":[{"line_number":110,"context_line":"* In write intensive scenarios, e.g. video surveillance, the latest data"},{"line_number":111,"context_line":"  written would be read more frequently. So if \"Write-Only\" cache mode is"},{"line_number":112,"context_line":"  selected, the read performance would be boost because the latest written data"},{"line_number":113,"context_line":"  is cached."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Proposed change"},{"line_number":116,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3fa7e38b_95b800e8","line":113,"in_reply_to":"3fa7e38b_8e9a555d","updated":"2020-01-29 07:14:10.000000000","message":"it makes sense, removed, thanks","commit_id":"e3233683b5afcbadff7df9ad64730abe584974df"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"95646db9c30bb44307c3e339b63eff723024c1e6","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Proposed change"},{"line_number":116,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"Cache mode is bound to cache instance. So different cache instances can have"},{"line_number":119,"context_line":"different cache modes. All cached volumes share same cache mode if they are"},{"line_number":120,"context_line":"cached by the same cache instance. The operator can change cache mode"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3fa7e38b_4e745dcd","line":117,"updated":"2020-01-27 13:42:59.000000000","message":"I think you should open this section by saying how the end user will interact with this feature, which is something like:\n\n1 In Cinder, end user selects a volume-type that is \u0027cacheable\u0027.\n\n2 In Nova, end user selects a flavor that is advertised as having a volume-local-cache.\n\nI think the above needs to be stated explicitly in the spec, and it hopefully addresses Rui Zang\u0027s concern about a volume performing differently depending on where it lands (the end user should expect different performance based on what server flavor was chosen).","commit_id":"e3233683b5afcbadff7df9ad64730abe584974df"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"92dd283e9da349daf6900c908c4180c19ed64d17","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Proposed change"},{"line_number":116,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"Cache mode is bound to cache instance. So different cache instances can have"},{"line_number":119,"context_line":"different cache modes. All cached volumes share same cache mode if they are"},{"line_number":120,"context_line":"cached by the same cache instance. The operator can change cache mode"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3fa7e38b_35c7cc67","line":117,"in_reply_to":"3fa7e38b_4e745dcd","updated":"2020-01-29 07:14:10.000000000","message":"Added. thanks","commit_id":"e3233683b5afcbadff7df9ad64730abe584974df"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"95646db9c30bb44307c3e339b63eff723024c1e6","unresolved":false,"context_lines":[{"line_number":177,"context_line":"    If \"multiattach\" exists, then cinder should refuse to add \"cacheable\""},{"line_number":178,"context_line":"    property to volume type, and vice versa."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"  * Report \"cacheable\" property to volume details. So Nova can know whether a"},{"line_number":181,"context_line":"    volume can be cached or not."},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"- Add a common framework for different cache software in os-brick. This"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3fa7e38b_ceadad83","line":180,"range":{"start_line":180,"start_character":4,"end_line":180,"end_character":50},"updated":"2020-01-27 13:42:59.000000000","message":"This will change the volume-detail response.  I think that means this spec requires a microversion bump.","commit_id":"e3233683b5afcbadff7df9ad64730abe584974df"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"95646db9c30bb44307c3e339b63eff723024c1e6","unresolved":false,"context_lines":[{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    cache_name - specify the cache software name, currently only support \u0027opencas\u0027"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    instance_ids - specify cache instances that can be used. os-brick chooses a"},{"line_number":200,"context_line":"    best one among these instances"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"  * attach_volume()"},{"line_number":203,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"3fa7e38b_0e14259e","line":200,"range":{"start_line":199,"start_character":61,"end_line":200,"end_character":34},"updated":"2020-01-27 13:42:59.000000000","message":"Two questions: (1) What information will os-brick have to make this choice? (2) Why not let nova decide which instance to use and not give os-brick a choice?","commit_id":"e3233683b5afcbadff7df9ad64730abe584974df"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"92dd283e9da349daf6900c908c4180c19ed64d17","unresolved":false,"context_lines":[{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    cache_name - specify the cache software name, currently only support \u0027opencas\u0027"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    instance_ids - specify cache instances that can be used. os-brick chooses a"},{"line_number":200,"context_line":"    best one among these instances"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"  * attach_volume()"},{"line_number":203,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"3fa7e38b_3280429c","line":200,"range":{"start_line":199,"start_character":61,"end_line":200,"end_character":34},"in_reply_to":"3fa7e38b_0e14259e","updated":"2020-01-29 07:14:10.000000000","message":"1) from cache instance ID, os-brick can get total cache size, free size via cache admin tool. So os-brick can select the best one from the instances IDs passed in.\n2) Nova just passes all the available cache instances\u0027 ID to os-brick, and let os-brick to decide which one to use, this can simplify Nova spec, let storage module to handle more storage related things.","commit_id":"e3233683b5afcbadff7df9ad64730abe584974df"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"e157acf220759bc5f0005afe1ed62f3a991d1833","unresolved":false,"context_lines":[{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    cache_name - specify the cache software name, currently only support \u0027opencas\u0027"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    instance_ids - specify cache instances that can be used. os-brick chooses a"},{"line_number":200,"context_line":"    best one among these instances"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"  * attach_volume()"},{"line_number":203,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"3fa7e38b_cc511133","line":200,"range":{"start_line":199,"start_character":61,"end_line":200,"end_character":34},"in_reply_to":"3fa7e38b_3280429c","updated":"2020-01-29 13:45:57.000000000","message":"OK, sounds good.","commit_id":"e3233683b5afcbadff7df9ad64730abe584974df"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"95646db9c30bb44307c3e339b63eff723024c1e6","unresolved":false,"context_lines":[{"line_number":277,"context_line":" |      |        +                            |"},{"line_number":278,"context_line":" |      |        |                            |"},{"line_number":279,"context_line":" |      |        v                            |"},{"line_number":280,"context_line":" +------+----\u003e  End                           |"},{"line_number":281,"context_line":"                                              +"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"3fa7e38b_ee750901","line":280,"range":{"start_line":280,"start_character":16,"end_line":280,"end_character":19},"updated":"2020-01-27 13:42:59.000000000","message":"What exactly does \u0027End\u0027 mean here?  What I mean is, does the \u0027No\u0027 at line 256 mean that the volume cannot be attached?  Or does the normal attach process (for either cached or non-cached volume) happen at line 280?","commit_id":"e3233683b5afcbadff7df9ad64730abe584974df"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"92dd283e9da349daf6900c908c4180c19ed64d17","unresolved":false,"context_lines":[{"line_number":277,"context_line":" |      |        +                            |"},{"line_number":278,"context_line":" |      |        |                            |"},{"line_number":279,"context_line":" |      |        v                            |"},{"line_number":280,"context_line":" +------+----\u003e  End                           |"},{"line_number":281,"context_line":"                                              +"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"3fa7e38b_d278cec2","line":280,"range":{"start_line":280,"start_character":16,"end_line":280,"end_character":19},"in_reply_to":"3fa7e38b_ee750901","updated":"2020-01-29 07:14:10.000000000","message":"\"No\" at line 256 just means the volume will not be cached, but will still go ahead in attach_volume function in Nova, so normal attach process will happen here.","commit_id":"e3233683b5afcbadff7df9ad64730abe584974df"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"95646db9c30bb44307c3e339b63eff723024c1e6","unresolved":false,"context_lines":[{"line_number":324,"context_line":"REST API impact"},{"line_number":325,"context_line":"---------------"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"None"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"Data model impact"},{"line_number":330,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3fa7e38b_4eb9bdc2","line":327,"range":{"start_line":327,"start_character":0,"end_line":327,"end_character":4},"updated":"2020-01-27 13:42:59.000000000","message":"See line 180, but let\u0027s check with Jay and Sean before changing this.","commit_id":"e3233683b5afcbadff7df9ad64730abe584974df"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"e157acf220759bc5f0005afe1ed62f3a991d1833","unresolved":false,"context_lines":[{"line_number":98,"context_line":"available cache instances ID list to os-brick, so os-brick knows the cache mode"},{"line_number":99,"context_line":"of the cache instances. This spec would make os-brick refuse to attach volume"},{"line_number":100,"context_line":"with last two cache modes. But cache mode is set outside of OpenStack, Cinder /"},{"line_number":101,"context_line":"os-brick cannot control cache mode be set after volume attached. But it would"},{"line_number":102,"context_line":"be well documented that Write-Back (WB) and Write-Only (WO) mode is dangerous"},{"line_number":103,"context_line":"and operators should fully know what they are doing when trying to set to these"},{"line_number":104,"context_line":"cache modes."}],"source_content_type":"text/x-rst","patch_set":13,"id":"3fa7e38b_2ca9c523","line":101,"range":{"start_line":101,"start_character":35,"end_line":101,"end_character":41},"updated":"2020-01-29 13:45:57.000000000","message":"nit: being modified","commit_id":"201552f9a67341bc9c1864cd7632d99a0af047c4"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"a5262c23af20deae99e5b1ceab3061f02d25be64","unresolved":false,"context_lines":[{"line_number":252,"context_line":"         +                                    |"},{"line_number":253,"context_line":"         |                                    |"},{"line_number":254,"context_line":"         +                                    |"},{"line_number":255,"context_line":"       attach_encryptor                       |"},{"line_number":256,"context_line":"         +                                    |"},{"line_number":257,"context_line":"         |                                    |"},{"line_number":258,"context_line":"         +                                    |"}],"source_content_type":"text/x-rst","patch_set":15,"id":"3fa7e38b_d642e23c","line":255,"updated":"2020-01-30 19:25:56.000000000","message":"This doesn\u0027t look right -- this layering would mean that decrypted volume data gets written to the cache, which is not something we can do for safety/security.\n\nThe cache has to cache data after it was encrypted, so it would be attached between the iSCSI device and the LUKS device created to decrypt the volume instead of how this diagram arranges it.","commit_id":"192cd46febbebf88c4e2fa96140f5d146d2dd136"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"0796a3dbb78121b89d92d8b5e94e553b632c50cf","unresolved":false,"context_lines":[{"line_number":252,"context_line":"         +                                    |"},{"line_number":253,"context_line":"         |                                    |"},{"line_number":254,"context_line":"         +                                    |"},{"line_number":255,"context_line":"       attach_encryptor                       |"},{"line_number":256,"context_line":"         +                                    |"},{"line_number":257,"context_line":"         |                                    |"},{"line_number":258,"context_line":"         +                                    |"}],"source_content_type":"text/x-rst","patch_set":15,"id":"3fa7e38b_7d0746ca","line":255,"in_reply_to":"3fa7e38b_d642e23c","updated":"2020-01-31 13:31:48.000000000","message":"This is a trade off between performance and security. Added more info in spec. This is the logic in Nova. I think may need more discussion on Nova spec. Thanks.","commit_id":"192cd46febbebf88c4e2fa96140f5d146d2dd136"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"cdeeddcf70e9ae510456c5845c11c65759ee621f","unresolved":false,"context_lines":[{"line_number":342,"context_line":""},{"line_number":343,"context_line":"Security impact"},{"line_number":344,"context_line":"---------------"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"None"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"Notifications impact"}],"source_content_type":"text/x-rst","patch_set":15,"id":"3fa7e38b_169b9a65","line":345,"updated":"2020-01-30 19:46:51.000000000","message":"Potential concerns about cross-tenant data leakage.  What happens to the cache when a volume is deleted?","commit_id":"192cd46febbebf88c4e2fa96140f5d146d2dd136"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"0796a3dbb78121b89d92d8b5e94e553b632c50cf","unresolved":false,"context_lines":[{"line_number":342,"context_line":""},{"line_number":343,"context_line":"Security impact"},{"line_number":344,"context_line":"---------------"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"None"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"Notifications impact"}],"source_content_type":"text/x-rst","patch_set":15,"id":"3fa7e38b_7d52e6dc","line":345,"in_reply_to":"3fa7e38b_169b9a65","updated":"2020-01-31 13:31:48.000000000","message":"volume delete will also volume detach. When volume detach, remote volume would be removed from cache mapping, and the data belongs to this volume would be removed from cache.","commit_id":"192cd46febbebf88c4e2fa96140f5d146d2dd136"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"62472226fea91faebd214c6c932388d406815c08","unresolved":false,"context_lines":[{"line_number":296,"context_line":""},{"line_number":297,"context_line":"* Volume local cache lays upon encryptor would have better performance, but"},{"line_number":298,"context_line":"  expose decrypted data in cache device. So base on security consideration,"},{"line_number":299,"context_line":"  cache may lay under encryptor in Nova implementation."},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"Alternatives"},{"line_number":302,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_623ebde4","line":299,"updated":"2020-01-31 18:37:52.000000000","message":"I don\u0027t think this is a trade-off that we can actually make -- it violates security expectations for encrypted volumes.","commit_id":"cfec7c1a9464a19e58cd2fd0e8b29fcadfbd4330"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"5d511a3d58c29c40c1d7d0281e9caf268a539d7d","unresolved":false,"context_lines":[{"line_number":296,"context_line":""},{"line_number":297,"context_line":"* Volume local cache lays upon encryptor would have better performance, but"},{"line_number":298,"context_line":"  expose decrypted data in cache device. So base on security consideration,"},{"line_number":299,"context_line":"  cache may lay under encryptor in Nova implementation."},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"Alternatives"},{"line_number":302,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_2ba501a1","line":299,"in_reply_to":"3fa7e38b_623ebde4","updated":"2020-01-31 20:46:27.000000000","message":"I agree that this is not a trade-off what *we* can make, though I suppose that it would be OK to offer it as a trade-off to the end user?  We\u0027re already restricting the \u0027cacheable\u0027 volume-type (no rbd, no multiattach) -- maybe we can also declare it incompatible with an encrypted volume-type?  Or would that make a \u0027cacheable\u0027 type so restricted that no one would use it?  Or, would it be a short-term issue that could be resolved if changes are made in Nova?\n\nIn any case, we definitely need to think about this.","commit_id":"cfec7c1a9464a19e58cd2fd0e8b29fcadfbd4330"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"22c6fae04d2e21ec8057476dc14f70a3a70e8843","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"In order to do volume local cache:"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"- In Nova, end user selects a flavor that is advertised as having a"},{"line_number":123,"context_line":"  volume-local-cache so guest can be landed in a server with cache capability."},{"line_number":124,"context_line":"  The end user should expect different performance based on what server flavor"},{"line_number":125,"context_line":"  was chosen. More information such as error handling, user message, etc, are"},{"line_number":126,"context_line":"  out of scope of this spec and would be defined in Nova spec [4]_."}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_c4736fe4","line":123,"range":{"start_line":122,"start_character":2,"end_line":123,"end_character":20},"updated":"2020-02-11 12:10:57.000000000","message":"note to myself: The nova spec lacks information about this part of the feature. How the flavor will specify if a volume needs to be cached?","commit_id":"e3f2a755d4ddac39dd9d7b8802bbbe89bb6bf9c6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0b28923a19ec3bc251d4a8742e20668ec66ab72c","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"In order to do volume local cache:"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"- In Nova, end user selects a flavor that is advertised as having a"},{"line_number":123,"context_line":"  volume-local-cache so guest can be landed in a server with cache capability."},{"line_number":124,"context_line":"  The end user should expect different performance based on what server flavor"},{"line_number":125,"context_line":"  was chosen. More information such as error handling, user message, etc, are"},{"line_number":126,"context_line":"  out of scope of this spec and would be defined in Nova spec [4]_."}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_e356892b","line":123,"range":{"start_line":122,"start_character":2,"end_line":123,"end_character":20},"in_reply_to":"3fa7e38b_1c01cdb5","updated":"2020-02-12 16:40:45.000000000","message":"ack, let\u0027s continue this part of the discussion on the nova spec.","commit_id":"e3f2a755d4ddac39dd9d7b8802bbbe89bb6bf9c6"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"ef8f0500a95131ddb744362c24cce6f1b9bf7915","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"In order to do volume local cache:"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"- In Nova, end user selects a flavor that is advertised as having a"},{"line_number":123,"context_line":"  volume-local-cache so guest can be landed in a server with cache capability."},{"line_number":124,"context_line":"  The end user should expect different performance based on what server flavor"},{"line_number":125,"context_line":"  was chosen. More information such as error handling, user message, etc, are"},{"line_number":126,"context_line":"  out of scope of this spec and would be defined in Nova spec [4]_."}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_1c01cdb5","line":123,"range":{"start_line":122,"start_character":2,"end_line":123,"end_character":20},"in_reply_to":"3fa7e38b_c4736fe4","updated":"2020-02-12 10:49:35.000000000","message":"by specifying trait in flavor extra spec. thanks.","commit_id":"e3f2a755d4ddac39dd9d7b8802bbbe89bb6bf9c6"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"dee8ceca94b73806ce2fe75b9b762e598966cb88","unresolved":false,"context_lines":[{"line_number":128,"context_line":"- In Cinder, volume type that is \u0027cacheable\u0027 should be selected."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"It is Cinder which determines and sets the \u0027cacheable\u0027 property. A volume"},{"line_number":131,"context_line":"marked as \"cacheable\" doesn\u0027t mean it must be cached, it just means it is"},{"line_number":132,"context_line":"eligible to be cached. Nova calls os-brick to set cache for the volume only"},{"line_number":133,"context_line":"when the volume has the property of \u0027cacheable\u0027."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"Cache mode is bound to cache instance. So different cache instances can have"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_9a1c0b15","line":132,"range":{"start_line":131,"start_character":54,"end_line":132,"end_character":22},"updated":"2020-02-12 07:39:13.000000000","message":"So...I\u0027m confused on what is that mean...is it means whether an volume can get a cache or not based on lucky, or scheduler will try the best?","commit_id":"e3f2a755d4ddac39dd9d7b8802bbbe89bb6bf9c6"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"ef8f0500a95131ddb744362c24cce6f1b9bf7915","unresolved":false,"context_lines":[{"line_number":128,"context_line":"- In Cinder, volume type that is \u0027cacheable\u0027 should be selected."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"It is Cinder which determines and sets the \u0027cacheable\u0027 property. A volume"},{"line_number":131,"context_line":"marked as \"cacheable\" doesn\u0027t mean it must be cached, it just means it is"},{"line_number":132,"context_line":"eligible to be cached. Nova calls os-brick to set cache for the volume only"},{"line_number":133,"context_line":"when the volume has the property of \u0027cacheable\u0027."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"Cache mode is bound to cache instance. So different cache instances can have"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_9c461d22","line":132,"range":{"start_line":131,"start_character":54,"end_line":132,"end_character":22},"in_reply_to":"3fa7e38b_9a1c0b15","updated":"2020-02-12 10:49:35.000000000","message":"It means: from the storage backend\u0027s point of view, the volume can be cached. But whether the volume will be cached  or not depends on which flavor user choose. If the flavor requires cache, and the guest be scheduled to host with cache capability, then the volume will be cached. Otherwise will not be cached even with cacheable property.","commit_id":"e3f2a755d4ddac39dd9d7b8802bbbe89bb6bf9c6"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"7895313dca32df2eb694af988ae52a4a692192ff","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"Changes would include:"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"- Add \"cacheable\" property in extra-spec of volume type"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"  * Volume local cache cannot work with multiattach. So when adding \"cacheable\""},{"line_number":193,"context_line":"    to extra-spec, cinder should check if \"multiattach\" property exists or not."}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_5d07861f","line":190,"range":{"start_line":190,"start_character":2,"end_line":190,"end_character":55},"updated":"2020-02-07 09:51:03.000000000","message":"This detail is up to Cinder folks, but \u0027cacheable\u0027 seems like something the user should be able to request on any volume type to me, because there\u0027s no technical restriction on what can be cached. From a cinder POV, all it\u0027s going to do is disable multi-attach.\n\nDo you really want to put this on the volume type, or is there somewhere else it could be added that\u0027s applicable to any volume type?","commit_id":"e3f2a755d4ddac39dd9d7b8802bbbe89bb6bf9c6"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"ef8f0500a95131ddb744362c24cce6f1b9bf7915","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"Changes would include:"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"- Add \"cacheable\" property in extra-spec of volume type"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"  * Volume local cache cannot work with multiattach. So when adding \"cacheable\""},{"line_number":193,"context_line":"    to extra-spec, cinder should check if \"multiattach\" property exists or not."}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_82f556cb","line":190,"range":{"start_line":190,"start_character":2,"end_line":190,"end_character":55},"in_reply_to":"3fa7e38b_5d07861f","updated":"2020-02-12 10:49:35.000000000","message":"not only multi-attach, rbd and NFS are also not support caching. So it seems better to added \"cacheable\" explicitly to volume type.","commit_id":"e3f2a755d4ddac39dd9d7b8802bbbe89bb6bf9c6"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"7895313dca32df2eb694af988ae52a4a692192ff","unresolved":false,"context_lines":[{"line_number":194,"context_line":"    If \"multiattach\" exists, then cinder should refuse to add \"cacheable\""},{"line_number":195,"context_line":"    property to volume type, and vice versa."},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"  * Fill \"cacheable\" property in connection_info. So Nova can know whether a"},{"line_number":198,"context_line":"    volume can be cached or not."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"- Add a common framework for different cache software in os-brick. This"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_dd2a9695","line":197,"range":{"start_line":197,"start_character":53,"end_line":197,"end_character":57},"updated":"2020-02-07 09:51:03.000000000","message":"os-brick","commit_id":"e3f2a755d4ddac39dd9d7b8802bbbe89bb6bf9c6"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"ef8f0500a95131ddb744362c24cce6f1b9bf7915","unresolved":false,"context_lines":[{"line_number":194,"context_line":"    If \"multiattach\" exists, then cinder should refuse to add \"cacheable\""},{"line_number":195,"context_line":"    property to volume type, and vice versa."},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"  * Fill \"cacheable\" property in connection_info. So Nova can know whether a"},{"line_number":198,"context_line":"    volume can be cached or not."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"- Add a common framework for different cache software in os-brick. This"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_bf042b1a","line":197,"range":{"start_line":197,"start_character":53,"end_line":197,"end_character":57},"in_reply_to":"3fa7e38b_dd2a9695","updated":"2020-02-12 10:49:35.000000000","message":"thanks","commit_id":"e3f2a755d4ddac39dd9d7b8802bbbe89bb6bf9c6"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"7895313dca32df2eb694af988ae52a4a692192ff","unresolved":false,"context_lines":[{"line_number":216,"context_line":"    instance_ids - specify cache instances that can be used. os-brick chooses a"},{"line_number":217,"context_line":"    best one among these instances"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"  * attach_volume()"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    This function would be called by Nova (in function _connect_volume) to"},{"line_number":222,"context_line":"    setup cache for a volume when it is trying to attach the volume."}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_d8462457","line":219,"range":{"start_line":219,"start_character":4,"end_line":219,"end_character":17},"updated":"2020-02-07 09:51:03.000000000","message":"Is there any way we could add attach/detach to os-brick, and Nova would never have to call it? i.e. Nova would just attach the volume, and os-brick would configure caching if required.","commit_id":"e3f2a755d4ddac39dd9d7b8802bbbe89bb6bf9c6"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"ef8f0500a95131ddb744362c24cce6f1b9bf7915","unresolved":false,"context_lines":[{"line_number":216,"context_line":"    instance_ids - specify cache instances that can be used. os-brick chooses a"},{"line_number":217,"context_line":"    best one among these instances"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"  * attach_volume()"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    This function would be called by Nova (in function _connect_volume) to"},{"line_number":222,"context_line":"    setup cache for a volume when it is trying to attach the volume."}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_bf566b2a","line":219,"range":{"start_line":219,"start_character":4,"end_line":219,"end_character":17},"in_reply_to":"3fa7e38b_d8462457","updated":"2020-02-12 10:49:35.000000000","message":"see reply below, thanks","commit_id":"e3f2a755d4ddac39dd9d7b8802bbbe89bb6bf9c6"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"7895313dca32df2eb694af988ae52a4a692192ff","unresolved":false,"context_lines":[{"line_number":243,"context_line":"  Implement functions attach_volume/detach_volume for open-cas."},{"line_number":244,"context_line":""},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"Code work flow would be like::"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"             Nova                                        osbrick"},{"line_number":249,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_583a34c5","line":246,"range":{"start_line":246,"start_character":0,"end_line":246,"end_character":30},"updated":"2020-02-07 09:51:03.000000000","message":"I feel like all of this could be in os-brick.","commit_id":"e3f2a755d4ddac39dd9d7b8802bbbe89bb6bf9c6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"22c6fae04d2e21ec8057476dc14f70a3a70e8843","unresolved":false,"context_lines":[{"line_number":243,"context_line":"  Implement functions attach_volume/detach_volume for open-cas."},{"line_number":244,"context_line":""},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"Code work flow would be like::"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"             Nova                                        osbrick"},{"line_number":249,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_84fed701","line":246,"range":{"start_line":246,"start_character":0,"end_line":246,"end_character":30},"in_reply_to":"3fa7e38b_583a34c5","updated":"2020-02-11 12:10:57.000000000","message":"Based on my skimming I agree with Matthew here. I also feel that volume_with_cache_property and Host_with_cache_capability could be decided on os-brick side. The attach_encryptor part is today on nova side so that will remain. \n\nIf caching is best effort , e.g. requested in flavor but not available on the compute, then nova does not have to know about the available cache instances that could be a config to os-brick. \n\nBut if the caching request should drive compute host selection then nova has to know about the available cache instances to expose that to scheduler / placement.","commit_id":"e3f2a755d4ddac39dd9d7b8802bbbe89bb6bf9c6"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"ef8f0500a95131ddb744362c24cce6f1b9bf7915","unresolved":false,"context_lines":[{"line_number":243,"context_line":"  Implement functions attach_volume/detach_volume for open-cas."},{"line_number":244,"context_line":""},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"Code work flow would be like::"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"             Nova                                        osbrick"},{"line_number":249,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_df3d67e6","line":246,"range":{"start_line":246,"start_character":0,"end_line":246,"end_character":30},"in_reply_to":"3fa7e38b_583a34c5","updated":"2020-02-12 10:49:35.000000000","message":"see reply below, thanks","commit_id":"e3f2a755d4ddac39dd9d7b8802bbbe89bb6bf9c6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0b28923a19ec3bc251d4a8742e20668ec66ab72c","unresolved":false,"context_lines":[{"line_number":243,"context_line":"  Implement functions attach_volume/detach_volume for open-cas."},{"line_number":244,"context_line":""},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"Code work flow would be like::"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"             Nova                                        osbrick"},{"line_number":249,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_c3090d32","line":246,"range":{"start_line":246,"start_character":0,"end_line":246,"end_character":30},"in_reply_to":"3fa7e38b_5fdc17e1","updated":"2020-02-12 16:40:45.000000000","message":"Thanks for the explanation. I\u0027m overall OK to have this logic in nova based on the PoC cdoe you proposed.","commit_id":"e3f2a755d4ddac39dd9d7b8802bbbe89bb6bf9c6"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"ef8f0500a95131ddb744362c24cce6f1b9bf7915","unresolved":false,"context_lines":[{"line_number":243,"context_line":"  Implement functions attach_volume/detach_volume for open-cas."},{"line_number":244,"context_line":""},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"Code work flow would be like::"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"             Nova                                        osbrick"},{"line_number":249,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_5fdc17e1","line":246,"range":{"start_line":246,"start_character":0,"end_line":246,"end_character":30},"in_reply_to":"3fa7e38b_84fed701","updated":"2020-02-12 10:49:35.000000000","message":"Currently it is not suitable to move all the logic to os-brick because the work flow like below. If move all the logic to os-brick, then the logic should be (duplicated)added to all the drivers(e.g. iscsi.py,nvmeof.py,fibre_channel.py,...etc) That\u0027s why volume encryption and now caching be added in driver.py in Nova. see: https://review.opendev.org/#/c/663542/3/nova/virt/libvirt/driver.py\n\n\n               Nova                           os-brick\n                                  +\n                                  |\ndriver.py ++--+ iscsi.py      ---------\u003e   iscsi.py\n           |                      |\n           +--+ nvme.py       ---------\u003e   nvmeof.py\n           |                      |\n           +--+ fiberchannel.py -------\u003e   fibre_channel.py\n           |                      |\n           +--+ ...           ---------\u003e   ...\n                                  |\n                                  +\ncaching is best effort(ignore caching if failed), it is scheduled by flavor with extra_spec.","commit_id":"e3f2a755d4ddac39dd9d7b8802bbbe89bb6bf9c6"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"327c4e29ac3d342fce176f4190e21b00bc336c06","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Currently there are different types of fast NVME SSDs, such as Intel Optane"},{"line_number":22,"context_line":"SSD, with latency as low as 10 us. What\u0027s more, persistent memory which aim to"},{"line_number":23,"context_line":"be SSD size but DRAM speed gets popupar now. Typical latency of persistent"},{"line_number":24,"context_line":"memory would be as low as hundreds of nanoseconds. While typical latency of"},{"line_number":25,"context_line":"remote volume for a VM can be at the millisecond level (iscsi / rbd). So these"},{"line_number":26,"context_line":"fast SSDs or persistent memory can be mounted locally on compute nodes and used"}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_741982d0","line":23,"range":{"start_line":23,"start_character":32,"end_line":23,"end_character":39},"updated":"2020-02-19 19:59:24.000000000","message":"nit: popular","commit_id":"eac02df32aac4ba93b41a7dbc8ff1005127d2511"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"327c4e29ac3d342fce176f4190e21b00bc336c06","unresolved":false,"context_lines":[{"line_number":103,"context_line":"dangerous and operators should fully know what they are doing when trying to"},{"line_number":104,"context_line":"set to these cache modes."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"Some storage backends may support discard/TRIM functionality, but cache"},{"line_number":107,"context_line":"software doesn\u0027t have sense of this. Cache software evicts data based on policy"},{"line_number":108,"context_line":"like \u0027lru\u0027(this is the default policy of open-cas)."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Some storage client, compute node, may enable multipath for volumes, e.g."}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_afc8074e","line":107,"range":{"start_line":106,"start_character":0,"end_line":107,"end_character":36},"updated":"2020-02-19 19:59:24.000000000","message":"OK, so I guess this means that Nova will have to treat the volume like it\u0027s on a backend that doesn\u0027t support discard/unmap/trim.  Would this be handled on the nova side in libvirt/driver.py, or would we arrange on the cinder side to lie about the discard capability of the backend when the cache is being used?\n\nShould also flag this for the documentation.  Discard/trim is regarded as a performance enhancement for the backend, so operators should be aware that it can\u0027t be used when the volume local cache is being used.","commit_id":"eac02df32aac4ba93b41a7dbc8ff1005127d2511"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"742ccc47eb430b6dfd5983bde4ef2c8a69ecd23a","unresolved":false,"context_lines":[{"line_number":103,"context_line":"dangerous and operators should fully know what they are doing when trying to"},{"line_number":104,"context_line":"set to these cache modes."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"Some storage backends may support discard/TRIM functionality, but cache"},{"line_number":107,"context_line":"software doesn\u0027t have sense of this. Cache software evicts data based on policy"},{"line_number":108,"context_line":"like \u0027lru\u0027(this is the default policy of open-cas)."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Some storage client, compute node, may enable multipath for volumes, e.g."}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_95e18e34","line":107,"range":{"start_line":106,"start_character":0,"end_line":107,"end_character":36},"in_reply_to":"3fa7e38b_106e13cb","updated":"2020-02-20 12:48:46.000000000","message":"Ok, that sounds good.  Please make a note somewhere that we need to make sure this behavior is tested.","commit_id":"eac02df32aac4ba93b41a7dbc8ff1005127d2511"},{"author":{"_account_id":28948,"name":"Liang Fang","email":"liang.a.fang@intel.com","username":"liang"},"change_message_id":"797b07e68b5566f8500dda1b863565afe335bbc2","unresolved":false,"context_lines":[{"line_number":103,"context_line":"dangerous and operators should fully know what they are doing when trying to"},{"line_number":104,"context_line":"set to these cache modes."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"Some storage backends may support discard/TRIM functionality, but cache"},{"line_number":107,"context_line":"software doesn\u0027t have sense of this. Cache software evicts data based on policy"},{"line_number":108,"context_line":"like \u0027lru\u0027(this is the default policy of open-cas)."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Some storage client, compute node, may enable multipath for volumes, e.g."}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_106e13cb","line":107,"range":{"start_line":106,"start_character":0,"end_line":107,"end_character":36},"in_reply_to":"3fa7e38b_afc8074e","updated":"2020-02-20 03:01:32.000000000","message":"Sorry for the misleading. What I mean is: discard/trim is supported as usual. Volume local cache will not impact this feature.\n\nThe data will remain in cache for a while after discard/trim, but will get cold and be evicted from cache later automatically by open-cas. This is done by open-cas and is transparent to OpenStack.","commit_id":"eac02df32aac4ba93b41a7dbc8ff1005127d2511"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"327c4e29ac3d342fce176f4190e21b00bc336c06","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Some storage types support \"extend volume\" which triggered from cinder side."},{"line_number":167,"context_line":"e.g. via command \"cinder extend ...\". It works normally when the volume is not"},{"line_number":168,"context_line":"\"in-use\". But if the volume is attached and \"in-use\", os-brick would not"},{"line_number":169,"context_line":"support to extend and just raise NotImplementedError for the volume with"},{"line_number":170,"context_line":"cacheable volume_type. This is because open-cas don\u0027t support volume extending"},{"line_number":171,"context_line":"dynamically in current release. But \"Resize Instance\" feature which triggered"},{"line_number":172,"context_line":"from Nova still can work, because volume will be detached and then re-attached"},{"line_number":173,"context_line":"during \"\"Resize Instance\"."}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_cfeea3b5","line":170,"range":{"start_line":168,"start_character":10,"end_line":170,"end_character":22},"updated":"2020-02-19 19:59:24.000000000","message":"This is another point to flag for the documentation.","commit_id":"eac02df32aac4ba93b41a7dbc8ff1005127d2511"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"327c4e29ac3d342fce176f4190e21b00bc336c06","unresolved":false,"context_lines":[{"line_number":430,"context_line":"Testing"},{"line_number":431,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"* Unit-tests, tempest and other related tests will be implemented."},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"* Test case in particular: leverage DRAM to simulate fast ssd, act as the cache"},{"line_number":436,"context_line":"  for open-cas; Use fio to do the 4k block size rand read test; Compare the"}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_6f6e8f2e","line":433,"updated":"2020-02-19 19:59:24.000000000","message":"As we discussed at the cinder meeting today [0], we\u0027d like to see devstack have the ability to run open-cas, maybe using a loop file, not to assess performance, but to verify that we can run all the tempest tests when the cache is in place and nothing blows up.\n\n[0] http://eavesdrop.openstack.org/meetings/cinder/2020/cinder.2020-02-19-14.00.log.html#l-168","commit_id":"eac02df32aac4ba93b41a7dbc8ff1005127d2511"}]}
