]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Merge pull request #5259 from branch-predictor/bp-tuned-bufferlists
authorSage Weil <sage@redhat.com>
Thu, 20 Aug 2015 19:09:17 +0000 (15:09 -0400)
committerSage Weil <sage@redhat.com>
Thu, 20 Aug 2015 19:09:17 +0000 (15:09 -0400)
Bufferlist tuning

Reviewed-by: Sage Weil <sage@redhat.com>
Reviewed-by: Haomai Wang <haomaiwang@gmail.com>
Reviewed-by: Samuel Just <sjust@redhat.com>
1  2 
src/common/buffer.cc
src/include/buffer.h
src/include/encoding.h

index 06537f5eca1e011a9d52a08f9738981f2da6a86f,5eccdfe054987be595f146fa13e8b9cce1594ff4..f2148fdcdb509ffd16146537188a9c3898310981
@@@ -1369,32 -1528,32 +1528,31 @@@ void buffer::list::rebuild_page_aligned
      unsigned gap = append_buffer.unused_tail_length();
      if (!gap) {
        // make a new append_buffer!
 -      unsigned alen = CEPH_PAGE_SIZE;
 -      append_buffer = create_page_aligned(alen);
 +      append_buffer = create_aligned(CEPH_BUFFER_APPEND_SIZE, CEPH_BUFFER_APPEND_SIZE);
        append_buffer.set_length(0);   // unused, so far.
      }
-     append_buffer.append(c);
-     append(append_buffer, append_buffer.end() - 1, 1);        // add segment to the list
+     append(append_buffer, append_buffer.append(c) - 1, 1);    // add segment to the list
    }
-   
    void buffer::list::append(const char *data, unsigned len)
    {
      while (len > 0) {
        // put what we can into the existing append_buffer.
        unsigned gap = append_buffer.unused_tail_length();
        if (gap > 0) {
-       if (gap > len) gap = len;
-       //cout << "append first char is " << data[0] << ", last char is " << data[len-1] << std::endl;
-       append_buffer.append(data, gap);
-       append(append_buffer, append_buffer.end() - gap, gap);  // add segment to the list
-       len -= gap;
-       data += gap;
+         if (gap > len) gap = len;
+     //cout << "append first char is " << data[0] << ", last char is " << data[len-1] << std::endl;
+         append_buffer.append(data, gap);
+         append(append_buffer, append_buffer.end() - gap, gap);        // add segment to the list
+         len -= gap;
+         data += gap;
        }
        if (len == 0)
-       break;  // done!
+         break;  // done!
        
        // make a new append_buffer!
 -      unsigned alen = CEPH_PAGE_SIZE * (((len-1) / CEPH_PAGE_SIZE) + 1);
 -      append_buffer = create_page_aligned(alen);
 +      unsigned alen = CEPH_BUFFER_APPEND_SIZE * (((len-1) / CEPH_BUFFER_APPEND_SIZE) + 1);
 +      append_buffer = create_aligned(alen, CEPH_BUFFER_APPEND_SIZE);
        append_buffer.set_length(0);   // unused, so far.
      }
    }
Simple merge
Simple merge