|
|
@ -19,6 +19,7 @@ package cmd |
|
|
|
import ( |
|
|
|
import ( |
|
|
|
"bytes" |
|
|
|
"bytes" |
|
|
|
"context" |
|
|
|
"context" |
|
|
|
|
|
|
|
"errors" |
|
|
|
"fmt" |
|
|
|
"fmt" |
|
|
|
"io" |
|
|
|
"io" |
|
|
|
"io/ioutil" |
|
|
|
"io/ioutil" |
|
|
@ -622,8 +623,15 @@ func (fs *FSObjects) CopyObject(ctx context.Context, srcBucket, srcObject, dstBu |
|
|
|
fsMetaPath := pathJoin(fs.fsPath, minioMetaBucket, bucketMetaPrefix, srcBucket, srcObject, fs.metaJSONFile) |
|
|
|
fsMetaPath := pathJoin(fs.fsPath, minioMetaBucket, bucketMetaPrefix, srcBucket, srcObject, fs.metaJSONFile) |
|
|
|
wlk, err := fs.rwPool.Write(fsMetaPath) |
|
|
|
wlk, err := fs.rwPool.Write(fsMetaPath) |
|
|
|
if err != nil { |
|
|
|
if err != nil { |
|
|
|
logger.LogIf(ctx, err) |
|
|
|
if !errors.Is(err, errFileNotFound) { |
|
|
|
return oi, toObjectErr(err, srcBucket, srcObject) |
|
|
|
logger.LogIf(ctx, err) |
|
|
|
|
|
|
|
return oi, toObjectErr(err, srcBucket, srcObject) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
wlk, err = fs.rwPool.Create(fsMetaPath) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
|
|
|
logger.LogIf(ctx, err) |
|
|
|
|
|
|
|
return oi, toObjectErr(err, srcBucket, srcObject) |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
// This close will allow for locks to be synchronized on `fs.json`.
|
|
|
|
// This close will allow for locks to be synchronized on `fs.json`.
|
|
|
|
defer wlk.Close() |
|
|
|
defer wlk.Close() |
|
|
@ -1491,8 +1499,15 @@ func (fs *FSObjects) PutObjectTags(ctx context.Context, bucket, object string, t |
|
|
|
fsMeta := fsMetaV1{} |
|
|
|
fsMeta := fsMetaV1{} |
|
|
|
wlk, err := fs.rwPool.Write(fsMetaPath) |
|
|
|
wlk, err := fs.rwPool.Write(fsMetaPath) |
|
|
|
if err != nil { |
|
|
|
if err != nil { |
|
|
|
logger.LogIf(ctx, err) |
|
|
|
if !errors.Is(err, errFileNotFound) { |
|
|
|
return toObjectErr(err, bucket, object) |
|
|
|
logger.LogIf(ctx, err) |
|
|
|
|
|
|
|
return toObjectErr(err, bucket, object) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
wlk, err = fs.rwPool.Create(fsMetaPath) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
|
|
|
logger.LogIf(ctx, err) |
|
|
|
|
|
|
|
return toObjectErr(err, bucket, object) |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
// This close will allow for locks to be synchronized on `fs.json`.
|
|
|
|
// This close will allow for locks to be synchronized on `fs.json`.
|
|
|
|
defer wlk.Close() |
|
|
|
defer wlk.Close() |
|
|
|