]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
filejournal: move zero_buf allocation
authorSage Weil <sage.weil@dreamhost.com>
Thu, 19 Jan 2012 00:21:35 +0000 (16:21 -0800)
committerSage Weil <sage.weil@dreamhost.com>
Sat, 28 Jan 2012 18:56:43 +0000 (10:56 -0800)
We need header.alignment to be defined.

Signed-off-by: Sage Weil <sage.weil@dreamhost.com>
src/os/FileJournal.cc

index ebc641fee5e0b63bf6ff5b28f69814cc057ab41b..b326fea360aa5af0d0690ee132043a3629962848 100644 (file)
@@ -89,11 +89,6 @@ int FileJournal::_open(bool forwrite, bool create)
   /* We really want max_size to be a multiple of block_size. */
   max_size -= max_size % block_size;
 
-  // static zeroed buffer for alignment padding
-  delete [] zero_buf;
-  zero_buf = new char[header.alignment];
-  memset(zero_buf, 0, header.alignment);
-
   dout(1) << "_open " << fn << " fd " << fd
          << ": " << max_size 
          << " bytes, block size " << block_size
@@ -344,6 +339,11 @@ int FileJournal::create()
   header.start = get_top();
   print_header();
 
+  // static zeroed buffer for alignment padding
+  delete [] zero_buf;
+  zero_buf = new char[header.alignment];
+  memset(zero_buf, 0, header.alignment);
+
   bp = prepare_header();
   if (TEMP_FAILURE_RETRY(::pwrite(fd, bp.c_str(), bp.length(), 0)) < 0) {
     ret = errno;
@@ -425,6 +425,12 @@ int FileJournal::open(uint64_t fs_op_seq)
   err = read_header();
   if (err < 0)
     return err;
+
+  // static zeroed buffer for alignment padding
+  delete [] zero_buf;
+  zero_buf = new char[header.alignment];
+  memset(zero_buf, 0, header.alignment);
+
   dout(10) << "open header.fsid = " << header.fsid 
     //<< " vs expected fsid = " << fsid 
           << dendl;