Discard method is added for ssd's performance.
Signed-off-by: Taeksang Kim <voidbag@gmail.com>
#endif
#include "include/assert.h"
#include "include/buffer.h"
-
+#include "include/interval_set.h"
#define SPDK_PREFIX "spdk:"
class CephContext;
IOContext *ioc,
bool buffered) = 0;
virtual int flush() = 0;
+ virtual int discard(uint64_t offset, uint64_t len) { return 0; }
void queue_reap_ioc(IOContext *ioc);
void reap_ioc();
return 0;
}
+int KernelDevice::discard(uint64_t offset, uint64_t len)
+{
+ int r = 0;
+ if (!rotational)
+ r = block_device_discard(fd_direct, (int64_t)offset, (int64_t)len);
+ return r;
+}
+
int KernelDevice::read(uint64_t off, uint64_t len, bufferlist *pbl,
IOContext *ioc,
bool buffered)
IOContext *ioc,
bool buffered) override;
int flush() override;
+ int discard(uint64_t offset, uint64_t len) override;
// for managing buffered readers/writers
int invalidate_cache(uint64_t off, uint64_t len) override;