aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2013-07-05 16:05:35 -0700
committerChris Lu <chris.lu@gmail.com>2013-07-05 16:05:35 -0700
commite30e325770243e5f40ca5a2371baf8f294d5a835 (patch)
tree813c14fabaf90fd5f45f9ec2e88c64df4f51fbc7
parentd1fcf1fd67d8e61b3d502ff3b16c6bed1fab2986 (diff)
downloadseaweedfs-e30e325770243e5f40ca5a2371baf8f294d5a835.tar.xz
seaweedfs-e30e325770243e5f40ca5a2371baf8f294d5a835.zip
Issue 26: Could not download uploaded files
Fix is provided by hieu.hcmus, He convinced me of the fix. Thanks!
-rw-r--r--go/storage/volume.go10
1 files changed, 10 insertions, 0 deletions
diff --git a/go/storage/volume.go b/go/storage/volume.go
index 4e6db3634..0ec24d7d1 100644
--- a/go/storage/volume.go
+++ b/go/storage/volume.go
@@ -169,6 +169,15 @@ func (v *Volume) write(n *Needle) (size uint32, err error) {
if offset, err = v.dataFile.Seek(0, 2); err != nil {
return
}
+
+ //ensure file writing starting from aligned positions
+ if offset%NeedlePaddingSize != 0 {
+ offset = offset + (NeedlePaddingSize - offset%NeedlePaddingSize)
+ if offset, err = v.dataFile.Seek(offset, 0); err != nil {
+ return
+ }
+ }
+
if size, err = n.Append(v.dataFile, v.Version()); err != nil {
if e := v.dataFile.Truncate(offset); e != nil {
err = fmt.Errorf("%s\ncannot truncate %s: %s", err, v.dataFile, e)
@@ -181,6 +190,7 @@ func (v *Volume) write(n *Needle) (size uint32, err error) {
}
return
}
+
func (v *Volume) delete(n *Needle) (uint32, error) {
if v.readOnly {
return 0, fmt.Errorf("%s is read-only", v.dataFile)