[Ocfs2-tools-devel] [PATCH 14/44] ocfs2: Integrate CoW in file write.
Tao Ma
tao.ma at oracle.com
Sun Jan 10 17:35:50 PST 2010
Joel Becker wrote:
> On Mon, Dec 28, 2009 at 05:00:59PM +0800, Tao Ma wrote:
>> Call ocfs2_refcount_cow first to CoW refcounted clusters
>> in ocfs2_file_block_write.
>>
>> Signed-off-by: Tao Ma <tao.ma at oracle.com>
>> ---
>> libocfs2/fileio.c | 9 +++++++++
>> 1 files changed, 9 insertions(+), 0 deletions(-)
>>
>> diff --git a/libocfs2/fileio.c b/libocfs2/fileio.c
>> index c4664ec..78ef5f5 100644
>> --- a/libocfs2/fileio.c
>> +++ b/libocfs2/fileio.c
>> @@ -33,6 +33,7 @@
>> #include <inttypes.h>
>>
>> #include "ocfs2/ocfs2.h"
>> +#include "refcount.h"
>>
>> struct read_whole_context {
>> char *buf;
>> @@ -325,6 +326,14 @@ static errcode_t ocfs2_file_block_write(ocfs2_cached_inode *ci,
>> if (v_blkno + wanted_blocks > num_blocks)
>> wanted_blocks = (uint32_t) (num_blocks - v_blkno);
>>
>> + cluster_begin = ocfs2_blocks_to_clusters(fs, v_blkno);
>> + cluster_end = ocfs2_blocks_to_clusters(fs,
>> + v_blkno + wanted_blocks - 1);
>> + n_clusters = cluster_end - cluster_begin + 1;
>> + ret = ocfs2_refcount_cow(ci, cluster_begin, n_clusters, UINT_MAX);
>> + if (ret)
>> + return ret;
>
> I'd say check for feature(REFCOUNT) and dyn_flags&REFCOUNT
> before calling ocfs2_refcount_cow(). Why do the NOOP work?
you are absolutely right.
Regards,
Tao
More information about the Ocfs2-tools-devel
mailing list