The patch titled Subject: ocfs2-add-ocfs2_overwrite_io-function-v2 has been added to the -mm tree. Its filename is ocfs2-add-ocfs2_overwrite_io-function-v2.patch This patch should soon appear at http://ozlabs.org/~akpm/mmots/broken-out/ocfs2-add-ocfs2_overwrite_io-function-v2.patch and later at http://ozlabs.org/~akpm/mmotm/broken-out/ocfs2-add-ocfs2_overwrite_io-function-v2.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/SubmitChecklist when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Gang He <ghe@xxxxxxxx> Subject: ocfs2-add-ocfs2_overwrite_io-function-v2 Link: http://lkml.kernel.org/r/1511944612-9629-3-git-send-email-ghe@xxxxxxxx Signed-off-by: Gang He <ghe@xxxxxxxx> Cc: Mark Fasheh <mfasheh@xxxxxxxxxxx> Cc: Joel Becker <jlbec@xxxxxxxxxxxx> Cc: Junxiao Bi <junxiao.bi@xxxxxxxxxx> Cc: Joseph Qi <jiangqi903@xxxxxxxxx> Cc: Changwei Ge <ge.changwei@xxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- fs/ocfs2/extent_map.c | 38 ++++++-------------------------------- fs/ocfs2/extent_map.h | 4 ++-- 2 files changed, 8 insertions(+), 34 deletions(-) diff -puN fs/ocfs2/extent_map.c~ocfs2-add-ocfs2_overwrite_io-function-v2 fs/ocfs2/extent_map.c --- a/fs/ocfs2/extent_map.c~ocfs2-add-ocfs2_overwrite_io-function-v2 +++ a/fs/ocfs2/extent_map.c @@ -833,34 +833,17 @@ out: } /* Is IO overwriting allocated blocks? */ -int ocfs2_overwrite_io(struct inode *inode, u64 map_start, u64 map_len, - int wait) +int ocfs2_overwrite_io(struct inode *inode, struct buffer_head *di_bh, + u64 map_start, u64 map_len) { int ret = 0, is_last; u32 mapping_end, cpos; struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); - struct buffer_head *di_bh = NULL; struct ocfs2_extent_rec rec; - if (wait) - ret = ocfs2_inode_lock(inode, &di_bh, 0); - else - ret = ocfs2_try_inode_lock(inode, &di_bh, 0); - if (ret) - goto out; - - if (wait) - down_read(&OCFS2_I(inode)->ip_alloc_sem); - else { - if (!down_read_trylock(&OCFS2_I(inode)->ip_alloc_sem)) { - ret = -EAGAIN; - goto out_unlock1; - } - } - if ((OCFS2_I(inode)->ip_dyn_features & OCFS2_INLINE_DATA_FL) && ((map_start + map_len) <= i_size_read(inode))) - goto out_unlock2; + goto out; cpos = map_start >> osb->s_clustersize_bits; mapping_end = ocfs2_clusters_for_bytes(inode->i_sb, @@ -871,7 +854,7 @@ int ocfs2_overwrite_io(struct inode *ino NULL, &rec, &is_last); if (ret) { mlog_errno(ret); - goto out_unlock2; + goto out; } if (rec.e_blkno == 0ULL) @@ -885,18 +868,9 @@ int ocfs2_overwrite_io(struct inode *ino } if (cpos < mapping_end) - ret = 1; - -out_unlock2: - brelse(di_bh); - - up_read(&OCFS2_I(inode)->ip_alloc_sem); - -out_unlock1: - ocfs2_inode_unlock(inode, 0); - + ret = -EAGAIN; out: - return (ret ? 0 : 1); + return ret; } int ocfs2_seek_data_hole_offset(struct file *file, loff_t *offset, int whence) diff -puN fs/ocfs2/extent_map.h~ocfs2-add-ocfs2_overwrite_io-function-v2 fs/ocfs2/extent_map.h --- a/fs/ocfs2/extent_map.h~ocfs2-add-ocfs2_overwrite_io-function-v2 +++ a/fs/ocfs2/extent_map.h @@ -53,8 +53,8 @@ int ocfs2_extent_map_get_blocks(struct i int ocfs2_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, u64 map_start, u64 map_len); -int ocfs2_overwrite_io(struct inode *inode, u64 map_start, u64 map_len, - int wait); +int ocfs2_overwrite_io(struct inode *inode, struct buffer_head *di_bh, + u64 map_start, u64 map_len); int ocfs2_seek_data_hole_offset(struct file *file, loff_t *offset, int origin); _ Patches currently in -mm which might be from ghe@xxxxxxxx are ocfs2-get-rid-of-ocfs2_is_o2cb_active-function.patch ocfs2-give-an-obvious-tip-for-dismatch-cluster-names.patch ocfs2-give-an-obvious-tip-for-dismatch-cluster-names-v2.patch ocfs2-move-some-definitions-to-header-file.patch ocfs2-fix-some-small-problems.patch ocfs2-add-kobject-for-online-file-check.patch ocfs2-add-duplicative-ino-number-check.patch ocfs2-add-ocfs2_try_rw_lock-and-ocfs2_try_inode_lock.patch ocfs2-add-ocfs2_try_rw_lock-and-ocfs2_try_inode_lock-v2.patch ocfs2-add-ocfs2_overwrite_io-function.patch ocfs2-add-ocfs2_overwrite_io-function-v2.patch ocfs2-nowait-aio-support.patch ocfs2-nowait-aio-support-v2.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html