Subject: bug#6131: [PATCH]: fiemap support for efficient sparse file copy

From: Jim Meyering <[email-masked]>
Date: Tue, 28 Sep 2010 10:27:16 +0200

jeff.liu wrote:
> jeff.liu wrote:
>> Hi Jim,
>>
>> Thanks for your prompt response, I will fix this issue when all review done.
> Hi Jim,
>
> For my current implementation, I just have another thought to remove the "char *fname" from struct
> extent_scan, and add a new item "int errno" to save the errno set by ioctl(2) or lseek(2) if either
> call failed.
> at first, I am intended to use "char *fname" for the debugging purpose inside, however, maybe its
> better to do such things outside of the module according to the return value and errno. this change
> can not only reduce the memory allocation for 'fname' but also make a neatly open_extent_scan()
> interface.
>
> /* Structure used to reserve extent scan information per file.  */
> struct extent_scan
> {
>  ....
>   int errno;
>   ....
> };
>
> void
> open_extent_scan (int src_fd, struct extent_scan **scan);
>
>
> Is it better?

That would be better.
Since there is only one diagnostic using that file name
you can do the same from the caller.

In fact, why store errno in that struct at all?
Can't you just ensure that errno is set to the proper value when it fails?