Hi Nikolaus First, thank you for the great software.
I have a question about the file truncate. Please help me! The question is that when I set the max-obj-size to 2000000(2G), then put a 2.5G file(>max-obj-size) from win7 by samba, the S3QL will put a file that size is 0.5G and content is zero to swift except the actual file data. PS: I can't find similar questions in the issue list and the list at https://groups.google.com/d/forum/s3ql. My environment: openstack swift2.5 + s3ql2.17.1 Test steps: 1.I set the max-obj-size to 2000000.(2G),then mount the container. 2. Put(copy&paste) a file that size is 2.5G from win7 by samba. Actual result: 1. S3ql will put a file that size is 0.5G and content is zero to swift. 2. S3ql will put a file that size is 2G and content is actual file content to swift. 3. S3ql will delete the file that size is 0.5G and content is zero from swift. 4. S3ql will put a file that size is 0.5G and content is actual file content to swift. Expected result: 1. S3ql will put a file that size is 2G and content is actual file content to swift. 2. S3ql will put a file that size is 0.5G and content is actual file content to swift. ※About the test step 2, I also test these ways below. " Put a file that size is 2.5G by 'mv'/'cp'command in linux(centos7.2), " Put(copy&paste) a file that size is 2.5G from another linux by samba. " Create a file that size is 2.5G in the samba folder from win7. ==> There is't has the file that size is 0.5G and content is zero in these ways! So,I think this problem is only happen in the way that copy&paste a file that size is 2.5G from win7 by samba. I study the S3QL's source and log files. The reason about this problem is that When put the 2.5G file, S3QL will truncate a file that size is 0.5G and content is zero, and set dirty flag to True(This process is in the s3ql.block_cache.truncate() function). Then in the CommitThread, the condition that "not el.dirty or el in self.block_cache.in_transit:" will be false, so self.block_cache.upload(el) will be called, the file that size is 0.5G and content is zero will be put to swift. when all the data are transferred over, S3QL will create a new object that has actural data,but object address is same with the first file that content is zero. so S3QL will delete the first file that is old object. /*******************************************************************/ I want to resolve this problem by the way below, please help me to confirm that is it OK? it will cause other problems or not? class CacheEntry(object): ..... - def truncate(self, size=None): + def truncate(self, size=None, dirty_flag=True): - self.dirty = True + self.dirty = dirty_flag self.fh.truncate(size) ..... class Operations(llfuse.Operations): ..... def setattr(self, id_, attr, fields, fh, ctx): ..... try: with self.cache.get(id_, last_block) as fh: - fh.truncate(cutoff) + fh.truncate(cutoff,False) except NoSuchObject as exc: ..... /*******************************************************************/ Please refer to the log below: ※1 -->When put the file, the fields.update_size value is 1 in the s3ql.fs. setattr() function. ※2 -->Then it will goto s3ql.block_cache._get_entry() function with blockno is 1 to create the new block(s3ql_data_1). ※3 -->Then it will goto s3ql.block_cache.truncate() function with blockno is 1,but at this time the block don't have data, the truncate() function will create a file that content is zero. ※4 -->Then the block(s3ql_data_1) will be upload and put to swift. ※5 -->Create the new block(s3ql_data_2) that blockno is 0. ※6 -->Create the new block(s3ql_data_3) that blockno is 1. ※7 -->Put the block(s3ql_data_2) that blockno is 0 to swift. ※8 -->Delete the s3ql_data_1. ※9 -->Put the block(s3ql_data_3) that blockno is 1 to swift. 2016-10-13 09:36:07.295 464:fuse-worker-20 s3ql.fs.create: started with id_p=1, b'HD.Club-4K001-100mbps.mp4' 2016-10-13 09:36:07.313 464:fuse-worker-22 s3ql.fs.getattr: started with 1 2016-10-13 09:36:07.314 464:fuse-worker-21 s3ql.fs.getxattr: started with 4, b'system.posix_acl_access' 2016-10-13 09:36:07.314 464:fuse-worker-23 s3ql.fs.getxattr: started with 4, b'system.posix_acl_access' 2016-10-13 09:36:07.314 464:fuse-worker-24 s3ql.fs.setattr: ######lijingjie truncate attr.st_size 0 2016-10-13 09:36:07.314 464:fuse-worker-24 s3ql.fs.setattr: ######lijingjie truncate self.max_obj_size 2048000000 2016-10-13 09:36:07.314 464:fuse-worker-24 s3ql.fs.setattr: ######lijingjie truncate fields.update_size 0 2016-10-13 09:36:07.314 464:fuse-worker-25 s3ql.fs.removexattr: started with 4, b'security.ima' 2016-10-13 09:36:07.315 464:fuse-worker-26 s3ql.fs.getxattr: started with 4, b'system.posix_acl_access' 2016-10-13 09:36:07.315 464:fuse-worker-27 s3ql.fs.getxattr: started with 4, b'system.posix_acl_access' 2016-10-13 09:36:07.315 464:fuse-worker-29 s3ql.fs.getxattr: started with 1, b'system.posix_acl_access' 2016-10-13 09:36:07.315 464:fuse-worker-28 s3ql.fs.getxattr: started with 1, b'system.posix_acl_default' 2016-10-13 09:36:07.527 464:fuse-worker-30 s3ql.fs.getxattr: started with 1, b'system.posix_acl_access' 2016-10-13 09:36:07.527 464:fuse-worker-1 s3ql.fs.getxattr: started with 1, b'system.posix_acl_default' 2016-10-13 09:36:07.527 464:fuse-worker-2 s3ql.fs.opendir: started with 1 2016-10-13 09:36:07.528 464:fuse-worker-3 s3ql.fs.getxattr: started with 1, b'system.posix_acl_access' 2016-10-13 09:36:07.528 464:fuse-worker-4 s3ql.fs.getxattr: started with 1, b'system.posix_acl_default' 2016-10-13 09:36:07.529 464:fuse-worker-6 s3ql.fs.releasedir: started with 1 2016-10-13 09:36:07.532 464:fuse-worker-5 s3ql.fs.statfs: started 2016-10-13 09:36:07.533 464:fuse-worker-7 s3ql.fs.setattr: ######lijingjie truncate attr.st_size 2711882958 2016-10-13 09:36:07.534 464:fuse-worker-7 s3ql.fs.setattr: ######lijingjie truncate self.max_obj_size 2048000000 ※1 2016-10-13 09:36:07.534 464:fuse-worker-7 s3ql.fs.setattr: ######lijingjie truncate fields.update_size 1 2016-10-13 09:36:07.534 464:fuse-worker-7 s3ql.fs.setattr: ######lijingjie truncate last_block 1 2016-10-13 09:36:07.534 464:fuse-worker-7 s3ql.block_cache.remove: started with 4, 2, 0 2016-10-13 09:36:07.535 464:fuse-worker-7 s3ql.block_cache.remove: finished ※2 2016-10-13 09:36:07.535 464:fuse-worker-7 s3ql.block_cache._get_entry: started with 4, 1 ※2 2016-10-13 09:36:07.535 464:fuse-worker-7 s3ql.block_cache._get_entry: creating new block 2016-10-13 09:36:07.535 464:fuse-worker-7 s3ql.fs.setattr: ######lijingjie truncate size 663882958 ※3 2016-10-13 09:36:07.535 464:fuse-worker-7 s3ql.block_cache.truncate: ######lijingjie truncate object size 663882958 2016-10-13 09:36:07.535 464:fuse-worker-8 s3ql.fs.removexattr: started with 4, b'security.ima' 2016-10-13 09:36:07.535 464:fuse-worker-9 s3ql.fs.setattr: ######lijingjie truncate attr.st_size 0 2016-10-13 09:36:07.536 464:fuse-worker-9 s3ql.fs.setattr: ######lijingjie truncate self.max_obj_size 2048000000 2016-10-13 09:36:07.536 464:fuse-worker-9 s3ql.fs.setattr: ######lijingjie truncate fields.update_size 0 2016-10-13 09:36:07.536 464:fuse-worker-10 s3ql.fs.removexattr: started with 4, b'security.ima' 2016-10-13 09:36:08.018 464:fuse-worker-11 s3ql.fs.getxattr: started with 4, b'system.posix_acl_access' ........ 2016-10-13 09:36:23.396 464:CommitThread s3ql.block_cache.upload: PSDCD DEBUG md5:(4ea955da0123c7fe5d6e026cf3316d9f): hash:(681635ef6840209dba199deb3ccaabc8) ※4 2016-10-13 09:36:23.397 464:CommitThread s3ql.block_cache.upload: upload(<Dirty CacheEntry, inode=4, blockno=1>): created new object 1 ※4 2016-10-13 09:36:23.398 464:CommitThread s3ql.block_cache.upload: upload(<Dirty CacheEntry, inode=4, blockno=1>): created new block 1 ※4 2016-10-13 09:36:23.398 464:CommitThread s3ql.block_cache.upload: upload(<Dirty CacheEntry, inode=4, blockno=1>): adding to upload queue ※4 2016-10-13 09:36:23.398 464:CommitThread s3ql.block_cache.put: got reader, enqueueing (<s3ql.block_cache.CacheEntry object at 0x7f13441ae118>, 1, '4ea955da0123c7fe5d6e026cf3316d9f') 2016-10-13 09:36:23.398 464:CommitThread s3ql.block_cache.upload: upload(<Dirty CacheEntry, inode=4, blockno=1>): no old block, returning 2016-10-13 09:36:23.399 464:Thread-8 s3ql.backends.swift.open_write: started with s3ql_data_1 ........ 2016-10-13 09:36:34.868 464:Thread-8 s3ql.backends.s3c.close: started with s3ql_data_1 ※4 2016-10-13 09:36:34.868 464:Thread-8 s3ql.backends.swift._do_request: started with 'PUT', '/s3ql_data_1', None, None, CaseInsensitiveDict({'X-Object-meta-md5': 'fn1+kHftkhNGGzPtpikInw==', 'X-Object-meta-format': 'raw2', 'X-Object-meta-001': "'data': b'eyAgfQ==',", 'Content-Type': 'application/octet-stream', 'X-Object-meta-000': "'compression': 'None',", 'X-Object-meta-003': "'format_version': 2,", 'X-Object-meta-002': "'encryption': 'None',"}), <_io.FileIO name=14 mode='rb+'> ※4 2016-10-13 09:36:34.869 464:Thread-8 s3ql.backends.swift._do_request: _do_request(): start with parameters ('PUT', '/s3ql_data_1', None, None, CaseInsensitiveDict({'X-Object-meta-md5': 'fn1+kHftkhNGGzPtpikInw==', 'X-Object-meta-format': 'raw2', 'X-Object-meta-001': "'data': b'eyAgfQ==',", 'Content-Type': 'application/octet-stream', 'X-Object-meta-000': "'compression': 'None',", 'X-Object-meta-003': "'format_version': 2,", 'X-Object-meta-002': "'encryption': 'None',"}), <_io.FileIO name=14 mode='rb+'>) ※4 2016-10-13 09:36:34.869 464:Thread-8 s3ql.backends.swift._do_request_inner: started with PUT /v1/AUTH_bfd4e12cb3254bd1b1f10ea6b85e2070/lijingjie1/s3ql_data_1 2016-10-13 09:36:34.870 464:Thread-8 s3ql.backends.swift._do_request_inner: waiting for 100-continue ........ 2016-10-13 09:37:51.000 464:Thread-8 s3ql.block_cache._do_upload: _do_upload(1): uploaded 0 bytes in 87.602 seconds, 0.00 MiB/s ........ 2016-10-13 09:39:54.914 464:CommitThread s3ql.block_cache.upload: PSDCD DEBUG md5:(6f9c6b43e46762b2e4771c54ce07e967): hash:(83448b6a0b77df86e2a89212fc57d6ee) ※5 2016-10-13 09:39:54.914 464:fuse-worker-18 s3ql.fs.getxattr: started with 4, b'security.capability' ※5 2016-10-13 09:39:54.940 464:CommitThread s3ql.block_cache.upload: upload(<Dirty CacheEntry, inode=4, blockno=0>): created new object 2 ※5 2016-10-13 09:39:54.941 464:CommitThread s3ql.block_cache.upload: upload(<Dirty CacheEntry, inode=4, blockno=0>): created new block 2 2016-10-13 09:39:54.941 464:CommitThread s3ql.block_cache.upload: upload(<Dirty CacheEntry, inode=4, blockno=0>): adding to upload queue 2016-10-13 09:39:54.941 464:CommitThread s3ql.block_cache.put: got reader, enqueueing (<s3ql.block_cache.CacheEntry object at 0x7f13441ae1e8>, 2, '6f9c6b43e46762b2e4771c54ce07e967') 2016-10-13 09:39:54.981 464:fuse-worker-19 s3ql.block_cache._get_entry: started with 4, 1 2016-10-13 09:39:54.981 464:Thread-6 s3ql.backends.swift.open_write: started with s3ql_data_2 2016-10-13 09:39:55.051 464:CommitThread s3ql.block_cache.upload: upload(<Dirty CacheEntry, inode=4, blockno=0>): no old block, returning ........ 2016-10-13 09:40:20.765 464:CommitThread s3ql.block_cache.upload: started with <Dirty CacheEntry, inode=4, blockno=1> 2016-10-13 09:40:48.458 464:CommitThread s3ql.block_cache.upload: PSDCD DEBUG md5:(fb3c3ba0f09688936e12c009d5fd0ed1): hash:(8c42304d617a42338f05ff866cebd394) ※6 2016-10-13 09:40:48.458 464:CommitThread s3ql.block_cache.upload: upload(<Dirty CacheEntry, inode=4, blockno=1>): created new object 3 ※6 2016-10-13 09:40:48.458 464:CommitThread s3ql.block_cache.upload: upload(<Dirty CacheEntry, inode=4, blockno=1>): created new block 3 ※6 2016-10-13 09:40:48.458 464:CommitThread s3ql.block_cache.upload: upload(<Dirty CacheEntry, inode=4, blockno=1>): adding to upload queue 2016-10-13 09:40:48.459 464:CommitThread s3ql.block_cache.put: got reader, enqueueing (<s3ql.block_cache.CacheEntry object at 0x7f13441ae118>, 3, 'fb3c3ba0f09688936e12c009d5fd0ed1') 2016-10-13 09:40:48.519 464:Thread-5 s3ql.block_cache.get: waiting for writer.. 2016-10-13 09:40:48.520 464:Thread-4 s3ql.block_cache.get: waiting for writer.. 2016-10-13 09:40:48.520 464:Thread-7 s3ql.block_cache.get: waiting for writer.. 2016-10-13 09:40:48.520 464:Thread-8 s3ql.block_cache.get: waiting for writer.. 2016-10-13 09:40:48.520 464:CommitThread s3ql.block_cache._deref_block: removing block 1 2016-10-13 09:40:48.520 464:CommitThread s3ql.block_cache._deref_block: removing object 1 2016-10-13 09:40:48.520 464:CommitThread s3ql.block_cache._deref_block: adding 1 to removal queue 2016-10-13 09:40:48.521 464:Thread-9 s3ql.block_cache._removal_loop: reading from queue (blocking=False) 2016-10-13 09:40:48.521 464:Thread-9 s3ql.block_cache._removal_loop: removing: [1] 2016-10-13 09:40:48.756 464:Thread-3 s3ql.backends.common.get_ssl_context: Reading default CA certificates. 2016-10-13 09:40:48.912 464:Thread-3 s3ql.backends.swift._do_request: started with 'GET', '/', None, {'limit': 1}, None, None 2016-10-13 09:40:48.912 464:Thread-3 s3ql.backends.swift._do_request: _do_request(): start with parameters ('GET', '/', None, {'limit': 1}, CaseInsensitiveDict({}), None) 2016-10-13 09:40:48.912 464:Thread-3 s3ql.backends.swift._do_request: no active connection, calling _get_conn() 2016-10-13 09:40:48.912 464:Thread-3 s3ql.backends.swiftks._get_conn: started 2016-10-13 09:41:07.945 464:Thread-3 s3ql.backends.swift._do_request_inner: started with GET /v1/AUTH_bfd4e12cb3254bd1b1f10ea6b85e2070/lijingjie1/?limit=1 2016-10-13 09:41:28.587 464:Thread-6 s3ql.backends.s3c.close: started with s3ql_data_2 ※7 2016-10-13 09:41:28.587 464:Thread-6 s3ql.backends.swift._do_request: started with 'PUT', '/s3ql_data_2', None, None, CaseInsensitiveDict({'X-Object-meta-md5': 'fn1+kHftkhNGGzPtpikInw==', 'X-Object-meta-format': 'raw2', 'X-Object-meta-001': "'data': b'eyAgfQ==',", 'Content-Type': 'application/octet-stream', 'X-Object-meta-000': "'compression': 'None',", 'X-Object-meta-003': "'format_version': 2,", 'X-Object-meta-002': "'encryption': 'None',"}), <_io.FileIO name=14 mode='rb+'> ※7 2016-10-13 09:41:28.588 464:Thread-6 s3ql.backends.swift._do_request: _do_request(): start with parameters ('PUT', '/s3ql_data_2', None, None, CaseInsensitiveDict({'X-Object-meta-md5': 'fn1+kHftkhNGGzPtpikInw==', 'X-Object-meta-format': 'raw2', 'X-Object-meta-001': "'data': b'eyAgfQ==',", 'Content-Type': 'application/octet-stream', 'X-Object-meta-000': "'compression': 'None',", 'X-Object-meta-003': "'format_version': 2,", 'X-Object-meta-002': "'encryption': 'None',"}), <_io.FileIO name=14 mode='rb+'>) ※7 2016-10-13 09:41:28.588 464:Thread-6 s3ql.backends.swift._do_request_inner: started with PUT /v1/AUTH_bfd4e12cb3254bd1b1f10ea6b85e2070/lijingjie1/s3ql_data_2 2016-10-13 09:41:28.588 464:Thread-6 s3ql.backends.swift._do_request_inner: waiting for 100-continue 2016-10-13 09:41:31.983 464:Thread-6 s3ql.backends.swift._do_request_inner: writing body data ........ 2016-10-13 09:43:08.454 464:Thread-3 s3ql.backends.swift.open_write: started with s3ql_data_3 2016-10-13 09:43:08.757 464:Thread-9 s3ql.backends.common.get_ssl_context: Reading default CA certificates. 2016-10-13 09:43:08.787 464:Thread-9 s3ql.backends.swift._do_request: started with 'GET', '/', None, {'limit': 1}, None, None 2016-10-13 09:43:08.787 464:Thread-9 s3ql.backends.swift._do_request: _do_request(): start with parameters ('GET', '/', None, {'limit': 1}, CaseInsensitiveDict({}), None) 2016-10-13 09:43:08.792 464:Thread-9 s3ql.backends.swift._do_request: no active connection, calling _get_conn() 2016-10-13 09:43:08.792 464:Thread-9 s3ql.backends.swiftks._get_conn: started 2016-10-13 09:43:21.334 464:Thread-9 s3ql.backends.swift._do_request_inner: started with GET /v1/AUTH_bfd4e12cb3254bd1b1f10ea6b85e2070/lijingjie1/?limit=1 2016-10-13 09:43:37.389 464:fuse-worker-21 s3ql.fs.getxattr: started with 4, b'system.posix_acl_access' 2016-10-13 09:43:38.573 464:fuse-worker-23 s3ql.fs.open: started with 4 2016-10-13 09:43:38.852 464:fuse-worker-24 s3ql.fs.flush: started with 4 2016-10-13 09:43:38.852 464:fuse-worker-25 s3ql.fs.release: started with 4 2016-10-13 09:43:38.854 464:fuse-worker-26 s3ql.fs.getxattr: started with 4, b'system.posix_acl_access' 2016-10-13 09:43:38.854 464:fuse-worker-27 s3ql.fs.open: started with 4 2016-10-13 09:43:38.854 464:fuse-worker-29 s3ql.fs.flush: started with 4 2016-10-13 09:43:38.854 464:fuse-worker-28 s3ql.fs.release: started with 4 2016-10-13 09:43:41.211 464:Thread-9 s3ql.backends.swift.delete: started with s3ql_data_1 ※8 2016-10-13 09:43:41.211 464:Thread-9 s3ql.backends.swift._do_request: started with 'DELETE', '/s3ql_data_1', None, None, None, None ※8 2016-10-13 09:43:41.310 464:Thread-9 s3ql.backends.swift._do_request: _do_request(): start with parameters ('DELETE', '/s3ql_data_1', None, None, CaseInsensitiveDict({}), None) 2016-10-13 09:43:41.312 464:Thread-9 s3ql.backends.swift._do_request_inner: started with DELETE /v1/AUTH_bfd4e12cb3254bd1b1f10ea6b85e2070/lijingjie1/s3ql_data_1 2016-10-13 09:43:43.369 464:Thread-9 s3ql.block_cache._removal_loop: reading from queue (blocking=True) 2016-10-13 09:44:23.362 464:Thread-3 s3ql.backends.s3c.close: started with s3ql_data_3 ※9 2016-10-13 09:44:23.363 464:Thread-3 s3ql.backends.swift._do_request: started with 'PUT', '/s3ql_data_3', None, None, CaseInsensitiveDict({'X-Object-meta-md5': 'fn1+kHftkhNGGzPtpikInw==', 'X-Object-meta-format': 'raw2', 'X-Object-meta-001': "'data': b'eyAgfQ==',", 'Content-Type': 'application/octet-stream', 'X-Object-meta-000': "'compression': 'None',", 'X-Object-meta-003': "'format_version': 2,", 'X-Object-meta-002': "'encryption': 'None',"}), <_io.FileIO name=16 mode='rb+'> ※9 2016-10-13 09:44:23.363 464:Thread-3 s3ql.backends.swift._do_request: _do_request(): start with parameters ('PUT', '/s3ql_data_3', None, None, CaseInsensitiveDict({'X-Object-meta-md5': 'fn1+kHftkhNGGzPtpikInw==', 'X-Object-meta-format': 'raw2', 'X-Object-meta-001': "'data': b'eyAgfQ==',", 'Content-Type': 'application/octet-stream', 'X-Object-meta-000': "'compression': 'None',", 'X-Object-meta-003': "'format_version': 2,", 'X-Object-meta-002': "'encryption': 'None',"}), <_io.FileIO name=16 mode='rb+'>) ※9 2016-10-13 09:44:23.363 464:Thread-3 s3ql.backends.swift._do_request_inner: started with PUT /v1/AUTH_bfd4e12cb3254bd1b1f10ea6b85e2070/lijingjie1/s3ql_data_3 2016-10-13 09:44:23.363 464:Thread-3 s3ql.backends.swift._do_request_inner: waiting for 100-continue 2016-10-13 09:44:24.078 464:Thread-3 s3ql.backends.swift._do_request_inner: writing body data 2016-10-13 09:44:24.666 464:Thread-6 s3ql.block_cache._do_upload: _do_upload(2): uploaded 2048000000 bytes in 269.685 seconds, 7.24 MiB/s 2016-10-13 09:44:24.796 464:Thread-6 s3ql.block_cache.get: waiting for writer.. 2016-10-13 09:44:24.796 464:fuse-worker-19 s3ql.block_cache._get_entry: started with 4, 0 2016-10-13 09:44:24.796 464:Thread-4 s3ql.block_cache.get: waiting for writer.. 2016-10-13 09:44:24.796 464:Thread-7 s3ql.block_cache.get: waiting for writer.. 2016-10-13 09:44:24.796 464:Thread-8 s3ql.block_cache.get: waiting for writer.. 2016-10-13 09:44:24.796 464:Thread-5 s3ql.block_cache.get: waiting for writer.. 2016-10-13 09:44:26.767 464:fuse-worker-30 s3ql.fs.flush: started with 4 2016-10-13 09:44:26.767 464:fuse-worker-1 s3ql.fs.release: started with 4 2016-10-13 09:44:26.781 464:fuse-worker-2 s3ql.fs.releasedir: started with 1 2016-10-13 09:44:27.334 464:fuse-worker-6 s3ql.fs.getattr: started with 4 2016-10-13 09:44:27.569 464:fuse-worker-3 s3ql.fs.getxattr: started with 4, b'system.posix_acl_access' 2016-10-13 09:44:27.980 464:fuse-worker-4 s3ql.fs.open: started with 4 2016-10-13 09:44:27.980 464:fuse-worker-7 s3ql.fs.getxattr: started with 4, b'system.posix_acl_access' 2016-10-13 09:44:27.981 464:fuse-worker-5 s3ql.fs.getxattr: started with 1, b'system.posix_acl_access' 2016-10-13 09:44:27.981 464:fuse-worker-8 s3ql.fs.getxattr: started with 1, b'system.posix_acl_default' 2016-10-13 09:44:28.023 464:fuse-worker-9 s3ql.fs.read: lijingjie########## started with 4, 0, 16384 2016-10-13 09:44:28.024 464:fuse-worker-9 s3ql.block_cache._get_entry: started with 4, 0 2016-10-13 09:44:28.026 464:fuse-worker-10 s3ql.fs.read: lijingjie########## started with 4, 2711764992, 8192 2016-10-13 09:45:21.666 464:Thread-3 s3ql.block_cache._do_upload: _do_upload(3): uploaded 663882958 bytes in 133.212 seconds, 4.75 MiB/s -- You received this message because you are subscribed to the Google Groups "s3ql" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
