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