----- 原始邮件 ----- > 发件人: "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() 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. > > .RS 1.0i > > .PD 0 > > .TP 0.4i > > -- > > 2.21.0 > > >