Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target...
[firefly-linux-kernel-4.4.55.git] / fs / ocfs2 / refcounttree.c
index b69dd14c0b9ba1e39aa7662aec0350e8b5044702..e5d57cd325052a80eb4bccf63398e84019333995 100644 (file)
@@ -102,32 +102,30 @@ static int ocfs2_validate_refcount_block(struct super_block *sb,
 
 
        if (!OCFS2_IS_VALID_REFCOUNT_BLOCK(rb)) {
-               ocfs2_error(sb,
-                           "Refcount block #%llu has bad signature %.*s",
-                           (unsigned long long)bh->b_blocknr, 7,
-                           rb->rf_signature);
-               return -EINVAL;
+               rc = ocfs2_error(sb,
+                                "Refcount block #%llu has bad signature %.*s\n",
+                                (unsigned long long)bh->b_blocknr, 7,
+                                rb->rf_signature);
+               goto out;
        }
 
        if (le64_to_cpu(rb->rf_blkno) != bh->b_blocknr) {
-               ocfs2_error(sb,
-                           "Refcount block #%llu has an invalid rf_blkno "
-                           "of %llu",
-                           (unsigned long long)bh->b_blocknr,
-                           (unsigned long long)le64_to_cpu(rb->rf_blkno));
-               return -EINVAL;
+               rc = ocfs2_error(sb,
+                                "Refcount block #%llu has an invalid rf_blkno of %llu\n",
+                                (unsigned long long)bh->b_blocknr,
+                                (unsigned long long)le64_to_cpu(rb->rf_blkno));
+               goto out;
        }
 
        if (le32_to_cpu(rb->rf_fs_generation) != OCFS2_SB(sb)->fs_generation) {
-               ocfs2_error(sb,
-                           "Refcount block #%llu has an invalid "
-                           "rf_fs_generation of #%u",
-                           (unsigned long long)bh->b_blocknr,
-                           le32_to_cpu(rb->rf_fs_generation));
-               return -EINVAL;
+               rc = ocfs2_error(sb,
+                                "Refcount block #%llu has an invalid rf_fs_generation of #%u\n",
+                                (unsigned long long)bh->b_blocknr,
+                                le32_to_cpu(rb->rf_fs_generation));
+               goto out;
        }
-
-       return 0;
+out:
+       return rc;
 }
 
 static int ocfs2_read_refcount_block(struct ocfs2_caching_info *ci,
@@ -1102,12 +1100,10 @@ static int ocfs2_get_refcount_rec(struct ocfs2_caching_info *ci,
                el = &eb->h_list;
 
                if (el->l_tree_depth) {
-                       ocfs2_error(sb,
-                       "refcount tree %llu has non zero tree "
-                       "depth in leaf btree tree block %llu\n",
-                       (unsigned long long)ocfs2_metadata_cache_owner(ci),
-                       (unsigned long long)eb_bh->b_blocknr);
-                       ret = -EROFS;
+                       ret = ocfs2_error(sb,
+                                         "refcount tree %llu has non zero tree depth in leaf btree tree block %llu\n",
+                                         (unsigned long long)ocfs2_metadata_cache_owner(ci),
+                                         (unsigned long long)eb_bh->b_blocknr);
                        goto out;
                }
        }
@@ -2359,10 +2355,8 @@ static int ocfs2_mark_extent_refcounted(struct inode *inode,
                                           cpos, len, phys);
 
        if (!ocfs2_refcount_tree(OCFS2_SB(inode->i_sb))) {
-               ocfs2_error(inode->i_sb, "Inode %lu want to use refcount "
-                           "tree, but the feature bit is not set in the "
-                           "super block.", inode->i_ino);
-               ret = -EROFS;
+               ret = ocfs2_error(inode->i_sb, "Inode %lu want to use refcount tree, but the feature bit is not set in the super block\n",
+                                 inode->i_ino);
                goto out;
        }
 
@@ -2545,10 +2539,8 @@ int ocfs2_prepare_refcount_change_for_del(struct inode *inode,
        u64 start_cpos = ocfs2_blocks_to_clusters(inode->i_sb, phys_blkno);
 
        if (!ocfs2_refcount_tree(OCFS2_SB(inode->i_sb))) {
-               ocfs2_error(inode->i_sb, "Inode %lu want to use refcount "
-                           "tree, but the feature bit is not set in the "
-                           "super block.", inode->i_ino);
-               ret = -EROFS;
+               ret = ocfs2_error(inode->i_sb, "Inode %lu want to use refcount tree, but the feature bit is not set in the super block\n",
+                                 inode->i_ino);
                goto out;
        }
 
@@ -2672,11 +2664,10 @@ static int ocfs2_refcount_cal_cow_clusters(struct inode *inode,
                el = &eb->h_list;
 
                if (el->l_tree_depth) {
-                       ocfs2_error(inode->i_sb,
-                                   "Inode %lu has non zero tree depth in "
-                                   "leaf block %llu\n", inode->i_ino,
-                                   (unsigned long long)eb_bh->b_blocknr);
-                       ret = -EROFS;
+                       ret = ocfs2_error(inode->i_sb,
+                                         "Inode %lu has non zero tree depth in leaf block %llu\n",
+                                         inode->i_ino,
+                                         (unsigned long long)eb_bh->b_blocknr);
                        goto out;
                }
        }
@@ -3106,11 +3097,9 @@ static int ocfs2_clear_ext_refcount(handle_t *handle,
 
        index = ocfs2_search_extent_list(el, cpos);
        if (index == -1) {
-               ocfs2_error(sb,
-                           "Inode %llu has an extent at cpos %u which can no "
-                           "longer be found.\n",
-                           (unsigned long long)ino, cpos);
-               ret = -EROFS;
+               ret = ocfs2_error(sb,
+                                 "Inode %llu has an extent at cpos %u which can no longer be found\n",
+                                 (unsigned long long)ino, cpos);
                goto out;
        }
 
@@ -3376,10 +3365,8 @@ static int ocfs2_replace_cow(struct ocfs2_cow_context *context)
        struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);
 
        if (!ocfs2_refcount_tree(OCFS2_SB(inode->i_sb))) {
-               ocfs2_error(inode->i_sb, "Inode %lu want to use refcount "
-                           "tree, but the feature bit is not set in the "
-                           "super block.", inode->i_ino);
-               return -EROFS;
+               return ocfs2_error(inode->i_sb, "Inode %lu want to use refcount tree, but the feature bit is not set in the super block\n",
+                                  inode->i_ino);
        }
 
        ocfs2_init_dealloc_ctxt(&context->dealloc);
@@ -4419,8 +4406,9 @@ static int ocfs2_vfs_reflink(struct dentry *old_dentry, struct inode *dir,
        }
 
        mutex_lock(&inode->i_mutex);
-       dquot_initialize(dir);
-       error = ocfs2_reflink(old_dentry, dir, new_dentry, preserve);
+       error = dquot_initialize(dir);
+       if (!error)
+               error = ocfs2_reflink(old_dentry, dir, new_dentry, preserve);
        mutex_unlock(&inode->i_mutex);
        if (!error)
                fsnotify_create(dir, new_dentry);