mirror of
https://github.com/ceph/ceph
synced 2025-01-01 00:22:25 +00:00
os/filestore: FALLOC_FL_PUNCH_HOLE must be used with FALLOC_FL_KEEP_SIZE
Signed-off-by: xinxin shu <xinxin.shu@intel.com>
This commit is contained in:
parent
4bb184f1e3
commit
7bd95b595f
@ -3232,6 +3232,7 @@ int FileStore::_zero(const coll_t& cid, const ghobject_t& oid, uint64_t offset,
|
||||
|
||||
#ifdef CEPH_HAVE_FALLOCATE
|
||||
# if !defined(DARWIN) && !defined(__FreeBSD__)
|
||||
# ifdef FALLOC_FL_KEEP_SIZE
|
||||
// first try to punch a hole.
|
||||
FDRef fd;
|
||||
ret = lfn_open(cid, oid, false, &fd);
|
||||
@ -3240,7 +3241,7 @@ int FileStore::_zero(const coll_t& cid, const ghobject_t& oid, uint64_t offset,
|
||||
}
|
||||
|
||||
// first try fallocate
|
||||
ret = fallocate(**fd, FALLOC_FL_PUNCH_HOLE, offset, len);
|
||||
ret = fallocate(**fd, FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE, offset, len);
|
||||
if (ret < 0)
|
||||
ret = -errno;
|
||||
lfn_close(fd);
|
||||
@ -3254,6 +3255,7 @@ int FileStore::_zero(const coll_t& cid, const ghobject_t& oid, uint64_t offset,
|
||||
goto out; // yay!
|
||||
if (ret != -EOPNOTSUPP)
|
||||
goto out; // some other error
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user