|
@@ -797,6 +797,7 @@ struct ocfs2_write_ctxt {
|
|
struct ocfs2_cached_dealloc_ctxt w_dealloc;
|
|
struct ocfs2_cached_dealloc_ctxt w_dealloc;
|
|
|
|
|
|
struct list_head w_unwritten_list;
|
|
struct list_head w_unwritten_list;
|
|
|
|
+ unsigned int w_unwritten_count;
|
|
};
|
|
};
|
|
|
|
|
|
void ocfs2_unlock_and_free_pages(struct page **pages, int num_pages)
|
|
void ocfs2_unlock_and_free_pages(struct page **pages, int num_pages)
|
|
@@ -1386,6 +1387,7 @@ retry:
|
|
desc->c_clear_unwritten = 0;
|
|
desc->c_clear_unwritten = 0;
|
|
list_add_tail(&new->ue_ip_node, &oi->ip_unwritten_list);
|
|
list_add_tail(&new->ue_ip_node, &oi->ip_unwritten_list);
|
|
list_add_tail(&new->ue_node, &wc->w_unwritten_list);
|
|
list_add_tail(&new->ue_node, &wc->w_unwritten_list);
|
|
|
|
+ wc->w_unwritten_count++;
|
|
new = NULL;
|
|
new = NULL;
|
|
unlock:
|
|
unlock:
|
|
spin_unlock(&oi->ip_lock);
|
|
spin_unlock(&oi->ip_lock);
|
|
@@ -2256,7 +2258,7 @@ static int ocfs2_dio_wr_get_block(struct inode *inode, sector_t iblock,
|
|
ue->ue_phys = desc->c_phys;
|
|
ue->ue_phys = desc->c_phys;
|
|
|
|
|
|
list_splice_tail_init(&wc->w_unwritten_list, &dwc->dw_zero_list);
|
|
list_splice_tail_init(&wc->w_unwritten_list, &dwc->dw_zero_list);
|
|
- dwc->dw_zero_count++;
|
|
|
|
|
|
+ dwc->dw_zero_count += wc->w_unwritten_count;
|
|
}
|
|
}
|
|
|
|
|
|
ret = ocfs2_write_end_nolock(inode->i_mapping, pos, len, len, wc);
|
|
ret = ocfs2_write_end_nolock(inode->i_mapping, pos, len, len, wc);
|