git: hammer2 - Fix growfs issue with multi-volume support + one other bug
Tomohiro Kusumi
kusumi.tomohiro at gmail.com
Tue Jun 15 11:43:08 PDT 2021
2021年6月15日(火) 5:20 Matthew Dillon <dillon at crater.dragonflybsd.org>:
>
>
> commit 0ed77c0451fd8246c4e40d07fd0562fc21eada3d
> Author: Matthew Dillon <dillon at apollo.backplane.com>
> Date: Mon Jun 14 13:16:59 2021 -0700
>
> hammer2 - Fix growfs issue with multi-volume support + one other bug
>
> * A hammer2 filesystem versioned for multi-volume support checks
> voldata.total_size, but growfs was never modified to adjust
> the total_size field.
>
> Fix this by having growfs properly adjust the total_size field.
multi-volumes mount still doesn't support growfs ioctl as it returns EOPNOTSUPP.
Since hmp->devvp is a root volume, growfs implementation works only if
hmp->devvp is the last one, which basically means it's a single volume
mount.
> * An older bug... growfs was not zeroing any new volume headers
> when extending the filesystem in such a way as additional volume
> headers are needed.
>
> Fix by properly zeroing these headers (mount will complain until
> hammer2 cycles through all four but that's ok).
>
> * Also fix an older bug, modifications to only the volume header could
> be flushed without bumping mirror_tid, causing confusion later
> on if the filesystem is unmounted and remounted.
>
> Fix this by having hammer2_voldata_modify() set mirror_tid in the
> vchain in the same manner that hammer2_chain_modify() does for
> a chain. e.g.:
>
> hmp->vchain.bref.mirror_tid = hmp->voldata.mirror_tid + 1;
>
> Summary of changes:
> sys/vfs/hammer2/hammer2_ioctl.c | 26 ++++++++++++++++++++++----
> sys/vfs/hammer2/hammer2_vfsops.c | 9 +++++++++
> 2 files changed, 31 insertions(+), 4 deletions(-)
>
> http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/0ed77c0451fd8246c4e40d07fd0562fc21eada3d
>
>
> --
> DragonFly BSD source repository
More information about the Commits
mailing list