]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - fs/jbd2/journal.c
Merge tag 'juno-fix-5.6' of git://git.kernel.org/pub/scm/linux/kernel/git/sudeep...
[linux.git] / fs / jbd2 / journal.c
index eb8ca446d1ab829a058d35d2573946b54e6b0388..a49d0e670ddf82bdb98382312101481af2943c2b 100644 (file)
@@ -794,18 +794,22 @@ int jbd2_journal_bmap(journal_t *journal, unsigned long blocknr,
 {
        int err = 0;
        unsigned long long ret;
+       sector_t block = 0;
 
        if (journal->j_inode) {
-               ret = bmap(journal->j_inode, blocknr);
-               if (ret)
-                       *retp = ret;
-               else {
+               block = blocknr;
+               ret = bmap(journal->j_inode, &block);
+
+               if (ret || !block) {
                        printk(KERN_ALERT "%s: journal block not found "
                                        "at offset %lu on %s\n",
                               __func__, blocknr, journal->j_devname);
                        err = -EIO;
                        jbd2_journal_abort(journal, err);
+               } else {
+                       *retp = block;
                }
+
        } else {
                *retp = blocknr; /* +journal->j_blk_offset */
        }
@@ -1243,11 +1247,14 @@ journal_t *jbd2_journal_init_dev(struct block_device *bdev,
 journal_t *jbd2_journal_init_inode(struct inode *inode)
 {
        journal_t *journal;
+       sector_t blocknr;
        char *p;
-       unsigned long long blocknr;
+       int err = 0;
+
+       blocknr = 0;
+       err = bmap(inode, &blocknr);
 
-       blocknr = bmap(inode, 0);
-       if (!blocknr) {
+       if (err || !blocknr) {
                pr_err("%s: Cannot locate journal superblock\n",
                        __func__);
                return NULL;