]> git-server-git.apps.pok.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>
Sun, 20 Sep 2020 10:18:27 +0000 (13:18 +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 417c1e0f68717a52ac5d8baf9b7f4cae9bc449cb..00ea0d8fb65b05522c5fc3cca46e37e1493fa867 100644 (file)
 using TOPNSPC::common::cmd_getval;
 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) {
@@ -1647,6 +1647,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;
       }
@@ -1961,6 +1962,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;
@@ -2071,6 +2073,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;
@@ -3338,6 +3341,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;
 }