]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore: use small encoding for bluefs extent and fnode 10375/head
authorxie xingguo <xie.xingguo@zte.com.cn>
Thu, 21 Jul 2016 07:50:56 +0000 (15:50 +0800)
committerxie xingguo <xie.xingguo@zte.com.cn>
Tue, 26 Jul 2016 12:09:31 +0000 (20:09 +0800)
Also change bdev of extent from uint16_t to uint8_t, which matches
the fnode prefer_bdev field better, and is good for efficiency.

Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
src/os/bluestore/BlueFS.cc
src/os/bluestore/BlueFS.h
src/os/bluestore/bluefs_types.cc
src/os/bluestore/bluefs_types.h

index b4db22b0cf69cc29e56f71b2f2126a18b54978f8..3e66b66cbcd542d2979ba1a4c108fdcc4753fb7c 100644 (file)
@@ -1357,7 +1357,7 @@ void BlueFS::flush_bdev()
   }
 }
 
-int BlueFS::_allocate(unsigned id, uint64_t len, vector<bluefs_extent_t> *ev)
+int BlueFS::_allocate(uint8_t id, uint64_t len, vector<bluefs_extent_t> *ev)
 {
   dout(10) << __func__ << " len 0x" << std::hex << len << std::dec
            << " from " << id << dendl;
index aaeba43b81e2869b940f46e50f98834a97500dda..e7c29cbf2df93022bf348e7fac7f6600a82bdab0 100644 (file)
@@ -232,7 +232,7 @@ private:
   FileRef _get_file(uint64_t ino);
   void _drop_link(FileRef f);
 
-  int _allocate(unsigned bdev, uint64_t len, vector<bluefs_extent_t> *ev);
+  int _allocate(uint8_t bdev, uint64_t len, vector<bluefs_extent_t> *ev);
   int _flush_range(FileWriter *h, uint64_t offset, uint64_t length);
   int _flush(FileWriter *h, bool force);
   void wait_for_aio(FileWriter *h);  // safe to call without a lock
index 39a1eb5d89875628e3daf1b23a56eb1d319b2a6d..a9f10d9e4070ec2fa3bcbdd620dcf985fe57f606 100644 (file)
@@ -5,14 +5,15 @@
 #include "common/Formatter.h"
 #include "include/uuid.h"
 #include "include/stringify.h"
+#include "include/small_encoding.h"
 
 // bluefs_extent_t
 
 void bluefs_extent_t::encode(bufferlist& bl) const
 {
   ENCODE_START(1, 1, bl);
-  ::encode(offset, bl);
-  ::encode(length, bl);
+  small_encode_lba(offset, bl);
+  small_encode_varint_lowz(length, bl);
   ::encode(bdev, bl);
   ENCODE_FINISH(bl);
 }
@@ -20,8 +21,8 @@ void bluefs_extent_t::encode(bufferlist& bl) const
 void bluefs_extent_t::decode(bufferlist::iterator& p)
 {
   DECODE_START(1, p);
-  ::decode(offset, p);
-  ::decode(length, p);
+  small_decode_lba(offset, p);
+  small_decode_varint_lowz(length, p);
   ::decode(bdev, p);
   DECODE_FINISH(p);
 }
@@ -119,8 +120,8 @@ vector<bluefs_extent_t>::iterator bluefs_fnode_t::seek(
 void bluefs_fnode_t::encode(bufferlist& bl) const
 {
   ENCODE_START(1, 1, bl);
-  ::encode(ino, bl);
-  ::encode(size, bl);
+  small_encode_varint(ino, bl);
+  small_encode_varint(size, bl);
   ::encode(mtime, bl);
   ::encode(prefer_bdev, bl);
   ::encode(extents, bl);
@@ -130,8 +131,8 @@ void bluefs_fnode_t::encode(bufferlist& bl) const
 void bluefs_fnode_t::decode(bufferlist::iterator& p)
 {
   DECODE_START(1, p);
-  ::decode(ino, p);
-  ::decode(size, p);
+  small_decode_varint(ino, p);
+  small_decode_varint(size, p);
   ::decode(mtime, p);
   ::decode(prefer_bdev, p);
   ::decode(extents, p);
index ac32aeec3af79ee15e1aa85052dec4052f1cb84e..14abcc13d6d47ca91103ceea7a5746fa50075648 100644 (file)
@@ -9,9 +9,9 @@
 
 class bluefs_extent_t : public AllocExtent{
 public:
-  uint16_t bdev;
+  uint8_t bdev;
 
-  bluefs_extent_t(uint16_t b = 0, uint64_t o = 0, uint32_t l = 0)
+  bluefs_extent_t(uint8_t b = 0, uint64_t o = 0, uint32_t l = 0)
     : AllocExtent(o, l), bdev(b) {}
 
   void encode(bufferlist&) const;