]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Introduce separate mempool for FileReaderBuffer and FileWriter
authorDeepika Upadhyay <dupadhya@redhat.com>
Wed, 15 Apr 2020 12:10:15 +0000 (17:40 +0530)
committerIgor Fedotov <ifedotov@suse.com>
Thu, 26 Nov 2020 19:00:30 +0000 (22:00 +0300)
FileReaderBuffer and FileWriter uses Bufferlists which needs to be
tracked by mempool to get the proper memory usage.

Signed-off-by: Deepika Upadhyay <dupadhya@redhat.com>
(cherry picked from commit 9bb741c12cf1ffe3e9fec8e0d2fbaae107947215)

 Conflicts:
src/os/bluestore/BlueFS.cc
  trivial

src/os/bluestore/BlueFS.cc

index f7a6292318f5fd32eb8e901fd2f9cde9f176f7c0..2dc82b89a900ea2ac8c2bbe53a32bae1b080c02c 100644 (file)
 
 MEMPOOL_DEFINE_OBJECT_FACTORY(BlueFS::File, bluefs_file, bluefs);
 MEMPOOL_DEFINE_OBJECT_FACTORY(BlueFS::Dir, bluefs_dir, bluefs);
-MEMPOOL_DEFINE_OBJECT_FACTORY(BlueFS::FileWriter, bluefs_file_writer, bluefs);
+MEMPOOL_DEFINE_OBJECT_FACTORY(BlueFS::FileWriter, bluefs_file_writer, bluefs_file_writer);
 MEMPOOL_DEFINE_OBJECT_FACTORY(BlueFS::FileReaderBuffer,
-                             bluefs_file_reader_buffer, bluefs);
-MEMPOOL_DEFINE_OBJECT_FACTORY(BlueFS::FileReader, bluefs_file_reader, bluefs);
+                             bluefs_file_reader_buffer, bluefs_file_reader);
+MEMPOOL_DEFINE_OBJECT_FACTORY(BlueFS::FileReader, bluefs_file_reader, bluefs_file_reader);
 MEMPOOL_DEFINE_OBJECT_FACTORY(BlueFS::FileLock, bluefs_file_lock, bluefs);
 
 static void wal_discard_cb(void *priv, void* priv2) {
@@ -1289,6 +1289,7 @@ int BlueFS::device_migrate_to_existing(
        ceph_assert(cur_len > 0);
        cur.substr_of(bl, off, cur_len);
        int r = bdev[dev_target]->write(i.offset, cur, buffered);
+       cur.reassign_to_mempool(mempool::mempool_bluefs_file_writer);
        ceph_assert(r == 0);
        off += cur_len;
       }
@@ -1601,6 +1602,7 @@ int BlueFS::_read_random(
       buf->pos += r;
     }
   }
+  buf->bl.reassign_to_mempool(mempool::mempool_bluefs_file_reader);
   dout(20) << __func__ << " got " << ret << dendl;
   --h->file->num_reading;
   return ret;
@@ -1711,6 +1713,7 @@ int BlueFS::_read(
     buf->pos += r;
   }
 
+  buf->bl.reassign_to_mempool(mempool::mempool_bluefs_file_reader);
   dout(20) << __func__ << " got " << ret << dendl;
   ceph_assert(!outbl || (int)outbl->length() == ret);
   --h->file->num_reading;
@@ -2941,6 +2944,7 @@ int BlueFS::open_for_write(
     }
   }
 
+  (*h)->buffer.reassign_to_mempool(mempool::mempool_bluefs_file_writer);
   dout(10) << __func__ << " h " << *h << " on " << file->fnode << dendl;
   return 0;
 }