From 83612ef736d8a9d05dfd256163d583aa436ac3ad Mon Sep 17 00:00:00 2001 From: Vangelis Koukis Date: Thu, 9 Dec 2010 20:53:22 +0200 Subject: [PATCH] Fix overflow in FileJournal::_open_file() [ The following text is in the "iso-8859-7" character set. ] [ Your display is set for the "iso-8859-1" character set. ] [ Some special characters may be displayed incorrectly. ] Running the unstable branch, mkcephfs fails when trying to create a 3GB journal file on the OSDs. Relevant messages from the osd logfile: 2010-12-09 19:03:54.419737 7fdde4d51720 journal _open_file: unable to extend journal to 18446744072560312320 bytes 2010-12-09 19:03:54.419789 7fdde4d51720 filestore(/osd) mkjournal error creating journal on /osd/journal The problem is that the calculation of the journal size in bytes overflows, in FileJournal::_open_file(). Signed-off-by: Vangelis Koukis Signed-off-by: Sage Weil --- src/os/FileJournal.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/os/FileJournal.cc b/src/os/FileJournal.cc index 67342b4305a9e..7f33c84fa395a 100644 --- a/src/os/FileJournal.cc +++ b/src/os/FileJournal.cc @@ -223,7 +223,7 @@ int FileJournal::_open_file(int64_t oldsize, blksize_t blksize, } if (create && (oldsize < conf_journal_sz)) { - uint64_t newsize = g_conf.osd_journal_size << 20; + uint64_t newsize = (uint64_t)g_conf.osd_journal_size << 20; dout(10) << "_open extending to " << newsize << " bytes" << dendl; ret = ::ftruncate(fd, newsize); if (ret < 0) { -- 2.39.5