]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore/BlueFS: For logs of rocksdb & bluefs only use directio. 11012/head
authorJianpeng Ma <jianpeng.ma@intel.com>
Thu, 8 Sep 2016 11:40:41 +0000 (19:40 +0800)
committerJianpeng Ma <jianpeng.ma@intel.com>
Thu, 8 Sep 2016 11:40:41 +0000 (19:40 +0800)
Now it use bluefs_buffered_io to control whether use buffer or directio
when write. But in fact for logs of rocksdb & bluefs, whether
bluefs_buffer_io is true or false, the logs only need directio.

Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>
src/os/bluestore/BlueFS.cc

index 0e665ee5071469368de92760c7dd899d0a98b2bf..99eb31e205e73f152128d3bee956a20b90b538d5 100644 (file)
@@ -1375,6 +1375,12 @@ int BlueFS::_flush_range(FileWriter *h, uint64_t offset, uint64_t length)
   assert(!h->file->deleted);
   assert(h->file->num_readers.load() == 0);
 
+  bool buffered;
+  if (h->file->fnode.ino == 1 || h->writer_type == WRITER_WAL)
+    buffered = false;
+  else
+    buffered = g_conf->bluefs_buffered_io;
+
   if (offset + length <= h->pos)
     return 0;
   if (offset < h->pos) {
@@ -1506,8 +1512,7 @@ int BlueFS::_flush_range(FileWriter *h, uint64_t offset, uint64_t length)
       h->tail_block.substr_of(bl, bl.length() - tail, tail);
       t.append_zero(super.block_size - tail);
     }
-    bdev[p->bdev]->aio_write(p->offset + x_off, t, h->iocv[p->bdev],
-                            g_conf->bluefs_buffered_io);
+    bdev[p->bdev]->aio_write(p->offset + x_off, t, h->iocv[p->bdev], buffered);
     bloff += x_len;
     length -= x_len;
     ++p;