diff --git a/weed/filer2/filechunks.go b/weed/filer2/filechunks.go new file mode 100644 index 000000000..b2f05de3a --- /dev/null +++ b/weed/filer2/filechunks.go @@ -0,0 +1,23 @@ +package filer2 + +type Chunks []FileChunk + +func (chunks Chunks) TotalSize() (size uint64) { + for _, c := range chunks { + t := uint64(c.Offset + int64(c.Size)) + if size < t { + size = t + } + } + return +} + +func (chunks Chunks) Len() int { + return len(chunks) +} +func (chunks Chunks) Swap(i, j int) { + chunks[i], chunks[j] = chunks[j], chunks[i] +} +func (chunks Chunks) Less(i, j int) bool { + return chunks[i].Offset < chunks[j].Offset +} diff --git a/weed/filer2/filer_structure.go b/weed/filer2/filer_structure.go index c78704184..c6a3f817d 100644 --- a/weed/filer2/filer_structure.go +++ b/weed/filer2/filer_structure.go @@ -27,7 +27,6 @@ type Attr struct { Mode os.FileMode // file mode Uid uint32 // owner uid Gid uint32 // group gid - Size uint64 // total size in bytes } type Entry struct { diff --git a/weed/filer2/memdb/memdb_store.go b/weed/filer2/memdb/memdb_store.go index 5a72b7cf9..47e9934aa 100644 --- a/weed/filer2/memdb/memdb_store.go +++ b/weed/filer2/memdb/memdb_store.go @@ -5,6 +5,7 @@ import ( "github.com/google/btree" "strings" "fmt" + "time" ) type MemDbStore struct { @@ -37,6 +38,7 @@ func (filer *MemDbStore) AppendFileChunk(fullpath filer2.FullPath, fileChunk fil return fmt.Errorf("No such file: %s", fullpath) } entry.Chunks = append(entry.Chunks, fileChunk) + entry.Mtime = time.Now() return nil }