----- 原始邮件 ----- > 发件人: "Zorro Lang" <zlang@xxxxxxxxxx> > 收件人: "Jianhong Yin" <jiyin@xxxxxxxxxx> > 抄送: "Jianhong.Yin" <yin-jianhong@xxxxxxx>, linux-xfs@xxxxxxxxxxxxxxx > 发送时间: 星期五, 2019年 9 月 06日 上午 8:53:56 > 主题: Re: [PATCH 2/2] xfsprogs: copy_range: let = (src_size - src_offset) if len omitted > > On Thu, Sep 05, 2019 at 04:13:15PM +0800, Zorro Lang wrote: > > On Thu, Sep 05, 2019 at 02:04:31AM -0400, Jianhong Yin wrote: > > > > > > > > > ----- 原始邮件 ----- > > > > 发件人: "Zorro Lang" <zlang@xxxxxxxxxx> > > > > 收件人: "Jianhong.Yin" <yin-jianhong@xxxxxxx> > > > > 抄送: linux-xfs@xxxxxxxxxxxxxxx, jiyin@xxxxxxxxxx > > > > 发送时间: 星期四, 2019年 9 月 05日 下午 2:01:32 > > > > 主题: Re: [PATCH 2/2] xfsprogs: copy_range: let = (src_size - src_offset) > > > > if len omitted > > > > > > > > On Thu, Sep 05, 2019 at 01:31:52PM +0800, Jianhong.Yin wrote: > > > > > add update man page. > > > > > > > > > > Signed-off-by: Jianhong Yin <yin-jianhong@xxxxxxx> > > > > > --- > > > > > > > > I think these can be in one patch, but anyway... > > > > > > > > > io/copy_file_range.c | 7 +++++-- > > > > > man/man8/xfs_io.8 | 9 +++------ > > > > > 2 files changed, 8 insertions(+), 8 deletions(-) > > > > > > > > > > diff --git a/io/copy_file_range.c b/io/copy_file_range.c > > > > > index 283f5094..02d50e53 100644 > > > > > --- a/io/copy_file_range.c > > > > > +++ b/io/copy_file_range.c > > > > > @@ -72,6 +72,7 @@ copy_range_f(int argc, char **argv) > > > > > long long src = 0; > > > > > long long dst = 0; > > > > > size_t len = 0; > > > > > + int len_ommited = 1; > > > > > int opt; > > > > > int ret; > > > > > int fd; > > > > > @@ -103,6 +104,7 @@ copy_range_f(int argc, char **argv) > > > > > printf(_("invalid length -- %s\n"), optarg); > > > > > return 0; > > > > > } > > > > > + len_ommited = 0; > > > > > break; > > > > > case 'f': > > > > > src_file_nr = atoi(argv[1]); > > > > > @@ -128,7 +130,7 @@ copy_range_f(int argc, char **argv) > > > > > fd = filetable[src_file_nr].fd; > > > > > } > > > > > > > > > > - if (src == 0 && dst == 0 && len == 0) { > > > > > + if (len_ommited) { > > > > > off64_t sz; > > > > > > > > > > sz = copy_src_filesize(fd); > > > > > @@ -136,7 +138,8 @@ copy_range_f(int argc, char **argv) > > > > > ret = 1; > > > > > goto out; > > > > > } > > > > > - len = sz; > > > > > + if (sz > src) > > > > > + len = sz - src; > > > > > > > > What about file size < offset? > > > just keep the default value 0, > > > > > > because QE/tester might want to see what happen > > > when give an offset(> fsize) to copy_file_range() > > > #note: This tool was made for test/debug copy_file_range() > > > > Hmm, that's a good reason:) > > > > > > > > Jianhong > > > > > > > > > > > Maybe we can do like this?: > > > > > > > > sz = copy_src_filesize(fd); > > > > if (sz < 0 || (unsigned long long)sz > SIZE_MAX || sz < src) { > > > > ret = 1; > > > > goto out; > > > > } > > > > len = sz - src; > > > > > > > > Thanks, > > > > Zorro > > > > > > > > > } > > > > > > > > > > ret = copy_file_range_cmd(fd, &src, &dst, len); > > > > > diff --git a/man/man8/xfs_io.8 b/man/man8/xfs_io.8 > > > > > index 6e064bdd..f5f1c4fc 100644 > > > > > --- a/man/man8/xfs_io.8 > > > > > +++ b/man/man8/xfs_io.8 > > > > > @@ -669,13 +669,10 @@ The source must be specified either by path > > > > > or as another open file > > > > > .RB ( \-f ). > > > > > If > > > > > -.I src_file > > > > > -.IR src_offset , > > > > > -.IR dst_offset , > > > > > -and > > > > > .I length > > > > > -are omitted the contents of src_file will be copied to the beginning > > > > > of > > > > > the > > > > > -open file, overwriting any data already there. > > > > > +is omitted will use > > > > > +.I src_file > > > > > +(file size - src_offset) instead. > > BTW, When I tried to merge this patch, I got below warning: > > Applying: xfsprogs: copy_range: let = (src_size - src_offset) if len > omitted > .git/rebase-apply/patch:61: trailing whitespace. > .I src_file > warning: 1 line adds whitespace errors. Thanks Zorro, will fix it. Jianhong > > Thanks, > Zorro > > > > > > .RS 1.0i > > > > > .PD 0 > > > > > .TP 0.4i > > > > > -- > > > > > 2.21.0 > > > > > > > > > >