def finalize_put(): # Write the metadata before calling fsync() so that both data and # metadata are flushed to disk. write_metadata(self.fd, metadata) # We call fsync() before calling drop_cache() to lower the amount # of redundant work the drop cache code will perform on the pages # (now that after fsync the pages will be all clean). fsync(self.fd) # From the Department of the Redundancy Department, make sure # we call drop_cache() after fsync() to avoid redundant work # (pages all clean). drop_buffer_cache(self.fd, 0, self.upload_size) invalidate_hash(os.path.dirname(self.disk_file.datadir)) # After the rename completes, this object will be available for # other requests to reference. renamer(self.tmppath, os.path.join(self.disk_file.datadir, timestamp + extension))
def _finalize_put(self, metadata, target_path): # Write the metadata before calling fsync() so that both data and # metadata are flushed to disk. write_metadata(self.fd, metadata) # We call fsync() before calling drop_cache() to lower the amount # of redundant work the drop cache code will perform on the pages # (now that after fsync the pages will be all clean). fsync(self.fd) # From the Department of the Redundancy Department, make sure # we call drop_cache() after fsync() to avoid redundant work # (pages all clean). drop_buffer_cache(self.fd, 0, self.upload_size) invalidate_hash(dirname(self.disk_file.datadir)) # After the rename completes, this object will be available for # other requests to reference. renamer(self.tmppath, target_path) hash_cleanup_listdir(self.disk_file.datadir)
def _finalize_put(self, metadata, target_path): # Write the metadata before calling fsync() so that both data and # metadata are flushed to disk. write_metadata(self._fd, metadata) # We call fsync() before calling drop_cache() to lower the amount of # redundant work the drop cache code will perform on the pages (now # that after fsync the pages will be all clean). fsync(self._fd) # From the Department of the Redundancy Department, make sure we call # drop_cache() after fsync() to avoid redundant work (pages all # clean). drop_buffer_cache(self._fd, 0, self._upload_size) invalidate_hash(dirname(self._datadir)) # After the rename completes, this object will be available for other # requests to reference. renamer(self._tmppath, target_path) hash_cleanup_listdir(self._datadir)
def _finalize_put(self, metadata, target_path): #在调用fsync()之前写元数据,因此,元数据和数据都刷到磁盘上 # Write the metadata before calling fsync() so that both data and # metadata are flushed to disk. write_metadata(self.fd, metadata) # We call fsync() before calling drop_cache() to lower the amount # of redundant work the drop cache code will perform on the pages # (now that after fsync the pages will be all clean). fsync(self.fd) # From the Department of the Redundancy Department, make sure # we call drop_cache() after fsync() to avoid redundant work # (pages all clean). drop_buffer_cache(self.fd, 0, self.upload_size) invalidate_hash(dirname(self.disk_file.datadir)) # After the rename completes, this object will be available for # other requests to reference. renamer(self.tmppath, target_path) hash_cleanup_listdir(self.disk_file.datadir)