aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/ocfs2/alloc.c74
-rw-r--r--fs/ocfs2/alloc.h4
2 files changed, 0 insertions, 78 deletions
diff --git a/fs/ocfs2/alloc.c b/fs/ocfs2/alloc.c
index 8ec418dd9e36..e4984e259cb6 100644
--- a/fs/ocfs2/alloc.c
+++ b/fs/ocfs2/alloc.c
@@ -565,7 +565,6 @@ static inline int ocfs2_et_sanity_check(struct ocfs2_extent_tree *et)
565 return ret; 565 return ret;
566} 566}
567 567
568static void ocfs2_free_truncate_context(struct ocfs2_truncate_context *tc);
569static int ocfs2_cache_extent_block_free(struct ocfs2_cached_dealloc_ctxt *ctxt, 568static int ocfs2_cache_extent_block_free(struct ocfs2_cached_dealloc_ctxt *ctxt,
570 struct ocfs2_extent_block *eb); 569 struct ocfs2_extent_block *eb);
571static void ocfs2_adjust_rightmost_records(handle_t *handle, 570static void ocfs2_adjust_rightmost_records(handle_t *handle,
@@ -7142,64 +7141,6 @@ bail:
7142} 7141}
7143 7142
7144/* 7143/*
7145 * Expects the inode to already be locked.
7146 */
7147int ocfs2_prepare_truncate(struct ocfs2_super *osb,
7148 struct inode *inode,
7149 struct buffer_head *fe_bh,
7150 struct ocfs2_truncate_context **tc)
7151{
7152 int status;
7153 unsigned int new_i_clusters;
7154 struct ocfs2_dinode *fe;
7155 struct ocfs2_extent_block *eb;
7156 struct buffer_head *last_eb_bh = NULL;
7157
7158 mlog_entry_void();
7159
7160 *tc = NULL;
7161
7162 new_i_clusters = ocfs2_clusters_for_bytes(osb->sb,
7163 i_size_read(inode));
7164 fe = (struct ocfs2_dinode *) fe_bh->b_data;
7165
7166 mlog(0, "fe->i_clusters = %u, new_i_clusters = %u, fe->i_size ="
7167 "%llu\n", le32_to_cpu(fe->i_clusters), new_i_clusters,
7168 (unsigned long long)le64_to_cpu(fe->i_size));
7169
7170 *tc = kzalloc(sizeof(struct ocfs2_truncate_context), GFP_KERNEL);
7171 if (!(*tc)) {
7172 status = -ENOMEM;
7173 mlog_errno(status);
7174 goto bail;
7175 }
7176 ocfs2_init_dealloc_ctxt(&(*tc)->tc_dealloc);
7177
7178 if (fe->id2.i_list.l_tree_depth) {
7179 status = ocfs2_read_extent_block(INODE_CACHE(inode),
7180 le64_to_cpu(fe->i_last_eb_blk),
7181 &last_eb_bh);
7182 if (status < 0) {
7183 mlog_errno(status);
7184 goto bail;
7185 }
7186 eb = (struct ocfs2_extent_block *) last_eb_bh->b_data;
7187 }
7188
7189 (*tc)->tc_last_eb_bh = last_eb_bh;
7190
7191 status = 0;
7192bail:
7193 if (status < 0) {
7194 if (*tc)
7195 ocfs2_free_truncate_context(*tc);
7196 *tc = NULL;
7197 }
7198 mlog_exit_void();
7199 return status;
7200}
7201
7202/*
7203 * 'start' is inclusive, 'end' is not. 7144 * 'start' is inclusive, 'end' is not.
7204 */ 7145 */
7205int ocfs2_truncate_inline(struct inode *inode, struct buffer_head *di_bh, 7146int ocfs2_truncate_inline(struct inode *inode, struct buffer_head *di_bh,
@@ -7273,18 +7214,3 @@ out_commit:
7273out: 7214out:
7274 return ret; 7215 return ret;
7275} 7216}
7276
7277static void ocfs2_free_truncate_context(struct ocfs2_truncate_context *tc)
7278{
7279 /*
7280 * The caller is responsible for completing deallocation
7281 * before freeing the context.
7282 */
7283 if (tc->tc_dealloc.c_first_suballocator != NULL)
7284 mlog(ML_NOTICE,
7285 "Truncate completion has non-empty dealloc context\n");
7286
7287 brelse(tc->tc_last_eb_bh);
7288
7289 kfree(tc);
7290}
diff --git a/fs/ocfs2/alloc.h b/fs/ocfs2/alloc.h
index 55762b554b99..3bd08a03251c 100644
--- a/fs/ocfs2/alloc.h
+++ b/fs/ocfs2/alloc.h
@@ -228,10 +228,6 @@ struct ocfs2_truncate_context {
228 228
229int ocfs2_zero_range_for_truncate(struct inode *inode, handle_t *handle, 229int ocfs2_zero_range_for_truncate(struct inode *inode, handle_t *handle,
230 u64 range_start, u64 range_end); 230 u64 range_start, u64 range_end);
231int ocfs2_prepare_truncate(struct ocfs2_super *osb,
232 struct inode *inode,
233 struct buffer_head *fe_bh,
234 struct ocfs2_truncate_context **tc);
235int ocfs2_commit_truncate(struct ocfs2_super *osb, 231int ocfs2_commit_truncate(struct ocfs2_super *osb,
236 struct inode *inode, 232 struct inode *inode,
237 struct buffer_head *di_bh); 233 struct buffer_head *di_bh);