* [PATCH] btrfs-progs: mkfs/rootdir: Don't follow symbolic link when calcuating size
@ 2018-03-28 6:39 Qu Wenruo
2018-03-28 14:55 ` David Sterba
0 siblings, 1 reply; 3+ messages in thread
From: Qu Wenruo @ 2018-03-28 6:39 UTC (permalink / raw)
To: linux-btrfs
[BUG]
If we have a symbolic link in rootdir pointing to non-existing location,
mkfs.btrfs --rootdir will just fail:
------
$ mkfs.btrfs -f --rootdir /tmp/rootdir/ /dev/data/btrfs
btrfs-progs v4.15.1
See http://btrfs.wiki.kernel.org for more information.
ERROR: ftw subdir walk of /tmp/rootdir/ failed: No such file or directory
------
[CAUSE]
Commit 599a0abed564 ("btrfs-progs: mkfs/rootdir: Use over-reserve method
to make size estimate easier") add extra ftw walk to estimate the
filesystem size.
Such default ftw walk will follow symbolic link and gives ENOENT error.
[FIX]
Use nftw() to specify FTW_PHYS so we won't follow symbolic link for size
calculation.
Reported-by: Alexander Kanavin <alexander.kanavin@intel.com>
Fixes: 599a0abed564 ("btrfs-progs: mkfs/rootdir: Use over-reserve method to make size estimate easier")
Signed-off-by: Qu Wenruo <wqu@suse.com>
---
mkfs/rootdir.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/mkfs/rootdir.c b/mkfs/rootdir.c
index a1d223a2408a..33c3ff1e18cf 100644
--- a/mkfs/rootdir.c
+++ b/mkfs/rootdir.c
@@ -696,7 +696,7 @@ out:
}
static int ftw_add_entry_size(const char *fpath, const struct stat *st,
- int type)
+ int type, struct FTW *ftwbuf)
{
/*
* Failed to read the directory, mostly due to EPERM. Abort ASAP, so
@@ -731,7 +731,12 @@ u64 btrfs_mkfs_size_dir(const char *dir_name, u32 sectorsize, u64 min_dev_size,
fs_block_size = sectorsize;
ftw_data_size = 0;
ftw_meta_nr_inode = 0;
- ret = ftw(dir_name, ftw_add_entry_size, 10);
+
+ /*
+ * Symbolic link is not followed when creating files, so no need to
+ * follow them here.
+ */
+ ret = nftw(dir_name, ftw_add_entry_size, 10, FTW_PHYS);
if (ret < 0) {
error("ftw subdir walk of %s failed: %s", dir_name,
strerror(errno));
--
2.16.2
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] btrfs-progs: mkfs/rootdir: Don't follow symbolic link when calcuating size
2018-03-28 6:39 [PATCH] btrfs-progs: mkfs/rootdir: Don't follow symbolic link when calcuating size Qu Wenruo
@ 2018-03-28 14:55 ` David Sterba
2018-03-29 1:09 ` Qu Wenruo
0 siblings, 1 reply; 3+ messages in thread
From: David Sterba @ 2018-03-28 14:55 UTC (permalink / raw)
To: Qu Wenruo; +Cc: linux-btrfs
On Wed, Mar 28, 2018 at 02:39:09PM +0800, Qu Wenruo wrote:
> [BUG]
> If we have a symbolic link in rootdir pointing to non-existing location,
> mkfs.btrfs --rootdir will just fail:
> ------
> $ mkfs.btrfs -f --rootdir /tmp/rootdir/ /dev/data/btrfs
> btrfs-progs v4.15.1
> See http://btrfs.wiki.kernel.org for more information.
>
> ERROR: ftw subdir walk of /tmp/rootdir/ failed: No such file or directory
> ------
>
> [CAUSE]
> Commit 599a0abed564 ("btrfs-progs: mkfs/rootdir: Use over-reserve method
> to make size estimate easier") add extra ftw walk to estimate the
> filesystem size.
>
> Such default ftw walk will follow symbolic link and gives ENOENT error.
>
> [FIX]
> Use nftw() to specify FTW_PHYS so we won't follow symbolic link for size
> calculation.
>
> Reported-by: Alexander Kanavin <alexander.kanavin@intel.com>
> Fixes: 599a0abed564 ("btrfs-progs: mkfs/rootdir: Use over-reserve method to make size estimate easier")
> Signed-off-by: Qu Wenruo <wqu@suse.com>
Applied, thanks. Can you please write a testcase for that?
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] btrfs-progs: mkfs/rootdir: Don't follow symbolic link when calcuating size
2018-03-28 14:55 ` David Sterba
@ 2018-03-29 1:09 ` Qu Wenruo
0 siblings, 0 replies; 3+ messages in thread
From: Qu Wenruo @ 2018-03-29 1:09 UTC (permalink / raw)
To: dsterba, linux-btrfs
[-- Attachment #1.1: Type: text/plain, Size: 1225 bytes --]
On 2018年03月28日 22:55, David Sterba wrote:
> On Wed, Mar 28, 2018 at 02:39:09PM +0800, Qu Wenruo wrote:
>> [BUG]
>> If we have a symbolic link in rootdir pointing to non-existing location,
>> mkfs.btrfs --rootdir will just fail:
>> ------
>> $ mkfs.btrfs -f --rootdir /tmp/rootdir/ /dev/data/btrfs
>> btrfs-progs v4.15.1
>> See http://btrfs.wiki.kernel.org for more information.
>>
>> ERROR: ftw subdir walk of /tmp/rootdir/ failed: No such file or directory
>> ------
>>
>> [CAUSE]
>> Commit 599a0abed564 ("btrfs-progs: mkfs/rootdir: Use over-reserve method
>> to make size estimate easier") add extra ftw walk to estimate the
>> filesystem size.
>>
>> Such default ftw walk will follow symbolic link and gives ENOENT error.
>>
>> [FIX]
>> Use nftw() to specify FTW_PHYS so we won't follow symbolic link for size
>> calculation.
>>
>> Reported-by: Alexander Kanavin <alexander.kanavin@intel.com>
>> Fixes: 599a0abed564 ("btrfs-progs: mkfs/rootdir: Use over-reserve method to make size estimate easier")
>> Signed-off-by: Qu Wenruo <wqu@suse.com>
>
> Applied, thanks. Can you please write a testcase for that?
>
Sorry, I planned but forgot that.
Will come soon.
Thanks,
Qu
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2018-03-29 1:09 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-28 6:39 [PATCH] btrfs-progs: mkfs/rootdir: Don't follow symbolic link when calcuating size Qu Wenruo
2018-03-28 14:55 ` David Sterba
2018-03-29 1:09 ` Qu Wenruo
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.