mirror of
https://github.com/s3fs-fuse/s3fs-fuse.git
synced 2025-01-08 15:44:11 +00:00
Relink cache stats file atomically via rename
The new file may already exist so link may fail. Further link/unlink is not atomic. Addresses an error when renaming an open with with use_cache. References #1296.
This commit is contained in:
parent
75e72385cc
commit
274321524c
@ -1525,13 +1525,9 @@ bool FdEntity::RenamePath(const string& newpath, string& fentmapkey)
|
||||
return false;
|
||||
}
|
||||
|
||||
// link and unlink cache file
|
||||
if(-1 == link(cachepath.c_str(), newcachepath.c_str())){
|
||||
S3FS_PRN_ERR("failed to link old cache path(%s) to new cache path(%s) by errno(%d).", cachepath.c_str(), newcachepath.c_str(), errno);
|
||||
return false;
|
||||
}
|
||||
if(-1 == unlink(cachepath.c_str())){
|
||||
S3FS_PRN_ERR("failed to unlink old cache path(%s) by errno(%d).", cachepath.c_str(), errno);
|
||||
// rename cache file
|
||||
if(-1 == rename(cachepath.c_str(), newcachepath.c_str())){
|
||||
S3FS_PRN_ERR("failed to rename old cache path(%s) to new cache path(%s) by errno(%d).", cachepath.c_str(), newcachepath.c_str(), errno);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user