diff --git a/weed/server/filer_server_handlers_read.go b/weed/server/filer_server_handlers_read.go index 7b134581a..8340021ce 100644 --- a/weed/server/filer_server_handlers_read.go +++ b/weed/server/filer_server_handlers_read.go @@ -70,6 +70,13 @@ func (fs *FilerServer) GetOrHeadHandler(w http.ResponseWriter, r *http.Request, return } u, _ := url.Parse(urlString) + q := u.Query() + for key, values := range r.URL.Query() { + for _, value := range values { + q.Add(key, value) + } + } + u.RawQuery = q.Encode() request := &http.Request{ Method: r.Method, URL: u, diff --git a/weed/server/volume_server_handlers_write.go b/weed/server/volume_server_handlers_write.go index e7ca2f8e1..b02a58fc8 100644 --- a/weed/server/volume_server_handlers_write.go +++ b/weed/server/volume_server_handlers_write.go @@ -42,6 +42,8 @@ func (vs *VolumeServer) PostHandler(w http.ResponseWriter, r *http.Request) { ret.Name = string(needle.Name) } ret.Size = size + etag := needle.Etag() + w.Header().Set("Etag", etag) writeJsonQuiet(w, r, httpStatus, ret) } diff --git a/weed/topology/volume_layout.go b/weed/topology/volume_layout.go index 1816577b4..066f5f69a 100644 --- a/weed/topology/volume_layout.go +++ b/weed/topology/volume_layout.go @@ -79,11 +79,11 @@ func (vl *VolumeLayout) addToWritable(vid storage.VolumeId) { } func (vl *VolumeLayout) isOversized(v *storage.VolumeInfo) bool { - return uint64(v.Size) < vl.volumeSizeLimit + return uint64(v.Size) >= vl.volumeSizeLimit } func (vl *VolumeLayout) isWritable(v *storage.VolumeInfo) bool { - return vl.isOversized(v) && + return !vl.isOversized(v) && v.Version == storage.CurrentVersion && !v.ReadOnly }