)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"77e383a153940bdfef661b1810426fa9f6efc047","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"4db012cd_b4340093","updated":"2021-08-24 19:28:40.000000000","message":"@Lorenz: I ended up using urandom, because hkdf implementation wasn\u0027t letting me read past the limit of available entropy and, since it was meant to be a clearer approach, I didn\u0027t want to overcomplicate by trying to make it do what I want.\n\nsee: https://cs.opensource.google/go/x/crypto/+/32db7946:hkdf/hkdf.go\n\nThinking about it, returning to the AES approach would produce faster code.","commit_id":"0478eeb40cbc1481426c3365b54c4e425d64d7ff"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"50738f12a21952b9fa6529880e3a024a202d3dab","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"5608ed5e_24870497","updated":"2021-08-25 22:06:48.000000000","message":"Punting it away from my queue, as the comments are marked \u0027resolved\u0027 (Acked but not Done? I assume this is a mistake.) but no code has been updated.","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"35d240b388a9373d198b61eee98784cd8c3f9396","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"b51d3337_362deae5","in_reply_to":"5608ed5e_24870497","updated":"2021-09-06 16:08:51.000000000","message":"ack !\u003d done. I wanted to let you know I agree with your comments, even though I hadn\u0027t written the code yet.","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000000,"name":"Leopold Schabel","display_name":"Leo","email":"leo@monogon.tech","username":"leo","avatars":[{"url":"https://www.gravatar.com/avatar/98f8f79a6bb45adef37defa7ead8f3d2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/98f8f79a6bb45adef37defa7ead8f3d2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/98f8f79a6bb45adef37defa7ead8f3d2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/98f8f79a6bb45adef37defa7ead8f3d2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"4c28fda0ac39ccb3c8a411b7c88f8fc2699bb7b2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"378885cc_dec85f71","in_reply_to":"a6978963_5fb4a5c7","updated":"2021-09-06 20:09:08.000000000","message":"Indeed - the \"ack\" button is a shortcut for \"ack, ain\u0027t gonna fix that tho\"","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"0823a99784bc0ff0db464a7ce2747bdd3a055ff4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"a6978963_5fb4a5c7","in_reply_to":"b51d3337_362deae5","updated":"2021-09-06 16:12:39.000000000","message":"It might be Gerrit marks threads \u0027resolved\u0027 on ack. That wasn\u0027t intended.","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"466a636b131dab56d2d9f56c2f9a18939b4210f0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"1d08f3d8_149d79bb","updated":"2021-09-08 10:24:31.000000000","message":"A bunch of comments marked as \u0027ack\u0027 that aren\u0027t resolved, marked them as such.","commit_id":"b9064c273994ab0931973b6013b70751ebbfc3a4"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"f1b3570a31904818aa2d3a7d682b5ff203cb0168","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"cc195c75_d01ea26a","in_reply_to":"1d08f3d8_149d79bb","updated":"2021-09-20 15:24:41.000000000","message":"Getting back to this CR after a while, I didn\u0027t notice Gerrit moving these to the resolved stack after ack-ing, derp.","commit_id":"b9064c273994ab0931973b6013b70751ebbfc3a4"}],"metropolis/pkg/verity/encoder.go":[{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ac796bd90ac82228711de268a06403b8ff8bdbe7","unresolved":true,"context_lines":[{"line_number":14,"context_line":"// See the License for the specific language governing permissions and"},{"line_number":15,"context_line":"// limitations under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"// This package implements a subset of the veritysetup tool from cryptsetup,"},{"line_number":18,"context_line":"// which is a userland tool to interact with dm-verity devices/images. It was"},{"line_number":19,"context_line":"// rewritten to provide the minimum of functionality needed for Metropolis"},{"line_number":20,"context_line":"// without having to package, link against and maintain the original C"}],"source_content_type":"text/x-go","patch_set":8,"id":"011608fe_90e52e14","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":76},"updated":"2021-08-25 11:53:32.000000000","message":"Not anymore, right?","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"cd5f8108b8558104451207eeb8e0afbdeff636db","unresolved":false,"context_lines":[{"line_number":14,"context_line":"// See the License for the specific language governing permissions and"},{"line_number":15,"context_line":"// limitations under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"// This package implements a subset of the veritysetup tool from cryptsetup,"},{"line_number":18,"context_line":"// which is a userland tool to interact with dm-verity devices/images. It was"},{"line_number":19,"context_line":"// rewritten to provide the minimum of functionality needed for Metropolis"},{"line_number":20,"context_line":"// without having to package, link against and maintain the original C"}],"source_content_type":"text/x-go","patch_set":8,"id":"58593273_8f996f2a","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":76},"in_reply_to":"011608fe_90e52e14","updated":"2021-08-25 12:52:33.000000000","message":"Ack","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"466a636b131dab56d2d9f56c2f9a18939b4210f0","unresolved":true,"context_lines":[{"line_number":14,"context_line":"// See the License for the specific language governing permissions and"},{"line_number":15,"context_line":"// limitations under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"// This package implements a subset of the veritysetup tool from cryptsetup,"},{"line_number":18,"context_line":"// which is a userland tool to interact with dm-verity devices/images. It was"},{"line_number":19,"context_line":"// rewritten to provide the minimum of functionality needed for Metropolis"},{"line_number":20,"context_line":"// without having to package, link against and maintain the original C"}],"source_content_type":"text/x-go","patch_set":8,"id":"6bbf130c_a267274b","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":76},"in_reply_to":"58593273_8f996f2a","updated":"2021-09-08 10:24:31.000000000","message":"Not resolved.","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"f1b3570a31904818aa2d3a7d682b5ff203cb0168","unresolved":false,"context_lines":[{"line_number":14,"context_line":"// See the License for the specific language governing permissions and"},{"line_number":15,"context_line":"// limitations under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"// This package implements a subset of the veritysetup tool from cryptsetup,"},{"line_number":18,"context_line":"// which is a userland tool to interact with dm-verity devices/images. It was"},{"line_number":19,"context_line":"// rewritten to provide the minimum of functionality needed for Metropolis"},{"line_number":20,"context_line":"// without having to package, link against and maintain the original C"}],"source_content_type":"text/x-go","patch_set":8,"id":"10d03296_3b4afe5e","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":76},"in_reply_to":"6bbf130c_a267274b","updated":"2021-09-20 15:24:41.000000000","message":"Done","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"13753dd630622af50a0160a5362ec9d2a5a7856d","unresolved":true,"context_lines":[{"line_number":59,"context_line":"type superblock struct {"},{"line_number":60,"context_line":"\t// signature is the magic signature of a verity hash device superblock,"},{"line_number":61,"context_line":"\t// \"verity\\0\\0\"."},{"line_number":62,"context_line":"\tsignature [8]uint8"},{"line_number":63,"context_line":"\t// version specifies a superblock format. This structure describes version"},{"line_number":64,"context_line":"\t// \u00271\u0027."},{"line_number":65,"context_line":"\tversion uint32"}],"source_content_type":"text/x-go","patch_set":8,"id":"2df34d50_079996cd","line":62,"range":{"start_line":62,"start_character":14,"end_line":62,"end_character":19},"updated":"2021-08-25 12:47:00.000000000","message":"\u0027byte\u0027, same for the other uint8 in this struct","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"c5dcdf63e8d11ea38c0f97a72d140367557fa580","unresolved":false,"context_lines":[{"line_number":59,"context_line":"type superblock struct {"},{"line_number":60,"context_line":"\t// signature is the magic signature of a verity hash device superblock,"},{"line_number":61,"context_line":"\t// \"verity\\0\\0\"."},{"line_number":62,"context_line":"\tsignature [8]uint8"},{"line_number":63,"context_line":"\t// version specifies a superblock format. This structure describes version"},{"line_number":64,"context_line":"\t// \u00271\u0027."},{"line_number":65,"context_line":"\tversion uint32"}],"source_content_type":"text/x-go","patch_set":8,"id":"6529602f_ffca5ebc","line":62,"range":{"start_line":62,"start_character":14,"end_line":62,"end_character":19},"in_reply_to":"2df34d50_079996cd","updated":"2021-09-06 16:03:15.000000000","message":"Ack","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"13753dd630622af50a0160a5362ec9d2a5a7856d","unresolved":true,"context_lines":[{"line_number":81,"context_line":"\t// saltSize encodes the size of hash block salt, up to the maximum of 256 bytes."},{"line_number":82,"context_line":"\tsaltSize uint16"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"\t// A zeroed space prepending the salt; unused."},{"line_number":85,"context_line":"\t_ [6]uint8"},{"line_number":86,"context_line":"\t// exactly saltSize bytes of salt are prepended to data blocks before hashing."},{"line_number":87,"context_line":"\tsaltBuffer [256]uint8"}],"source_content_type":"text/x-go","patch_set":8,"id":"d8d7f1dc_2541af96","line":84,"range":{"start_line":84,"start_character":4,"end_line":84,"end_character":46},"updated":"2021-08-25 12:47:00.000000000","message":"Just call it padding","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"c5dcdf63e8d11ea38c0f97a72d140367557fa580","unresolved":false,"context_lines":[{"line_number":81,"context_line":"\t// saltSize encodes the size of hash block salt, up to the maximum of 256 bytes."},{"line_number":82,"context_line":"\tsaltSize uint16"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"\t// A zeroed space prepending the salt; unused."},{"line_number":85,"context_line":"\t_ [6]uint8"},{"line_number":86,"context_line":"\t// exactly saltSize bytes of salt are prepended to data blocks before hashing."},{"line_number":87,"context_line":"\tsaltBuffer [256]uint8"}],"source_content_type":"text/x-go","patch_set":8,"id":"a838639c_032deea1","line":84,"range":{"start_line":84,"start_character":4,"end_line":84,"end_character":46},"in_reply_to":"d8d7f1dc_2541af96","updated":"2021-09-06 16:03:15.000000000","message":"Ack","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"13753dd630622af50a0160a5362ec9d2a5a7856d","unresolved":true,"context_lines":[{"line_number":128,"context_line":"\treturn sb.saltBuffer[:int(sb.saltSize)]"},{"line_number":129,"context_line":"}"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"// algorithmName returns a name of hash algorithm used to encode data"},{"line_number":132,"context_line":"// block digests."},{"line_number":133,"context_line":"func (sb *superblock) algorithmName() string {"},{"line_number":134,"context_line":"\tsize :\u003d bytes.IndexByte(sb.algorithm[:], 0x00)"}],"source_content_type":"text/x-go","patch_set":8,"id":"15780f9f_0f287f3b","line":131,"range":{"start_line":131,"start_character":58,"end_line":131,"end_character":64},"updated":"2021-08-25 12:47:00.000000000","message":"This is a hash, not an encoding algorithm","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ac796bd90ac82228711de268a06403b8ff8bdbe7","unresolved":true,"context_lines":[{"line_number":128,"context_line":"\treturn sb.saltBuffer[:int(sb.saltSize)]"},{"line_number":129,"context_line":"}"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"// algorithmName returns a name of hash algorithm used to encode data"},{"line_number":132,"context_line":"// block digests."},{"line_number":133,"context_line":"func (sb *superblock) algorithmName() string {"},{"line_number":134,"context_line":"\tsize :\u003d bytes.IndexByte(sb.algorithm[:], 0x00)"}],"source_content_type":"text/x-go","patch_set":8,"id":"ad450575_bda968f0","line":131,"range":{"start_line":131,"start_character":25,"end_line":131,"end_character":34},"updated":"2021-08-25 11:53:32.000000000","message":"grammar: ... returns the name of the hash algorithm ...","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"c5dcdf63e8d11ea38c0f97a72d140367557fa580","unresolved":false,"context_lines":[{"line_number":128,"context_line":"\treturn sb.saltBuffer[:int(sb.saltSize)]"},{"line_number":129,"context_line":"}"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"// algorithmName returns a name of hash algorithm used to encode data"},{"line_number":132,"context_line":"// block digests."},{"line_number":133,"context_line":"func (sb *superblock) algorithmName() string {"},{"line_number":134,"context_line":"\tsize :\u003d bytes.IndexByte(sb.algorithm[:], 0x00)"}],"source_content_type":"text/x-go","patch_set":8,"id":"6c2e54c7_3a8cd792","line":131,"range":{"start_line":131,"start_character":58,"end_line":131,"end_character":64},"in_reply_to":"15780f9f_0f287f3b","updated":"2021-09-06 16:03:15.000000000","message":"Ack","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"cd5f8108b8558104451207eeb8e0afbdeff636db","unresolved":false,"context_lines":[{"line_number":128,"context_line":"\treturn sb.saltBuffer[:int(sb.saltSize)]"},{"line_number":129,"context_line":"}"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"// algorithmName returns a name of hash algorithm used to encode data"},{"line_number":132,"context_line":"// block digests."},{"line_number":133,"context_line":"func (sb *superblock) algorithmName() string {"},{"line_number":134,"context_line":"\tsize :\u003d bytes.IndexByte(sb.algorithm[:], 0x00)"}],"source_content_type":"text/x-go","patch_set":8,"id":"460369fd_b22d66ae","line":131,"range":{"start_line":131,"start_character":25,"end_line":131,"end_character":34},"in_reply_to":"ad450575_bda968f0","updated":"2021-08-25 12:52:33.000000000","message":"Ack","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ac796bd90ac82228711de268a06403b8ff8bdbe7","unresolved":true,"context_lines":[{"line_number":206,"context_line":"// WriteTo writes a verity superblock to a given writer object."},{"line_number":207,"context_line":"// It returns the count of bytes written, and a write error, if"},{"line_number":208,"context_line":"// encountered."},{"line_number":209,"context_line":"func (sb *superblock) WriteTo(w io.Writer) (int64, error) {"},{"line_number":210,"context_line":"\t// Write the superblock."},{"line_number":211,"context_line":"\tif err :\u003d binary.Write(w, binary.LittleEndian, sb); err !\u003d nil {"},{"line_number":212,"context_line":"\t\treturn -1, fmt.Errorf(\"while writing a header: %w\", err)"}],"source_content_type":"text/x-go","patch_set":8,"id":"2a3f8281_d72e3550","line":209,"range":{"start_line":209,"start_character":22,"end_line":209,"end_character":29},"updated":"2021-08-25 11:53:32.000000000","message":"Do we need this exported / do we need to implement io.WriterTo? (also hashTree.WriteTo)","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"cd5f8108b8558104451207eeb8e0afbdeff636db","unresolved":true,"context_lines":[{"line_number":206,"context_line":"// WriteTo writes a verity superblock to a given writer object."},{"line_number":207,"context_line":"// It returns the count of bytes written, and a write error, if"},{"line_number":208,"context_line":"// encountered."},{"line_number":209,"context_line":"func (sb *superblock) WriteTo(w io.Writer) (int64, error) {"},{"line_number":210,"context_line":"\t// Write the superblock."},{"line_number":211,"context_line":"\tif err :\u003d binary.Write(w, binary.LittleEndian, sb); err !\u003d nil {"},{"line_number":212,"context_line":"\t\treturn -1, fmt.Errorf(\"while writing a header: %w\", err)"}],"source_content_type":"text/x-go","patch_set":8,"id":"5ae3f6e4_6a2b74cd","line":209,"range":{"start_line":209,"start_character":22,"end_line":209,"end_character":29},"in_reply_to":"2a3f8281_d72e3550","updated":"2021-08-25 12:52:33.000000000","message":"We don\u0027t need this exported, nor is this interface used externally. Implementing this as io.WriterTo makes it intuitive and I\u0027d rather keep it this way. Is there a way of implementing this interface without exporting the method?","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"3f3e462b4c69b96b55d6be6edcb12e76c79f4a60","unresolved":false,"context_lines":[{"line_number":206,"context_line":"// WriteTo writes a verity superblock to a given writer object."},{"line_number":207,"context_line":"// It returns the count of bytes written, and a write error, if"},{"line_number":208,"context_line":"// encountered."},{"line_number":209,"context_line":"func (sb *superblock) WriteTo(w io.Writer) (int64, error) {"},{"line_number":210,"context_line":"\t// Write the superblock."},{"line_number":211,"context_line":"\tif err :\u003d binary.Write(w, binary.LittleEndian, sb); err !\u003d nil {"},{"line_number":212,"context_line":"\t\treturn -1, fmt.Errorf(\"while writing a header: %w\", err)"}],"source_content_type":"text/x-go","patch_set":8,"id":"22c8a5d9_fa6c777d","line":209,"range":{"start_line":209,"start_character":22,"end_line":209,"end_character":29},"in_reply_to":"5ae3f6e4_6a2b74cd","updated":"2021-09-20 18:38:15.000000000","message":"Ack","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ac796bd90ac82228711de268a06403b8ff8bdbe7","unresolved":true,"context_lines":[{"line_number":276,"context_line":"}"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"// WriteTo writes a verity-formatted hash tree to the given writer"},{"line_number":279,"context_line":"// object. Compare with computeHashTree."},{"line_number":280,"context_line":"// It returns a write error, if encountered."},{"line_number":281,"context_line":"func (ht *hashTree) WriteTo(w io.Writer) (int64, error) {"},{"line_number":282,"context_line":"\t// \u0027t\u0027 keeps the count of bytes written to \u0027w\u0027."}],"source_content_type":"text/x-go","patch_set":8,"id":"0503ea2b_592e33ab","line":279,"range":{"start_line":279,"start_character":11,"end_line":279,"end_character":40},"updated":"2021-08-25 11:53:32.000000000","message":"Compare and look for what?","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"cd5f8108b8558104451207eeb8e0afbdeff636db","unresolved":true,"context_lines":[{"line_number":276,"context_line":"}"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"// WriteTo writes a verity-formatted hash tree to the given writer"},{"line_number":279,"context_line":"// object. Compare with computeHashTree."},{"line_number":280,"context_line":"// It returns a write error, if encountered."},{"line_number":281,"context_line":"func (ht *hashTree) WriteTo(w io.Writer) (int64, error) {"},{"line_number":282,"context_line":"\t// \u0027t\u0027 keeps the count of bytes written to \u0027w\u0027."}],"source_content_type":"text/x-go","patch_set":8,"id":"4ce6de3b_90fc45df","line":279,"range":{"start_line":279,"start_character":11,"end_line":279,"end_character":40},"in_reply_to":"0503ea2b_592e33ab","updated":"2021-08-25 12:52:33.000000000","message":"I wrote this prior to refactoring. I\u0027m going to remove this sentence.","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"c5dcdf63e8d11ea38c0f97a72d140367557fa580","unresolved":false,"context_lines":[{"line_number":276,"context_line":"}"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"// WriteTo writes a verity-formatted hash tree to the given writer"},{"line_number":279,"context_line":"// object. Compare with computeHashTree."},{"line_number":280,"context_line":"// It returns a write error, if encountered."},{"line_number":281,"context_line":"func (ht *hashTree) WriteTo(w io.Writer) (int64, error) {"},{"line_number":282,"context_line":"\t// \u0027t\u0027 keeps the count of bytes written to \u0027w\u0027."}],"source_content_type":"text/x-go","patch_set":8,"id":"1d3ec8d2_9ea1a0ff","line":279,"range":{"start_line":279,"start_character":11,"end_line":279,"end_character":40},"in_reply_to":"4ce6de3b_90fc45df","updated":"2021-09-06 16:03:15.000000000","message":"Ack","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ac796bd90ac82228711de268a06403b8ff8bdbe7","unresolved":true,"context_lines":[{"line_number":287,"context_line":"\t\t// Call w.Write until a whole level is written."},{"line_number":288,"context_line":"\t\tfor len(level) !\u003d 0 {"},{"line_number":289,"context_line":"\t\t\tn, err :\u003d w.Write(level)"},{"line_number":290,"context_line":"\t\t\tif err !\u003d nil \u0026\u0026 err !\u003d io.ErrShortWrite {"},{"line_number":291,"context_line":"\t\t\t\treturn t, fmt.Errorf(\"while writing a level: %w\", err)"},{"line_number":292,"context_line":"\t\t\t}"},{"line_number":293,"context_line":"\t\t\tlevel \u003d level[n:]"}],"source_content_type":"text/x-go","patch_set":8,"id":"3e685aa2_d14ff9a6","line":290,"range":{"start_line":290,"start_character":27,"end_line":290,"end_character":43},"updated":"2021-08-25 11:53:32.000000000","message":"Did you ever encounter this? This generally shouldn\u0027t be returned by io.Writers, but only by things talking to buggy io.Writers.\n\nAn io.Writer should generally never return n \u003c len(data) and err \u003d\u003d {nil | io.ErrShortWrite}. You shouldn\u0027t try to handle these cases unless you\u0027ve actually encountered them (and even then, the correct thing to do would be to fix the io.Writer instead of working around it).","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"f1b3570a31904818aa2d3a7d682b5ff203cb0168","unresolved":false,"context_lines":[{"line_number":287,"context_line":"\t\t// Call w.Write until a whole level is written."},{"line_number":288,"context_line":"\t\tfor len(level) !\u003d 0 {"},{"line_number":289,"context_line":"\t\t\tn, err :\u003d w.Write(level)"},{"line_number":290,"context_line":"\t\t\tif err !\u003d nil \u0026\u0026 err !\u003d io.ErrShortWrite {"},{"line_number":291,"context_line":"\t\t\t\treturn t, fmt.Errorf(\"while writing a level: %w\", err)"},{"line_number":292,"context_line":"\t\t\t}"},{"line_number":293,"context_line":"\t\t\tlevel \u003d level[n:]"}],"source_content_type":"text/x-go","patch_set":8,"id":"a0ac0d47_b3e89a5a","line":290,"range":{"start_line":290,"start_character":27,"end_line":290,"end_character":43},"in_reply_to":"34089351_9c03bd34","updated":"2021-09-20 15:24:41.000000000","message":"Done, removed.","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"cd5f8108b8558104451207eeb8e0afbdeff636db","unresolved":false,"context_lines":[{"line_number":287,"context_line":"\t\t// Call w.Write until a whole level is written."},{"line_number":288,"context_line":"\t\tfor len(level) !\u003d 0 {"},{"line_number":289,"context_line":"\t\t\tn, err :\u003d w.Write(level)"},{"line_number":290,"context_line":"\t\t\tif err !\u003d nil \u0026\u0026 err !\u003d io.ErrShortWrite {"},{"line_number":291,"context_line":"\t\t\t\treturn t, fmt.Errorf(\"while writing a level: %w\", err)"},{"line_number":292,"context_line":"\t\t\t}"},{"line_number":293,"context_line":"\t\t\tlevel \u003d level[n:]"}],"source_content_type":"text/x-go","patch_set":8,"id":"93c1bd04_47400fdd","line":290,"range":{"start_line":290,"start_character":27,"end_line":290,"end_character":43},"in_reply_to":"3e685aa2_d14ff9a6","updated":"2021-08-25 12:52:33.000000000","message":"Ack","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"466a636b131dab56d2d9f56c2f9a18939b4210f0","unresolved":true,"context_lines":[{"line_number":287,"context_line":"\t\t// Call w.Write until a whole level is written."},{"line_number":288,"context_line":"\t\tfor len(level) !\u003d 0 {"},{"line_number":289,"context_line":"\t\t\tn, err :\u003d w.Write(level)"},{"line_number":290,"context_line":"\t\t\tif err !\u003d nil \u0026\u0026 err !\u003d io.ErrShortWrite {"},{"line_number":291,"context_line":"\t\t\t\treturn t, fmt.Errorf(\"while writing a level: %w\", err)"},{"line_number":292,"context_line":"\t\t\t}"},{"line_number":293,"context_line":"\t\t\tlevel \u003d level[n:]"}],"source_content_type":"text/x-go","patch_set":8,"id":"34089351_9c03bd34","line":290,"range":{"start_line":290,"start_character":27,"end_line":290,"end_character":43},"in_reply_to":"93c1bd04_47400fdd","updated":"2021-09-08 10:24:31.000000000","message":"Not resolved.","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ac796bd90ac82228711de268a06403b8ff8bdbe7","unresolved":true,"context_lines":[{"line_number":300,"context_line":"// MappingTable aggregates data needed to generate a complete Verity"},{"line_number":301,"context_line":"// mapping table."},{"line_number":302,"context_line":"type MappingTable struct {"},{"line_number":303,"context_line":"\t// superblock defines following elements of the mapping table:"},{"line_number":304,"context_line":"\t// - data device block size"},{"line_number":305,"context_line":"\t// - hash device block size"},{"line_number":306,"context_line":"\t// - total count of data blocks"}],"source_content_type":"text/x-go","patch_set":8,"id":"40543cd8_43e2e3c8","line":303,"range":{"start_line":303,"start_character":23,"end_line":303,"end_character":32},"updated":"2021-08-25 11:53:32.000000000","message":"grammar: ... defines the following elements ...","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"466a636b131dab56d2d9f56c2f9a18939b4210f0","unresolved":true,"context_lines":[{"line_number":300,"context_line":"// MappingTable aggregates data needed to generate a complete Verity"},{"line_number":301,"context_line":"// mapping table."},{"line_number":302,"context_line":"type MappingTable struct {"},{"line_number":303,"context_line":"\t// superblock defines following elements of the mapping table:"},{"line_number":304,"context_line":"\t// - data device block size"},{"line_number":305,"context_line":"\t// - hash device block size"},{"line_number":306,"context_line":"\t// - total count of data blocks"}],"source_content_type":"text/x-go","patch_set":8,"id":"49ebe60d_8ed65bb5","line":303,"range":{"start_line":303,"start_character":23,"end_line":303,"end_character":32},"in_reply_to":"0cfab136_20295de2","updated":"2021-09-08 10:24:31.000000000","message":"Not resolved.","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"cd5f8108b8558104451207eeb8e0afbdeff636db","unresolved":false,"context_lines":[{"line_number":300,"context_line":"// MappingTable aggregates data needed to generate a complete Verity"},{"line_number":301,"context_line":"// mapping table."},{"line_number":302,"context_line":"type MappingTable struct {"},{"line_number":303,"context_line":"\t// superblock defines following elements of the mapping table:"},{"line_number":304,"context_line":"\t// - data device block size"},{"line_number":305,"context_line":"\t// - hash device block size"},{"line_number":306,"context_line":"\t// - total count of data blocks"}],"source_content_type":"text/x-go","patch_set":8,"id":"0cfab136_20295de2","line":303,"range":{"start_line":303,"start_character":23,"end_line":303,"end_character":32},"in_reply_to":"40543cd8_43e2e3c8","updated":"2021-08-25 12:52:33.000000000","message":"Ack","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"f1b3570a31904818aa2d3a7d682b5ff203cb0168","unresolved":false,"context_lines":[{"line_number":300,"context_line":"// MappingTable aggregates data needed to generate a complete Verity"},{"line_number":301,"context_line":"// mapping table."},{"line_number":302,"context_line":"type MappingTable struct {"},{"line_number":303,"context_line":"\t// superblock defines following elements of the mapping table:"},{"line_number":304,"context_line":"\t// - data device block size"},{"line_number":305,"context_line":"\t// - hash device block size"},{"line_number":306,"context_line":"\t// - total count of data blocks"}],"source_content_type":"text/x-go","patch_set":8,"id":"41d33a6d_3d312831","line":303,"range":{"start_line":303,"start_character":23,"end_line":303,"end_character":32},"in_reply_to":"49ebe60d_8ed65bb5","updated":"2021-09-20 15:24:41.000000000","message":"Done","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ac796bd90ac82228711de268a06403b8ff8bdbe7","unresolved":true,"context_lines":[{"line_number":307,"context_line":"\t// - hash algorithm used"},{"line_number":308,"context_line":"\t// - cryptographic salt used"},{"line_number":309,"context_line":"\tsuperblock *superblock"},{"line_number":310,"context_line":"\t// dataDevicePath is the filesystem path of data device used as part"},{"line_number":311,"context_line":"\t// of the Verity Device Mapper target."},{"line_number":312,"context_line":"\tdataDevicePath string"},{"line_number":313,"context_line":"\t// hashDevicePath is the filesystem path of hash device used as part"}],"source_content_type":"text/x-go","patch_set":8,"id":"a2b71232_1f234c6a","line":310,"range":{"start_line":310,"start_character":45,"end_line":310,"end_character":49},"updated":"2021-08-25 11:53:32.000000000","message":"grammar: ... of the data device ...","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"cd5f8108b8558104451207eeb8e0afbdeff636db","unresolved":false,"context_lines":[{"line_number":307,"context_line":"\t// - hash algorithm used"},{"line_number":308,"context_line":"\t// - cryptographic salt used"},{"line_number":309,"context_line":"\tsuperblock *superblock"},{"line_number":310,"context_line":"\t// dataDevicePath is the filesystem path of data device used as part"},{"line_number":311,"context_line":"\t// of the Verity Device Mapper target."},{"line_number":312,"context_line":"\tdataDevicePath string"},{"line_number":313,"context_line":"\t// hashDevicePath is the filesystem path of hash device used as part"}],"source_content_type":"text/x-go","patch_set":8,"id":"c3497a58_b8589ab1","line":310,"range":{"start_line":310,"start_character":45,"end_line":310,"end_character":49},"in_reply_to":"a2b71232_1f234c6a","updated":"2021-08-25 12:52:33.000000000","message":"Ack","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"466a636b131dab56d2d9f56c2f9a18939b4210f0","unresolved":true,"context_lines":[{"line_number":307,"context_line":"\t// - hash algorithm used"},{"line_number":308,"context_line":"\t// - cryptographic salt used"},{"line_number":309,"context_line":"\tsuperblock *superblock"},{"line_number":310,"context_line":"\t// dataDevicePath is the filesystem path of data device used as part"},{"line_number":311,"context_line":"\t// of the Verity Device Mapper target."},{"line_number":312,"context_line":"\tdataDevicePath string"},{"line_number":313,"context_line":"\t// hashDevicePath is the filesystem path of hash device used as part"}],"source_content_type":"text/x-go","patch_set":8,"id":"d45bd719_e7eac002","line":310,"range":{"start_line":310,"start_character":45,"end_line":310,"end_character":49},"in_reply_to":"c3497a58_b8589ab1","updated":"2021-09-08 10:24:31.000000000","message":"Not resolved.","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"f1b3570a31904818aa2d3a7d682b5ff203cb0168","unresolved":false,"context_lines":[{"line_number":307,"context_line":"\t// - hash algorithm used"},{"line_number":308,"context_line":"\t// - cryptographic salt used"},{"line_number":309,"context_line":"\tsuperblock *superblock"},{"line_number":310,"context_line":"\t// dataDevicePath is the filesystem path of data device used as part"},{"line_number":311,"context_line":"\t// of the Verity Device Mapper target."},{"line_number":312,"context_line":"\tdataDevicePath string"},{"line_number":313,"context_line":"\t// hashDevicePath is the filesystem path of hash device used as part"}],"source_content_type":"text/x-go","patch_set":8,"id":"be5bf959_7532e0aa","line":310,"range":{"start_line":310,"start_character":45,"end_line":310,"end_character":49},"in_reply_to":"d45bd719_e7eac002","updated":"2021-09-20 15:24:41.000000000","message":"Done","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ac796bd90ac82228711de268a06403b8ff8bdbe7","unresolved":true,"context_lines":[{"line_number":310,"context_line":"\t// dataDevicePath is the filesystem path of data device used as part"},{"line_number":311,"context_line":"\t// of the Verity Device Mapper target."},{"line_number":312,"context_line":"\tdataDevicePath string"},{"line_number":313,"context_line":"\t// hashDevicePath is the filesystem path of hash device used as part"},{"line_number":314,"context_line":"\t// of the Verity Device Mapper target."},{"line_number":315,"context_line":"\thashDevicePath string"},{"line_number":316,"context_line":"\t// hashStart marks the starting block of Verity hash tree."}],"source_content_type":"text/x-go","patch_set":8,"id":"6e29e174_6bef4249","line":313,"range":{"start_line":313,"start_character":45,"end_line":313,"end_character":49},"updated":"2021-08-25 11:53:32.000000000","message":"grammar: ... of the hash device ...","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"466a636b131dab56d2d9f56c2f9a18939b4210f0","unresolved":true,"context_lines":[{"line_number":310,"context_line":"\t// dataDevicePath is the filesystem path of data device used as part"},{"line_number":311,"context_line":"\t// of the Verity Device Mapper target."},{"line_number":312,"context_line":"\tdataDevicePath string"},{"line_number":313,"context_line":"\t// hashDevicePath is the filesystem path of hash device used as part"},{"line_number":314,"context_line":"\t// of the Verity Device Mapper target."},{"line_number":315,"context_line":"\thashDevicePath string"},{"line_number":316,"context_line":"\t// hashStart marks the starting block of Verity hash tree."}],"source_content_type":"text/x-go","patch_set":8,"id":"f169f6c0_066c398a","line":313,"range":{"start_line":313,"start_character":45,"end_line":313,"end_character":49},"in_reply_to":"4a1cf8a9_1c2330cf","updated":"2021-09-08 10:24:31.000000000","message":"Not resolved.","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"cd5f8108b8558104451207eeb8e0afbdeff636db","unresolved":false,"context_lines":[{"line_number":310,"context_line":"\t// dataDevicePath is the filesystem path of data device used as part"},{"line_number":311,"context_line":"\t// of the Verity Device Mapper target."},{"line_number":312,"context_line":"\tdataDevicePath string"},{"line_number":313,"context_line":"\t// hashDevicePath is the filesystem path of hash device used as part"},{"line_number":314,"context_line":"\t// of the Verity Device Mapper target."},{"line_number":315,"context_line":"\thashDevicePath string"},{"line_number":316,"context_line":"\t// hashStart marks the starting block of Verity hash tree."}],"source_content_type":"text/x-go","patch_set":8,"id":"4a1cf8a9_1c2330cf","line":313,"range":{"start_line":313,"start_character":45,"end_line":313,"end_character":49},"in_reply_to":"6e29e174_6bef4249","updated":"2021-08-25 12:52:33.000000000","message":"Ack","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"f1b3570a31904818aa2d3a7d682b5ff203cb0168","unresolved":false,"context_lines":[{"line_number":310,"context_line":"\t// dataDevicePath is the filesystem path of data device used as part"},{"line_number":311,"context_line":"\t// of the Verity Device Mapper target."},{"line_number":312,"context_line":"\tdataDevicePath string"},{"line_number":313,"context_line":"\t// hashDevicePath is the filesystem path of hash device used as part"},{"line_number":314,"context_line":"\t// of the Verity Device Mapper target."},{"line_number":315,"context_line":"\thashDevicePath string"},{"line_number":316,"context_line":"\t// hashStart marks the starting block of Verity hash tree."}],"source_content_type":"text/x-go","patch_set":8,"id":"8bca9244_14a85c68","line":313,"range":{"start_line":313,"start_character":45,"end_line":313,"end_character":49},"in_reply_to":"f169f6c0_066c398a","updated":"2021-09-20 15:24:41.000000000","message":"Done","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ac796bd90ac82228711de268a06403b8ff8bdbe7","unresolved":true,"context_lines":[{"line_number":313,"context_line":"\t// hashDevicePath is the filesystem path of hash device used as part"},{"line_number":314,"context_line":"\t// of the Verity Device Mapper target."},{"line_number":315,"context_line":"\thashDevicePath string"},{"line_number":316,"context_line":"\t// hashStart marks the starting block of Verity hash tree."},{"line_number":317,"context_line":"\thashStart int"},{"line_number":318,"context_line":"\t// rootHash stores a cryptographic hash of the top hash tree block."},{"line_number":319,"context_line":"\trootHash []byte"}],"source_content_type":"text/x-go","patch_set":8,"id":"26cd578f_85901ef7","line":316,"range":{"start_line":316,"start_character":42,"end_line":316,"end_character":48},"updated":"2021-08-25 11:53:32.000000000","message":"grammar: ... of the Verity hash tree ...","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"cd5f8108b8558104451207eeb8e0afbdeff636db","unresolved":false,"context_lines":[{"line_number":313,"context_line":"\t// hashDevicePath is the filesystem path of hash device used as part"},{"line_number":314,"context_line":"\t// of the Verity Device Mapper target."},{"line_number":315,"context_line":"\thashDevicePath string"},{"line_number":316,"context_line":"\t// hashStart marks the starting block of Verity hash tree."},{"line_number":317,"context_line":"\thashStart int"},{"line_number":318,"context_line":"\t// rootHash stores a cryptographic hash of the top hash tree block."},{"line_number":319,"context_line":"\trootHash []byte"}],"source_content_type":"text/x-go","patch_set":8,"id":"ad9fe759_83e5669b","line":316,"range":{"start_line":316,"start_character":42,"end_line":316,"end_character":48},"in_reply_to":"26cd578f_85901ef7","updated":"2021-08-25 12:52:33.000000000","message":"Ack","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"466a636b131dab56d2d9f56c2f9a18939b4210f0","unresolved":true,"context_lines":[{"line_number":313,"context_line":"\t// hashDevicePath is the filesystem path of hash device used as part"},{"line_number":314,"context_line":"\t// of the Verity Device Mapper target."},{"line_number":315,"context_line":"\thashDevicePath string"},{"line_number":316,"context_line":"\t// hashStart marks the starting block of Verity hash tree."},{"line_number":317,"context_line":"\thashStart int"},{"line_number":318,"context_line":"\t// rootHash stores a cryptographic hash of the top hash tree block."},{"line_number":319,"context_line":"\trootHash []byte"}],"source_content_type":"text/x-go","patch_set":8,"id":"fc05e79b_94df4d87","line":316,"range":{"start_line":316,"start_character":42,"end_line":316,"end_character":48},"in_reply_to":"ad9fe759_83e5669b","updated":"2021-09-08 10:24:31.000000000","message":"Not resolved.","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"f1b3570a31904818aa2d3a7d682b5ff203cb0168","unresolved":false,"context_lines":[{"line_number":313,"context_line":"\t// hashDevicePath is the filesystem path of hash device used as part"},{"line_number":314,"context_line":"\t// of the Verity Device Mapper target."},{"line_number":315,"context_line":"\thashDevicePath string"},{"line_number":316,"context_line":"\t// hashStart marks the starting block of Verity hash tree."},{"line_number":317,"context_line":"\thashStart int"},{"line_number":318,"context_line":"\t// rootHash stores a cryptographic hash of the top hash tree block."},{"line_number":319,"context_line":"\trootHash []byte"}],"source_content_type":"text/x-go","patch_set":8,"id":"5e1a5250_2aead495","line":316,"range":{"start_line":316,"start_character":42,"end_line":316,"end_character":48},"in_reply_to":"fc05e79b_94df4d87","updated":"2021-09-20 15:24:41.000000000","message":"Done","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ac796bd90ac82228711de268a06403b8ff8bdbe7","unresolved":true,"context_lines":[{"line_number":320,"context_line":"}"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"// newMappingTable returns a fully initialized verity mapping table."},{"line_number":323,"context_line":"// \u0027dp\u0027 and \u0027hp\u0027 are used as a data device path and a hash devide path,"},{"line_number":324,"context_line":"// respectively. \u0027hs\u0027 configures the Verity hash_start parameter, marking"},{"line_number":325,"context_line":"// the hash tree starting block."},{"line_number":326,"context_line":"func newMappingTable(sb *superblock, dp, hp string, hs int,"}],"source_content_type":"text/x-go","patch_set":8,"id":"a90e5c23_e9fbd045","line":323,"range":{"start_line":323,"start_character":4,"end_line":323,"end_character":6},"updated":"2021-08-25 11:53:32.000000000","message":"I think it\u0027s worth using longer variable names here for readability, then you can also skip this part of the comment.","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ac796bd90ac82228711de268a06403b8ff8bdbe7","unresolved":true,"context_lines":[{"line_number":320,"context_line":"}"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"// newMappingTable returns a fully initialized verity mapping table."},{"line_number":323,"context_line":"// \u0027dp\u0027 and \u0027hp\u0027 are used as a data device path and a hash devide path,"},{"line_number":324,"context_line":"// respectively. \u0027hs\u0027 configures the Verity hash_start parameter, marking"},{"line_number":325,"context_line":"// the hash tree starting block."},{"line_number":326,"context_line":"func newMappingTable(sb *superblock, dp, hp string, hs int,"}],"source_content_type":"text/x-go","patch_set":8,"id":"632d8893_2d282087","line":323,"range":{"start_line":323,"start_character":63,"end_line":323,"end_character":64},"updated":"2021-08-25 11:53:32.000000000","message":"typo","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"f1b3570a31904818aa2d3a7d682b5ff203cb0168","unresolved":false,"context_lines":[{"line_number":320,"context_line":"}"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"// newMappingTable returns a fully initialized verity mapping table."},{"line_number":323,"context_line":"// \u0027dp\u0027 and \u0027hp\u0027 are used as a data device path and a hash devide path,"},{"line_number":324,"context_line":"// respectively. \u0027hs\u0027 configures the Verity hash_start parameter, marking"},{"line_number":325,"context_line":"// the hash tree starting block."},{"line_number":326,"context_line":"func newMappingTable(sb *superblock, dp, hp string, hs int,"}],"source_content_type":"text/x-go","patch_set":8,"id":"c8f6cbac_3d690314","line":323,"range":{"start_line":323,"start_character":63,"end_line":323,"end_character":64},"in_reply_to":"2bce5978_404d23dd","updated":"2021-09-20 15:24:41.000000000","message":"Done","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"466a636b131dab56d2d9f56c2f9a18939b4210f0","unresolved":true,"context_lines":[{"line_number":320,"context_line":"}"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"// newMappingTable returns a fully initialized verity mapping table."},{"line_number":323,"context_line":"// \u0027dp\u0027 and \u0027hp\u0027 are used as a data device path and a hash devide path,"},{"line_number":324,"context_line":"// respectively. \u0027hs\u0027 configures the Verity hash_start parameter, marking"},{"line_number":325,"context_line":"// the hash tree starting block."},{"line_number":326,"context_line":"func newMappingTable(sb *superblock, dp, hp string, hs int,"}],"source_content_type":"text/x-go","patch_set":8,"id":"de0df0c8_75314153","line":323,"range":{"start_line":323,"start_character":4,"end_line":323,"end_character":6},"in_reply_to":"3f14a9db_cf2339df","updated":"2021-09-08 10:24:31.000000000","message":"Not resolved.","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"cd5f8108b8558104451207eeb8e0afbdeff636db","unresolved":false,"context_lines":[{"line_number":320,"context_line":"}"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"// newMappingTable returns a fully initialized verity mapping table."},{"line_number":323,"context_line":"// \u0027dp\u0027 and \u0027hp\u0027 are used as a data device path and a hash devide path,"},{"line_number":324,"context_line":"// respectively. \u0027hs\u0027 configures the Verity hash_start parameter, marking"},{"line_number":325,"context_line":"// the hash tree starting block."},{"line_number":326,"context_line":"func newMappingTable(sb *superblock, dp, hp string, hs int,"}],"source_content_type":"text/x-go","patch_set":8,"id":"95782f7c_486cbeaf","line":323,"range":{"start_line":323,"start_character":63,"end_line":323,"end_character":64},"in_reply_to":"632d8893_2d282087","updated":"2021-08-25 12:52:33.000000000","message":"Ack","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"466a636b131dab56d2d9f56c2f9a18939b4210f0","unresolved":true,"context_lines":[{"line_number":320,"context_line":"}"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"// newMappingTable returns a fully initialized verity mapping table."},{"line_number":323,"context_line":"// \u0027dp\u0027 and \u0027hp\u0027 are used as a data device path and a hash devide path,"},{"line_number":324,"context_line":"// respectively. \u0027hs\u0027 configures the Verity hash_start parameter, marking"},{"line_number":325,"context_line":"// the hash tree starting block."},{"line_number":326,"context_line":"func newMappingTable(sb *superblock, dp, hp string, hs int,"}],"source_content_type":"text/x-go","patch_set":8,"id":"2bce5978_404d23dd","line":323,"range":{"start_line":323,"start_character":63,"end_line":323,"end_character":64},"in_reply_to":"95782f7c_486cbeaf","updated":"2021-09-08 10:24:31.000000000","message":"Not resolved.","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"cd5f8108b8558104451207eeb8e0afbdeff636db","unresolved":false,"context_lines":[{"line_number":320,"context_line":"}"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"// newMappingTable returns a fully initialized verity mapping table."},{"line_number":323,"context_line":"// \u0027dp\u0027 and \u0027hp\u0027 are used as a data device path and a hash devide path,"},{"line_number":324,"context_line":"// respectively. \u0027hs\u0027 configures the Verity hash_start parameter, marking"},{"line_number":325,"context_line":"// the hash tree starting block."},{"line_number":326,"context_line":"func newMappingTable(sb *superblock, dp, hp string, hs int,"}],"source_content_type":"text/x-go","patch_set":8,"id":"3f14a9db_cf2339df","line":323,"range":{"start_line":323,"start_character":4,"end_line":323,"end_character":6},"in_reply_to":"a90e5c23_e9fbd045","updated":"2021-08-25 12:52:33.000000000","message":"Ack","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"f1b3570a31904818aa2d3a7d682b5ff203cb0168","unresolved":false,"context_lines":[{"line_number":320,"context_line":"}"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"// newMappingTable returns a fully initialized verity mapping table."},{"line_number":323,"context_line":"// \u0027dp\u0027 and \u0027hp\u0027 are used as a data device path and a hash devide path,"},{"line_number":324,"context_line":"// respectively. \u0027hs\u0027 configures the Verity hash_start parameter, marking"},{"line_number":325,"context_line":"// the hash tree starting block."},{"line_number":326,"context_line":"func newMappingTable(sb *superblock, dp, hp string, hs int,"}],"source_content_type":"text/x-go","patch_set":8,"id":"f2fa56b4_2b8af055","line":323,"range":{"start_line":323,"start_character":4,"end_line":323,"end_character":6},"in_reply_to":"de0df0c8_75314153","updated":"2021-09-20 15:24:41.000000000","message":"Done","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ac796bd90ac82228711de268a06403b8ff8bdbe7","unresolved":true,"context_lines":[{"line_number":323,"context_line":"// \u0027dp\u0027 and \u0027hp\u0027 are used as a data device path and a hash devide path,"},{"line_number":324,"context_line":"// respectively. \u0027hs\u0027 configures the Verity hash_start parameter, marking"},{"line_number":325,"context_line":"// the hash tree starting block."},{"line_number":326,"context_line":"func newMappingTable(sb *superblock, dp, hp string, hs int,"},{"line_number":327,"context_line":"\trh []byte) *MappingTable {"},{"line_number":328,"context_line":"\tt :\u003d MappingTable{"},{"line_number":329,"context_line":"\t\tsuperblock:     sb,"}],"source_content_type":"text/x-go","patch_set":8,"id":"963dca09_e463be33","line":326,"range":{"start_line":326,"start_character":5,"end_line":326,"end_character":20},"updated":"2021-08-25 11:53:32.000000000","message":"Do we actually need this function? It just populates a structure, and all these fields are already well documented there. Shouldn\u0027t consumers just build MappingTable themselves?","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"cd5f8108b8558104451207eeb8e0afbdeff636db","unresolved":false,"context_lines":[{"line_number":323,"context_line":"// \u0027dp\u0027 and \u0027hp\u0027 are used as a data device path and a hash devide path,"},{"line_number":324,"context_line":"// respectively. \u0027hs\u0027 configures the Verity hash_start parameter, marking"},{"line_number":325,"context_line":"// the hash tree starting block."},{"line_number":326,"context_line":"func newMappingTable(sb *superblock, dp, hp string, hs int,"},{"line_number":327,"context_line":"\trh []byte) *MappingTable {"},{"line_number":328,"context_line":"\tt :\u003d MappingTable{"},{"line_number":329,"context_line":"\t\tsuperblock:     sb,"}],"source_content_type":"text/x-go","patch_set":8,"id":"d68f3904_69fff60c","line":326,"range":{"start_line":326,"start_character":5,"end_line":326,"end_character":20},"in_reply_to":"963dca09_e463be33","updated":"2021-08-25 12:52:33.000000000","message":"Ack","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"f1b3570a31904818aa2d3a7d682b5ff203cb0168","unresolved":false,"context_lines":[{"line_number":323,"context_line":"// \u0027dp\u0027 and \u0027hp\u0027 are used as a data device path and a hash devide path,"},{"line_number":324,"context_line":"// respectively. \u0027hs\u0027 configures the Verity hash_start parameter, marking"},{"line_number":325,"context_line":"// the hash tree starting block."},{"line_number":326,"context_line":"func newMappingTable(sb *superblock, dp, hp string, hs int,"},{"line_number":327,"context_line":"\trh []byte) *MappingTable {"},{"line_number":328,"context_line":"\tt :\u003d MappingTable{"},{"line_number":329,"context_line":"\t\tsuperblock:     sb,"}],"source_content_type":"text/x-go","patch_set":8,"id":"3262f791_7621fe6f","line":326,"range":{"start_line":326,"start_character":5,"end_line":326,"end_character":20},"in_reply_to":"b4e4d54b_331f5a11","updated":"2021-09-20 15:24:41.000000000","message":"removed","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"466a636b131dab56d2d9f56c2f9a18939b4210f0","unresolved":true,"context_lines":[{"line_number":323,"context_line":"// \u0027dp\u0027 and \u0027hp\u0027 are used as a data device path and a hash devide path,"},{"line_number":324,"context_line":"// respectively. \u0027hs\u0027 configures the Verity hash_start parameter, marking"},{"line_number":325,"context_line":"// the hash tree starting block."},{"line_number":326,"context_line":"func newMappingTable(sb *superblock, dp, hp string, hs int,"},{"line_number":327,"context_line":"\trh []byte) *MappingTable {"},{"line_number":328,"context_line":"\tt :\u003d MappingTable{"},{"line_number":329,"context_line":"\t\tsuperblock:     sb,"}],"source_content_type":"text/x-go","patch_set":8,"id":"b4e4d54b_331f5a11","line":326,"range":{"start_line":326,"start_character":5,"end_line":326,"end_character":20},"in_reply_to":"d68f3904_69fff60c","updated":"2021-09-08 10:24:31.000000000","message":"Not resolved.","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ac796bd90ac82228711de268a06403b8ff8bdbe7","unresolved":true,"context_lines":[{"line_number":324,"context_line":"// respectively. \u0027hs\u0027 configures the Verity hash_start parameter, marking"},{"line_number":325,"context_line":"// the hash tree starting block."},{"line_number":326,"context_line":"func newMappingTable(sb *superblock, dp, hp string, hs int,"},{"line_number":327,"context_line":"\trh []byte) *MappingTable {"},{"line_number":328,"context_line":"\tt :\u003d MappingTable{"},{"line_number":329,"context_line":"\t\tsuperblock:     sb,"},{"line_number":330,"context_line":"\t\tdataDevicePath: dp,"}],"source_content_type":"text/x-go","patch_set":8,"id":"d00370ea_ad664c4e","line":327,"range":{"start_line":327,"start_character":1,"end_line":327,"end_character":27},"updated":"2021-08-25 11:53:32.000000000","message":"Don\u0027t line-wrap Go code like this.","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"f1b3570a31904818aa2d3a7d682b5ff203cb0168","unresolved":false,"context_lines":[{"line_number":324,"context_line":"// respectively. \u0027hs\u0027 configures the Verity hash_start parameter, marking"},{"line_number":325,"context_line":"// the hash tree starting block."},{"line_number":326,"context_line":"func newMappingTable(sb *superblock, dp, hp string, hs int,"},{"line_number":327,"context_line":"\trh []byte) *MappingTable {"},{"line_number":328,"context_line":"\tt :\u003d MappingTable{"},{"line_number":329,"context_line":"\t\tsuperblock:     sb,"},{"line_number":330,"context_line":"\t\tdataDevicePath: dp,"}],"source_content_type":"text/x-go","patch_set":8,"id":"c2665152_3a48863c","line":327,"range":{"start_line":327,"start_character":1,"end_line":327,"end_character":27},"in_reply_to":"4cb46e13_e03850e5","updated":"2021-09-20 15:24:41.000000000","message":"Done","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"466a636b131dab56d2d9f56c2f9a18939b4210f0","unresolved":true,"context_lines":[{"line_number":324,"context_line":"// respectively. \u0027hs\u0027 configures the Verity hash_start parameter, marking"},{"line_number":325,"context_line":"// the hash tree starting block."},{"line_number":326,"context_line":"func newMappingTable(sb *superblock, dp, hp string, hs int,"},{"line_number":327,"context_line":"\trh []byte) *MappingTable {"},{"line_number":328,"context_line":"\tt :\u003d MappingTable{"},{"line_number":329,"context_line":"\t\tsuperblock:     sb,"},{"line_number":330,"context_line":"\t\tdataDevicePath: dp,"}],"source_content_type":"text/x-go","patch_set":8,"id":"4cb46e13_e03850e5","line":327,"range":{"start_line":327,"start_character":1,"end_line":327,"end_character":27},"in_reply_to":"84d5d94e_ccbd9e7a","updated":"2021-09-08 10:24:31.000000000","message":"Not resolved.","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"cd5f8108b8558104451207eeb8e0afbdeff636db","unresolved":false,"context_lines":[{"line_number":324,"context_line":"// respectively. \u0027hs\u0027 configures the Verity hash_start parameter, marking"},{"line_number":325,"context_line":"// the hash tree starting block."},{"line_number":326,"context_line":"func newMappingTable(sb *superblock, dp, hp string, hs int,"},{"line_number":327,"context_line":"\trh []byte) *MappingTable {"},{"line_number":328,"context_line":"\tt :\u003d MappingTable{"},{"line_number":329,"context_line":"\t\tsuperblock:     sb,"},{"line_number":330,"context_line":"\t\tdataDevicePath: dp,"}],"source_content_type":"text/x-go","patch_set":8,"id":"84d5d94e_ccbd9e7a","line":327,"range":{"start_line":327,"start_character":1,"end_line":327,"end_character":27},"in_reply_to":"d00370ea_ad664c4e","updated":"2021-08-25 12:52:33.000000000","message":"Ack","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"13753dd630622af50a0160a5362ec9d2a5a7856d","unresolved":true,"context_lines":[{"line_number":355,"context_line":"// VerityParameters returns just the Verity target part of the mapping"},{"line_number":356,"context_line":"// table, represented as a string."},{"line_number":357,"context_line":"// BUG(mz): unescaped whitespace can appear in block device paths"},{"line_number":358,"context_line":"func (t *MappingTable) VerityParameters() string {"},{"line_number":359,"context_line":"\treturn strings.Join(t.VerityParameterList(), \" \")"},{"line_number":360,"context_line":"}"},{"line_number":361,"context_line":""}],"source_content_type":"text/x-go","patch_set":8,"id":"f0b148e3_9e377537","line":358,"updated":"2021-08-25 12:47:00.000000000","message":"I\u0027m in favor of removing this. We don\u0027t use it and it\u0027s not a correct implementation.","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ac796bd90ac82228711de268a06403b8ff8bdbe7","unresolved":true,"context_lines":[{"line_number":355,"context_line":"// VerityParameters returns just the Verity target part of the mapping"},{"line_number":356,"context_line":"// table, represented as a string."},{"line_number":357,"context_line":"// BUG(mz): unescaped whitespace can appear in block device paths"},{"line_number":358,"context_line":"func (t *MappingTable) VerityParameters() string {"},{"line_number":359,"context_line":"\treturn strings.Join(t.VerityParameterList(), \" \")"},{"line_number":360,"context_line":"}"},{"line_number":361,"context_line":""}],"source_content_type":"text/x-go","patch_set":8,"id":"e2bad139_be6af2c3","line":358,"range":{"start_line":358,"start_character":23,"end_line":358,"end_character":39},"updated":"2021-08-25 11:53:32.000000000","message":"Is this used anywhere?","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"cd5f8108b8558104451207eeb8e0afbdeff636db","unresolved":false,"context_lines":[{"line_number":355,"context_line":"// VerityParameters returns just the Verity target part of the mapping"},{"line_number":356,"context_line":"// table, represented as a string."},{"line_number":357,"context_line":"// BUG(mz): unescaped whitespace can appear in block device paths"},{"line_number":358,"context_line":"func (t *MappingTable) VerityParameters() string {"},{"line_number":359,"context_line":"\treturn strings.Join(t.VerityParameterList(), \" \")"},{"line_number":360,"context_line":"}"},{"line_number":361,"context_line":""}],"source_content_type":"text/x-go","patch_set":8,"id":"418469ab_cccda24c","line":358,"range":{"start_line":358,"start_character":23,"end_line":358,"end_character":39},"in_reply_to":"e2bad139_be6af2c3","updated":"2021-08-25 12:52:33.000000000","message":"Ack","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"c5dcdf63e8d11ea38c0f97a72d140367557fa580","unresolved":false,"context_lines":[{"line_number":355,"context_line":"// VerityParameters returns just the Verity target part of the mapping"},{"line_number":356,"context_line":"// table, represented as a string."},{"line_number":357,"context_line":"// BUG(mz): unescaped whitespace can appear in block device paths"},{"line_number":358,"context_line":"func (t *MappingTable) VerityParameters() string {"},{"line_number":359,"context_line":"\treturn strings.Join(t.VerityParameterList(), \" \")"},{"line_number":360,"context_line":"}"},{"line_number":361,"context_line":""}],"source_content_type":"text/x-go","patch_set":8,"id":"4c543167_5f6813c2","line":358,"in_reply_to":"f0b148e3_9e377537","updated":"2021-09-06 16:03:15.000000000","message":"Ack","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ac796bd90ac82228711de268a06403b8ff8bdbe7","unresolved":true,"context_lines":[{"line_number":390,"context_line":"// encoder transforms data blocks written into it to a verity hash"},{"line_number":391,"context_line":"// tree. It writes out the hash tree only after Close is called on it."},{"line_number":392,"context_line":"type encoder struct {"},{"line_number":393,"context_line":"\t// \u0027w\u0027 is the writer object Encoder will write to."},{"line_number":394,"context_line":"\tw io.Writer"},{"line_number":395,"context_line":"\t// if \u0027wsb\u0027 is true, a Verity superblock will be written to \u0027w\u0027."},{"line_number":396,"context_line":"\t// \u0027wsb\u0027 will also adjust the mapping table hash offset."}],"source_content_type":"text/x-go","patch_set":8,"id":"c0d8726d_3b910421","line":393,"range":{"start_line":393,"start_character":4,"end_line":393,"end_character":7},"updated":"2021-08-25 11:53:32.000000000","message":"godoc style mandates: `// w is the writer object [...]` (no single quotes, no prefix) wherever possible. Also elsewhere in this structure.\n\nhttps://github.com/golang/go/wiki/CodeReviewComments#comment-sentences","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"f1b3570a31904818aa2d3a7d682b5ff203cb0168","unresolved":false,"context_lines":[{"line_number":390,"context_line":"// encoder transforms data blocks written into it to a verity hash"},{"line_number":391,"context_line":"// tree. It writes out the hash tree only after Close is called on it."},{"line_number":392,"context_line":"type encoder struct {"},{"line_number":393,"context_line":"\t// \u0027w\u0027 is the writer object Encoder will write to."},{"line_number":394,"context_line":"\tw io.Writer"},{"line_number":395,"context_line":"\t// if \u0027wsb\u0027 is true, a Verity superblock will be written to \u0027w\u0027."},{"line_number":396,"context_line":"\t// \u0027wsb\u0027 will also adjust the mapping table hash offset."}],"source_content_type":"text/x-go","patch_set":8,"id":"59549cdc_1927d3f0","line":393,"range":{"start_line":393,"start_character":4,"end_line":393,"end_character":7},"in_reply_to":"46049bcc_cd5b2d7a","updated":"2021-09-20 15:24:41.000000000","message":"Done","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"466a636b131dab56d2d9f56c2f9a18939b4210f0","unresolved":true,"context_lines":[{"line_number":390,"context_line":"// encoder transforms data blocks written into it to a verity hash"},{"line_number":391,"context_line":"// tree. It writes out the hash tree only after Close is called on it."},{"line_number":392,"context_line":"type encoder struct {"},{"line_number":393,"context_line":"\t// \u0027w\u0027 is the writer object Encoder will write to."},{"line_number":394,"context_line":"\tw io.Writer"},{"line_number":395,"context_line":"\t// if \u0027wsb\u0027 is true, a Verity superblock will be written to \u0027w\u0027."},{"line_number":396,"context_line":"\t// \u0027wsb\u0027 will also adjust the mapping table hash offset."}],"source_content_type":"text/x-go","patch_set":8,"id":"46049bcc_cd5b2d7a","line":393,"range":{"start_line":393,"start_character":4,"end_line":393,"end_character":7},"in_reply_to":"ba3edca7_227b0e08","updated":"2021-09-08 10:24:31.000000000","message":"Not resolved.","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"cd5f8108b8558104451207eeb8e0afbdeff636db","unresolved":false,"context_lines":[{"line_number":390,"context_line":"// encoder transforms data blocks written into it to a verity hash"},{"line_number":391,"context_line":"// tree. It writes out the hash tree only after Close is called on it."},{"line_number":392,"context_line":"type encoder struct {"},{"line_number":393,"context_line":"\t// \u0027w\u0027 is the writer object Encoder will write to."},{"line_number":394,"context_line":"\tw io.Writer"},{"line_number":395,"context_line":"\t// if \u0027wsb\u0027 is true, a Verity superblock will be written to \u0027w\u0027."},{"line_number":396,"context_line":"\t// \u0027wsb\u0027 will also adjust the mapping table hash offset."}],"source_content_type":"text/x-go","patch_set":8,"id":"ba3edca7_227b0e08","line":393,"range":{"start_line":393,"start_character":4,"end_line":393,"end_character":7},"in_reply_to":"c0d8726d_3b910421","updated":"2021-08-25 12:52:33.000000000","message":"Ack","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ac796bd90ac82228711de268a06403b8ff8bdbe7","unresolved":true,"context_lines":[{"line_number":414,"context_line":"// be divisible by e.sb.hashBlockSize."},{"line_number":415,"context_line":"// e.rh is set on success."},{"line_number":416,"context_line":"// It returns an error, if encountered."},{"line_number":417,"context_line":"func (e *encoder) computeHashTree(b []byte) (*hashTree, error) {"},{"line_number":418,"context_line":"\t// Put \u0027b\u0027 at the bottom of the tree. Don\u0027t perform a deep copy."},{"line_number":419,"context_line":"\tht :\u003d hashTree{b}"},{"line_number":420,"context_line":""}],"source_content_type":"text/x-go","patch_set":8,"id":"271e9f01_2091beb7","line":417,"range":{"start_line":417,"start_character":34,"end_line":417,"end_character":42},"updated":"2021-08-25 11:53:32.000000000","message":"This argument is always e.lz.","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"cd5f8108b8558104451207eeb8e0afbdeff636db","unresolved":false,"context_lines":[{"line_number":414,"context_line":"// be divisible by e.sb.hashBlockSize."},{"line_number":415,"context_line":"// e.rh is set on success."},{"line_number":416,"context_line":"// It returns an error, if encountered."},{"line_number":417,"context_line":"func (e *encoder) computeHashTree(b []byte) (*hashTree, error) {"},{"line_number":418,"context_line":"\t// Put \u0027b\u0027 at the bottom of the tree. Don\u0027t perform a deep copy."},{"line_number":419,"context_line":"\tht :\u003d hashTree{b}"},{"line_number":420,"context_line":""}],"source_content_type":"text/x-go","patch_set":8,"id":"877272a5_84fa7dd1","line":417,"range":{"start_line":417,"start_character":34,"end_line":417,"end_character":42},"in_reply_to":"271e9f01_2091beb7","updated":"2021-08-25 12:52:33.000000000","message":"Ack","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"f1b3570a31904818aa2d3a7d682b5ff203cb0168","unresolved":false,"context_lines":[{"line_number":414,"context_line":"// be divisible by e.sb.hashBlockSize."},{"line_number":415,"context_line":"// e.rh is set on success."},{"line_number":416,"context_line":"// It returns an error, if encountered."},{"line_number":417,"context_line":"func (e *encoder) computeHashTree(b []byte) (*hashTree, error) {"},{"line_number":418,"context_line":"\t// Put \u0027b\u0027 at the bottom of the tree. Don\u0027t perform a deep copy."},{"line_number":419,"context_line":"\tht :\u003d hashTree{b}"},{"line_number":420,"context_line":""}],"source_content_type":"text/x-go","patch_set":8,"id":"c3eb152e_1f4121b8","line":417,"range":{"start_line":417,"start_character":34,"end_line":417,"end_character":42},"in_reply_to":"57f291d3_95fea439","updated":"2021-09-20 15:24:41.000000000","message":"Done","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"466a636b131dab56d2d9f56c2f9a18939b4210f0","unresolved":true,"context_lines":[{"line_number":414,"context_line":"// be divisible by e.sb.hashBlockSize."},{"line_number":415,"context_line":"// e.rh is set on success."},{"line_number":416,"context_line":"// It returns an error, if encountered."},{"line_number":417,"context_line":"func (e *encoder) computeHashTree(b []byte) (*hashTree, error) {"},{"line_number":418,"context_line":"\t// Put \u0027b\u0027 at the bottom of the tree. Don\u0027t perform a deep copy."},{"line_number":419,"context_line":"\tht :\u003d hashTree{b}"},{"line_number":420,"context_line":""}],"source_content_type":"text/x-go","patch_set":8,"id":"57f291d3_95fea439","line":417,"range":{"start_line":417,"start_character":34,"end_line":417,"end_character":42},"in_reply_to":"877272a5_84fa7dd1","updated":"2021-09-08 10:24:31.000000000","message":"Not resolved.","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ac796bd90ac82228711de268a06403b8ff8bdbe7","unresolved":true,"context_lines":[{"line_number":475,"context_line":"func NewEncoder(w io.Writer, wsb bool) (*encoder, error) {"},{"line_number":476,"context_line":"\tsb, err :\u003d newSuperblock()"},{"line_number":477,"context_line":"\tif err !\u003d nil {"},{"line_number":478,"context_line":"\t\treturn nil, fmt.Errorf(\"while building a verity encoder: %w\", err)"},{"line_number":479,"context_line":"\t}"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"\te :\u003d encoder{"}],"source_content_type":"text/x-go","patch_set":8,"id":"5687bb23_0f7899c7","line":478,"range":{"start_line":478,"start_character":26,"end_line":478,"end_character":57},"updated":"2021-08-25 11:53:32.000000000","message":"while building superblock\n\n(the caller already knows we\u0027re building an encoder)","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"466a636b131dab56d2d9f56c2f9a18939b4210f0","unresolved":true,"context_lines":[{"line_number":475,"context_line":"func NewEncoder(w io.Writer, wsb bool) (*encoder, error) {"},{"line_number":476,"context_line":"\tsb, err :\u003d newSuperblock()"},{"line_number":477,"context_line":"\tif err !\u003d nil {"},{"line_number":478,"context_line":"\t\treturn nil, fmt.Errorf(\"while building a verity encoder: %w\", err)"},{"line_number":479,"context_line":"\t}"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"\te :\u003d encoder{"}],"source_content_type":"text/x-go","patch_set":8,"id":"6eefa203_7c021b96","line":478,"range":{"start_line":478,"start_character":26,"end_line":478,"end_character":57},"in_reply_to":"4781e4b2_038107c3","updated":"2021-09-08 10:24:31.000000000","message":"Not resolved.","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"cd5f8108b8558104451207eeb8e0afbdeff636db","unresolved":false,"context_lines":[{"line_number":475,"context_line":"func NewEncoder(w io.Writer, wsb bool) (*encoder, error) {"},{"line_number":476,"context_line":"\tsb, err :\u003d newSuperblock()"},{"line_number":477,"context_line":"\tif err !\u003d nil {"},{"line_number":478,"context_line":"\t\treturn nil, fmt.Errorf(\"while building a verity encoder: %w\", err)"},{"line_number":479,"context_line":"\t}"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"\te :\u003d encoder{"}],"source_content_type":"text/x-go","patch_set":8,"id":"4781e4b2_038107c3","line":478,"range":{"start_line":478,"start_character":26,"end_line":478,"end_character":57},"in_reply_to":"5687bb23_0f7899c7","updated":"2021-08-25 12:52:33.000000000","message":"Ack","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"f1b3570a31904818aa2d3a7d682b5ff203cb0168","unresolved":false,"context_lines":[{"line_number":475,"context_line":"func NewEncoder(w io.Writer, wsb bool) (*encoder, error) {"},{"line_number":476,"context_line":"\tsb, err :\u003d newSuperblock()"},{"line_number":477,"context_line":"\tif err !\u003d nil {"},{"line_number":478,"context_line":"\t\treturn nil, fmt.Errorf(\"while building a verity encoder: %w\", err)"},{"line_number":479,"context_line":"\t}"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"\te :\u003d encoder{"}],"source_content_type":"text/x-go","patch_set":8,"id":"4fb134e0_d35143d1","line":478,"range":{"start_line":478,"start_character":26,"end_line":478,"end_character":57},"in_reply_to":"6eefa203_7c021b96","updated":"2021-09-20 15:24:41.000000000","message":"Done","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ac796bd90ac82228711de268a06403b8ff8bdbe7","unresolved":true,"context_lines":[{"line_number":507,"context_line":"// is written, if e.wsb is true. No data, nor the superblock is written if"},{"line_number":508,"context_line":"// the encoder is empty."},{"line_number":509,"context_line":"// It returns an error, if one was encountered."},{"line_number":510,"context_line":"func (e *encoder) Close() error {"},{"line_number":511,"context_line":"\t// Process all buffered data, including data blocks that may not form"},{"line_number":512,"context_line":"\t// a complete hash block."},{"line_number":513,"context_line":"\tdcnt, err :\u003d e.processDataBuffer(true)"}],"source_content_type":"text/x-go","patch_set":8,"id":"23363548_d5f0b9d4","line":510,"range":{"start_line":510,"start_character":18,"end_line":510,"end_character":23},"updated":"2021-08-25 11:53:32.000000000","message":"Should we guard against Close() being called twice, or Close() not being called before MappingTable() is called?","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"cd5f8108b8558104451207eeb8e0afbdeff636db","unresolved":false,"context_lines":[{"line_number":507,"context_line":"// is written, if e.wsb is true. No data, nor the superblock is written if"},{"line_number":508,"context_line":"// the encoder is empty."},{"line_number":509,"context_line":"// It returns an error, if one was encountered."},{"line_number":510,"context_line":"func (e *encoder) Close() error {"},{"line_number":511,"context_line":"\t// Process all buffered data, including data blocks that may not form"},{"line_number":512,"context_line":"\t// a complete hash block."},{"line_number":513,"context_line":"\tdcnt, err :\u003d e.processDataBuffer(true)"}],"source_content_type":"text/x-go","patch_set":8,"id":"4128967d_fbbef4b9","line":510,"range":{"start_line":510,"start_character":18,"end_line":510,"end_character":23},"in_reply_to":"23363548_d5f0b9d4","updated":"2021-08-25 12:52:33.000000000","message":"Ack","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"466a636b131dab56d2d9f56c2f9a18939b4210f0","unresolved":true,"context_lines":[{"line_number":507,"context_line":"// is written, if e.wsb is true. No data, nor the superblock is written if"},{"line_number":508,"context_line":"// the encoder is empty."},{"line_number":509,"context_line":"// It returns an error, if one was encountered."},{"line_number":510,"context_line":"func (e *encoder) Close() error {"},{"line_number":511,"context_line":"\t// Process all buffered data, including data blocks that may not form"},{"line_number":512,"context_line":"\t// a complete hash block."},{"line_number":513,"context_line":"\tdcnt, err :\u003d e.processDataBuffer(true)"}],"source_content_type":"text/x-go","patch_set":8,"id":"573baf57_e6f591da","line":510,"range":{"start_line":510,"start_character":18,"end_line":510,"end_character":23},"in_reply_to":"4128967d_fbbef4b9","updated":"2021-09-08 10:24:31.000000000","message":"Not resolved.","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"f1b3570a31904818aa2d3a7d682b5ff203cb0168","unresolved":false,"context_lines":[{"line_number":507,"context_line":"// is written, if e.wsb is true. No data, nor the superblock is written if"},{"line_number":508,"context_line":"// the encoder is empty."},{"line_number":509,"context_line":"// It returns an error, if one was encountered."},{"line_number":510,"context_line":"func (e *encoder) Close() error {"},{"line_number":511,"context_line":"\t// Process all buffered data, including data blocks that may not form"},{"line_number":512,"context_line":"\t// a complete hash block."},{"line_number":513,"context_line":"\tdcnt, err :\u003d e.processDataBuffer(true)"}],"source_content_type":"text/x-go","patch_set":8,"id":"b4135efe_14f83873","line":510,"range":{"start_line":510,"start_character":18,"end_line":510,"end_character":23},"in_reply_to":"573baf57_e6f591da","updated":"2021-09-20 15:24:41.000000000","message":"I\u0027ve made Close() reset the encoder to its original state. Any subsequent call to Close() will do nothing and yield nil.\n\nMappingTable() will return an error if:\na) it\u0027s called on an empty encoder\nb) the encoder isn\u0027t empty and wasn\u0027t closed","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ac796bd90ac82228711de268a06403b8ff8bdbe7","unresolved":true,"context_lines":[{"line_number":554,"context_line":"\t\t// to 1 instead of 0."},{"line_number":555,"context_line":"\t\ths \u003d 1"},{"line_number":556,"context_line":"\t}"},{"line_number":557,"context_line":"\treturn newMappingTable(e.sb, dp, hp, hs, e.rh)"},{"line_number":558,"context_line":"}"}],"source_content_type":"text/x-go","patch_set":8,"id":"893d7122_6efbe0a2","line":557,"range":{"start_line":557,"start_character":8,"end_line":557,"end_character":47},"updated":"2021-08-25 11:53:32.000000000","message":"That\u0027s not very readable.\n\nProbably removing newMappingTable and explicitly building a MappingTable struct here will help, though.","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"cd5f8108b8558104451207eeb8e0afbdeff636db","unresolved":false,"context_lines":[{"line_number":554,"context_line":"\t\t// to 1 instead of 0."},{"line_number":555,"context_line":"\t\ths \u003d 1"},{"line_number":556,"context_line":"\t}"},{"line_number":557,"context_line":"\treturn newMappingTable(e.sb, dp, hp, hs, e.rh)"},{"line_number":558,"context_line":"}"}],"source_content_type":"text/x-go","patch_set":8,"id":"d5835d0f_6374d609","line":557,"range":{"start_line":557,"start_character":8,"end_line":557,"end_character":47},"in_reply_to":"893d7122_6efbe0a2","updated":"2021-08-25 12:52:33.000000000","message":"Ack","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"f1b3570a31904818aa2d3a7d682b5ff203cb0168","unresolved":false,"context_lines":[{"line_number":554,"context_line":"\t\t// to 1 instead of 0."},{"line_number":555,"context_line":"\t\ths \u003d 1"},{"line_number":556,"context_line":"\t}"},{"line_number":557,"context_line":"\treturn newMappingTable(e.sb, dp, hp, hs, e.rh)"},{"line_number":558,"context_line":"}"}],"source_content_type":"text/x-go","patch_set":8,"id":"28b49161_9133a2ec","line":557,"range":{"start_line":557,"start_character":8,"end_line":557,"end_character":47},"in_reply_to":"a77cb469_78cd0c29","updated":"2021-09-20 15:24:41.000000000","message":"I\u0027ve removed newMappingTable.","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"466a636b131dab56d2d9f56c2f9a18939b4210f0","unresolved":true,"context_lines":[{"line_number":554,"context_line":"\t\t// to 1 instead of 0."},{"line_number":555,"context_line":"\t\ths \u003d 1"},{"line_number":556,"context_line":"\t}"},{"line_number":557,"context_line":"\treturn newMappingTable(e.sb, dp, hp, hs, e.rh)"},{"line_number":558,"context_line":"}"}],"source_content_type":"text/x-go","patch_set":8,"id":"a77cb469_78cd0c29","line":557,"range":{"start_line":557,"start_character":8,"end_line":557,"end_character":47},"in_reply_to":"d5835d0f_6374d609","updated":"2021-09-08 10:24:31.000000000","message":"Not resolved.","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"}],"metropolis/pkg/verity/encoder_test.go":[{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ac796bd90ac82228711de268a06403b8ff8bdbe7","unresolved":true,"context_lines":[{"line_number":53,"context_line":"// at hashDevPath. Returns a dm.Target configuring a resulting Verity"},{"line_number":54,"context_line":"// device, and a buffer containing random data written the data device."},{"line_number":55,"context_line":"func fillVerityRamdisks(t *testing.T, dataDevPath, hashDevPath string) (*dm.Target, bytes.Buffer) {"},{"line_number":56,"context_line":"\t// Open the data device for writing."},{"line_number":57,"context_line":"\tdfd, err :\u003d os.OpenFile(dataDevPath, os.O_WRONLY, accessMode)"},{"line_number":58,"context_line":"\trequire.NoError(t, err)"},{"line_number":59,"context_line":"\t// Open the hash device for writing."}],"source_content_type":"text/x-go","patch_set":8,"id":"4336a4fc_82f5a9c0","line":56,"updated":"2021-08-25 11:53:32.000000000","message":"I\u0027m not sure how `require` works, but you probably want a `t.Helper()` here (so that any test failures thrown show up within the context of a TestXXX function, not in the middle of this helper function.\n\n(also in other helper functions)","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"cd5f8108b8558104451207eeb8e0afbdeff636db","unresolved":false,"context_lines":[{"line_number":53,"context_line":"// at hashDevPath. Returns a dm.Target configuring a resulting Verity"},{"line_number":54,"context_line":"// device, and a buffer containing random data written the data device."},{"line_number":55,"context_line":"func fillVerityRamdisks(t *testing.T, dataDevPath, hashDevPath string) (*dm.Target, bytes.Buffer) {"},{"line_number":56,"context_line":"\t// Open the data device for writing."},{"line_number":57,"context_line":"\tdfd, err :\u003d os.OpenFile(dataDevPath, os.O_WRONLY, accessMode)"},{"line_number":58,"context_line":"\trequire.NoError(t, err)"},{"line_number":59,"context_line":"\t// Open the hash device for writing."}],"source_content_type":"text/x-go","patch_set":8,"id":"89c12bbc_bf0a6c8e","line":56,"in_reply_to":"4336a4fc_82f5a9c0","updated":"2021-08-25 12:52:33.000000000","message":"Ack","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"466a636b131dab56d2d9f56c2f9a18939b4210f0","unresolved":true,"context_lines":[{"line_number":53,"context_line":"// at hashDevPath. Returns a dm.Target configuring a resulting Verity"},{"line_number":54,"context_line":"// device, and a buffer containing random data written the data device."},{"line_number":55,"context_line":"func fillVerityRamdisks(t *testing.T, dataDevPath, hashDevPath string) (*dm.Target, bytes.Buffer) {"},{"line_number":56,"context_line":"\t// Open the data device for writing."},{"line_number":57,"context_line":"\tdfd, err :\u003d os.OpenFile(dataDevPath, os.O_WRONLY, accessMode)"},{"line_number":58,"context_line":"\trequire.NoError(t, err)"},{"line_number":59,"context_line":"\t// Open the hash device for writing."}],"source_content_type":"text/x-go","patch_set":8,"id":"d1d5040c_c1f987c8","line":56,"in_reply_to":"89c12bbc_bf0a6c8e","updated":"2021-09-08 10:24:31.000000000","message":"Not resolved.","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"f1b3570a31904818aa2d3a7d682b5ff203cb0168","unresolved":false,"context_lines":[{"line_number":53,"context_line":"// at hashDevPath. Returns a dm.Target configuring a resulting Verity"},{"line_number":54,"context_line":"// device, and a buffer containing random data written the data device."},{"line_number":55,"context_line":"func fillVerityRamdisks(t *testing.T, dataDevPath, hashDevPath string) (*dm.Target, bytes.Buffer) {"},{"line_number":56,"context_line":"\t// Open the data device for writing."},{"line_number":57,"context_line":"\tdfd, err :\u003d os.OpenFile(dataDevPath, os.O_WRONLY, accessMode)"},{"line_number":58,"context_line":"\trequire.NoError(t, err)"},{"line_number":59,"context_line":"\t// Open the hash device for writing."}],"source_content_type":"text/x-go","patch_set":8,"id":"50103c79_c7d97e11","line":56,"in_reply_to":"d1d5040c_c1f987c8","updated":"2021-09-20 15:24:41.000000000","message":"I\u0027ve attached a sample require.NoError() output in an earlier reply to another comment. I think it\u0027s rather readable. I\u0027ll remember to use t.Helper() while writing non-framework test code.","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ac796bd90ac82228711de268a06403b8ff8bdbe7","unresolved":true,"context_lines":[{"line_number":55,"context_line":"func fillVerityRamdisks(t *testing.T, dataDevPath, hashDevPath string) (*dm.Target, bytes.Buffer) {"},{"line_number":56,"context_line":"\t// Open the data device for writing."},{"line_number":57,"context_line":"\tdfd, err :\u003d os.OpenFile(dataDevPath, os.O_WRONLY, accessMode)"},{"line_number":58,"context_line":"\trequire.NoError(t, err)"},{"line_number":59,"context_line":"\t// Open the hash device for writing."},{"line_number":60,"context_line":"\thfd, err :\u003d os.OpenFile(hashDevPath, os.O_WRONLY, accessMode)"},{"line_number":61,"context_line":"\trequire.NoError(t, err)"}],"source_content_type":"text/x-go","patch_set":8,"id":"181b60f0_0321317f","line":58,"range":{"start_line":58,"start_character":9,"end_line":58,"end_character":16},"updated":"2021-08-25 11:53:32.000000000","message":"How do these look like when the assertion fails? Is any sensible context attached? Or is it just a generic \u0027assertion failed at encoder_test.go line 58`?\n\nI\u0027m generally wary of these testing/assertion libraries, as per https://golang.org/doc/faq#testing_framework .","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"cd5f8108b8558104451207eeb8e0afbdeff636db","unresolved":true,"context_lines":[{"line_number":55,"context_line":"func fillVerityRamdisks(t *testing.T, dataDevPath, hashDevPath string) (*dm.Target, bytes.Buffer) {"},{"line_number":56,"context_line":"\t// Open the data device for writing."},{"line_number":57,"context_line":"\tdfd, err :\u003d os.OpenFile(dataDevPath, os.O_WRONLY, accessMode)"},{"line_number":58,"context_line":"\trequire.NoError(t, err)"},{"line_number":59,"context_line":"\t// Open the hash device for writing."},{"line_number":60,"context_line":"\thfd, err :\u003d os.OpenFile(hashDevPath, os.O_WRONLY, accessMode)"},{"line_number":61,"context_line":"\trequire.NoError(t, err)"}],"source_content_type":"text/x-go","patch_set":8,"id":"8831640a_2882d658","line":58,"range":{"start_line":58,"start_character":9,"end_line":58,"end_character":16},"in_reply_to":"181b60f0_0321317f","updated":"2021-08-25 12:52:33.000000000","message":"I\u0027ll check","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"466a636b131dab56d2d9f56c2f9a18939b4210f0","unresolved":false,"context_lines":[{"line_number":55,"context_line":"func fillVerityRamdisks(t *testing.T, dataDevPath, hashDevPath string) (*dm.Target, bytes.Buffer) {"},{"line_number":56,"context_line":"\t// Open the data device for writing."},{"line_number":57,"context_line":"\tdfd, err :\u003d os.OpenFile(dataDevPath, os.O_WRONLY, accessMode)"},{"line_number":58,"context_line":"\trequire.NoError(t, err)"},{"line_number":59,"context_line":"\t// Open the hash device for writing."},{"line_number":60,"context_line":"\thfd, err :\u003d os.OpenFile(hashDevPath, os.O_WRONLY, accessMode)"},{"line_number":61,"context_line":"\trequire.NoError(t, err)"}],"source_content_type":"text/x-go","patch_set":8,"id":"388d8a0b_0571b51c","line":58,"range":{"start_line":58,"start_character":9,"end_line":58,"end_character":16},"in_reply_to":"6792ff41_452d60ba","updated":"2021-09-08 10:24:31.000000000","message":"Okay.","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"c5dcdf63e8d11ea38c0f97a72d140367557fa580","unresolved":true,"context_lines":[{"line_number":55,"context_line":"func fillVerityRamdisks(t *testing.T, dataDevPath, hashDevPath string) (*dm.Target, bytes.Buffer) {"},{"line_number":56,"context_line":"\t// Open the data device for writing."},{"line_number":57,"context_line":"\tdfd, err :\u003d os.OpenFile(dataDevPath, os.O_WRONLY, accessMode)"},{"line_number":58,"context_line":"\trequire.NoError(t, err)"},{"line_number":59,"context_line":"\t// Open the hash device for writing."},{"line_number":60,"context_line":"\thfd, err :\u003d os.OpenFile(hashDevPath, os.O_WRONLY, accessMode)"},{"line_number":61,"context_line":"\trequire.NoError(t, err)"}],"source_content_type":"text/x-go","patch_set":8,"id":"6792ff41_452d60ba","line":58,"range":{"start_line":58,"start_character":9,"end_line":58,"end_character":16},"in_reply_to":"8831640a_2882d658","updated":"2021-09-06 16:03:15.000000000","message":"It looks like this:\n\u003d\u003d\u003d RUN   TestMakeAndRead\n    TestMakeAndRead: encoder_test.go:58: \n                Error Trace:    encoder_test.go:58\n                                                        encoder_test.go:160\n                Error:          Received unexpected error:\n                                err\n                Test:           TestMakeAndRead\n                Messages:       while opening the data device at /dev/ram1\n\nI\u0027ve added a comment string to each NoError() call. Regarding testing frameworks, I\u0027d like to leave it as it is for now and refactor the whole codebase if we all agree to do so on a weekly (I\u0027ve added this topic to the agenda).","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ac796bd90ac82228711de268a06403b8ff8bdbe7","unresolved":false,"context_lines":[{"line_number":60,"context_line":"\thfd, err :\u003d os.OpenFile(hashDevPath, os.O_WRONLY, accessMode)"},{"line_number":61,"context_line":"\trequire.NoError(t, err)"},{"line_number":62,"context_line":"\t// Open urandom to act as a source of test data."},{"line_number":63,"context_line":"\trfd, err :\u003d os.Open(\"/dev/urandom\")"},{"line_number":64,"context_line":"\trequire.NoError(t, err)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"\t// Create a Verity encoder, backed with hfd. Configure it to write the"}],"source_content_type":"text/x-go","patch_set":8,"id":"cf162e12_9bd02a0e","line":63,"range":{"start_line":63,"start_character":1,"end_line":63,"end_character":36},"updated":"2021-08-25 11:53:32.000000000","message":"Ideally, instead of randomness here (as in all tests) you would use something like a de Bruijn sequence to get some guaranteed non-repeating n-byte pattern with enough entropy to make sure things are well exercised. Randomness in tests isn\u0027t great.\n\nBut this is good enough for now.","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"cd5f8108b8558104451207eeb8e0afbdeff636db","unresolved":false,"context_lines":[{"line_number":60,"context_line":"\thfd, err :\u003d os.OpenFile(hashDevPath, os.O_WRONLY, accessMode)"},{"line_number":61,"context_line":"\trequire.NoError(t, err)"},{"line_number":62,"context_line":"\t// Open urandom to act as a source of test data."},{"line_number":63,"context_line":"\trfd, err :\u003d os.Open(\"/dev/urandom\")"},{"line_number":64,"context_line":"\trequire.NoError(t, err)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"\t// Create a Verity encoder, backed with hfd. Configure it to write the"}],"source_content_type":"text/x-go","patch_set":8,"id":"18605cee_03a078a2","line":63,"range":{"start_line":63,"start_character":1,"end_line":63,"end_character":36},"in_reply_to":"cf162e12_9bd02a0e","updated":"2021-08-25 12:52:33.000000000","message":"Yeah, I forgot that was a concern.","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"13753dd630622af50a0160a5362ec9d2a5a7856d","unresolved":true,"context_lines":[{"line_number":72,"context_line":"\t// and into the Verity encoder, which in turn will write a resulting hash"},{"line_number":73,"context_line":"\t// tree to hfd on Close()."},{"line_number":74,"context_line":"\tvar testData bytes.Buffer"},{"line_number":75,"context_line":"\ttdw :\u003d io.MultiWriter(dfd, verityEnc, bufio.NewWriter(\u0026testData))"},{"line_number":76,"context_line":"\trequire.NoError(t, err)"},{"line_number":77,"context_line":"\t_, err \u003d io.CopyN(tdw, rfd, testDataSize)"},{"line_number":78,"context_line":"\trequire.NoError(t, err)"}],"source_content_type":"text/x-go","patch_set":8,"id":"6f1590f0_ac305b1f","line":75,"range":{"start_line":75,"start_character":39,"end_line":75,"end_character":54},"updated":"2021-08-25 12:47:00.000000000","message":"Any reason we\u0027re wrapping an in-memory buffer with another buffer? At first glance this makes things slower, not faster.","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"c5dcdf63e8d11ea38c0f97a72d140367557fa580","unresolved":false,"context_lines":[{"line_number":72,"context_line":"\t// and into the Verity encoder, which in turn will write a resulting hash"},{"line_number":73,"context_line":"\t// tree to hfd on Close()."},{"line_number":74,"context_line":"\tvar testData bytes.Buffer"},{"line_number":75,"context_line":"\ttdw :\u003d io.MultiWriter(dfd, verityEnc, bufio.NewWriter(\u0026testData))"},{"line_number":76,"context_line":"\trequire.NoError(t, err)"},{"line_number":77,"context_line":"\t_, err \u003d io.CopyN(tdw, rfd, testDataSize)"},{"line_number":78,"context_line":"\trequire.NoError(t, err)"}],"source_content_type":"text/x-go","patch_set":8,"id":"34355b72_e03c154e","line":75,"range":{"start_line":75,"start_character":39,"end_line":75,"end_character":54},"in_reply_to":"6f1590f0_ac305b1f","updated":"2021-09-06 16:03:15.000000000","message":"Whoops. I didn\u0027t notice bytes.Buffer implements io.Writer.","commit_id":"fd961ae3d46034983181509e5ef37992dbff229d"}]}
