mirror of
https://github.com/s3fs-fuse/s3fs-fuse.git
synced 2025-01-09 16:06:46 +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;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// link and unlink cache file
|
// rename cache file
|
||||||
if(-1 == link(cachepath.c_str(), newcachepath.c_str())){
|
if(-1 == rename(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);
|
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;
|
|
||||||
}
|
|
||||||
if(-1 == unlink(cachepath.c_str())){
|
|
||||||
S3FS_PRN_ERR("failed to unlink old cache path(%s) by errno(%d).", cachepath.c_str(), errno);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user