mirror of
https://github.com/ceph/ceph
synced 2025-01-20 18:21:57 +00:00
Merge pull request #11113 from yuyuyu101/wip-fix-filestore-clone
os/filestore: disable use of splice by default Reviewed-by: Sage Weil <sage@redhat.com>
This commit is contained in:
commit
51a1f8600d
@ -1108,6 +1108,7 @@ OPTION(filestore_fsync_flushes_journal_data, OPT_BOOL, false)
|
||||
OPTION(filestore_fiemap, OPT_BOOL, false) // (try to) use fiemap
|
||||
OPTION(filestore_punch_hole, OPT_BOOL, false)
|
||||
OPTION(filestore_seek_data_hole, OPT_BOOL, false) // (try to) use seek_data/hole
|
||||
OPTION(filestore_splice, OPT_BOOL, false)
|
||||
OPTION(filestore_fadvise, OPT_BOOL, true)
|
||||
//collect device partition information for management application to use
|
||||
OPTION(filestore_collect_device_partition_information, OPT_BOOL, true)
|
||||
|
@ -58,10 +58,11 @@ GenericFileStoreBackend::GenericFileStoreBackend(FileStore *fs):
|
||||
FileStoreBackend(fs),
|
||||
ioctl_fiemap(false),
|
||||
seek_data_hole(false),
|
||||
use_splice(false),
|
||||
m_filestore_fiemap(g_conf->filestore_fiemap),
|
||||
m_filestore_seek_data_hole(g_conf->filestore_seek_data_hole),
|
||||
m_filestore_fsync_flushes_journal_data(g_conf->filestore_fsync_flushes_journal_data),
|
||||
m_filestore_splice(false) {}
|
||||
m_filestore_splice(g_conf->filestore_splice) {}
|
||||
|
||||
int GenericFileStoreBackend::detect_features()
|
||||
{
|
||||
@ -165,6 +166,9 @@ int GenericFileStoreBackend::detect_features()
|
||||
//splice detection
|
||||
#ifdef CEPH_HAVE_SPLICE
|
||||
if (!m_filestore_splice) {
|
||||
dout(0) << __func__ << ": splice() is disabled via 'filestore splice' config option" << dendl;
|
||||
use_splice = false;
|
||||
} else {
|
||||
int pipefd[2];
|
||||
loff_t off_in = 0;
|
||||
int r;
|
||||
@ -174,7 +178,7 @@ int GenericFileStoreBackend::detect_features()
|
||||
lseek(fd, 0, SEEK_SET);
|
||||
r = splice(fd, &off_in, pipefd[1], NULL, 10, 0);
|
||||
if (!(r < 0 && errno == EINVAL)) {
|
||||
m_filestore_splice = true;
|
||||
use_splice = true;
|
||||
dout(0) << "detect_features: splice is supported" << dendl;
|
||||
} else
|
||||
dout(0) << "detect_features: splice is NOT supported" << dendl;
|
||||
|
@ -23,6 +23,7 @@ class GenericFileStoreBackend : public FileStoreBackend {
|
||||
private:
|
||||
bool ioctl_fiemap;
|
||||
bool seek_data_hole;
|
||||
bool use_splice;
|
||||
bool m_filestore_fiemap;
|
||||
bool m_filestore_seek_data_hole;
|
||||
bool m_filestore_fsync_flushes_journal_data;
|
||||
@ -50,7 +51,7 @@ public:
|
||||
return _copy_range(from, to, srcoff, len, dstoff);
|
||||
}
|
||||
virtual int set_alloc_hint(int fd, uint64_t hint) { return -EOPNOTSUPP; }
|
||||
virtual bool has_splice() const { return m_filestore_splice; }
|
||||
virtual bool has_splice() const { return use_splice; }
|
||||
private:
|
||||
int _crc_load_or_init(int fd, SloppyCRCMap *cm);
|
||||
int _crc_save(int fd, SloppyCRCMap *cm);
|
||||
|
Loading…
Reference in New Issue
Block a user