On 2019/1/9 12:42, Jaegeuk Kim wrote:
> On 01/09, Chao Yu wrote:
>> On 2019/1/9 7:46, Jaegeuk Kim wrote:
>>> On 12/10, Chao Yu wrote:
>>>> stat() can fail due to a lot of reasons, let f2fs_dev_is_umounted()
>>>> detect such error and handle it correctly.
>>>>
>>>> Signed-off-by: Chao Yu <yuch...@huawei.com>
>>>> ---
>>>>  lib/libf2fs.c | 9 ++++++++-
>>>>  1 file changed, 8 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/lib/libf2fs.c b/lib/libf2fs.c
>>>> index c692bf2da635..6a1040feff32 100644
>>>> --- a/lib/libf2fs.c
>>>> +++ b/lib/libf2fs.c
>>>> @@ -713,7 +713,14 @@ int f2fs_dev_is_umounted(char *path)
>>>>    st_buf = malloc(sizeof(struct stat));
>>>>    ASSERT(st_buf);
>>>>  
>>>> -  if (stat(path, st_buf) == 0 && S_ISBLK(st_buf->st_mode)) {
>>>> +  ret = stat(path, st_buf);
>>>
>>> We have to allow creating non-existing image file to build userdata.img. 
>>> Can we
>>> check its errno?
>>
>> You mean sload flow? so how about?
> 
> mkfs.f2fs on non-existing image file?

That's not allowed as e2fsprogs does?

mkfs.ext4 /home/image/img
mke2fs 1.44.4 (18-Aug-2018)
The file /home/image/img does not exist and no size was specified.

> 
>>
>> if (ret) {
>>      if (errno == ENOENT && c.func == SLOAD)
>>              return 0;
>>      MSG(0, "\tError: stat %s failed!\n", path);
>>      free(st_buf);
>>      return -1;
>> }
>>
>> Thanks,
>>
>>>
>>>> +  if (ret) {
>>>> +          MSG(0, "\tError: stat %s failed!\n", path);
>>>> +          free(st_buf);
>>>> +          return -1;
>>>> +  }
>>>> +
>>>> +  if (S_ISBLK(st_buf->st_mode)) {
>>>>            int fd = open(path, O_RDONLY | O_EXCL);
>>>>  
>>>>            if (fd >= 0) {
>>>> -- 
>>>> 2.18.0.rc1
>>>
>>> .
>>>
> 
> .
> 



_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to