[Bug 235473] gconcat online append
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Sun Feb 3 22:49:54 UTC 2019
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=235473
Bug ID: 235473
Summary: gconcat online append
Product: Base System
Version: CURRENT
Hardware: Any
OS: Any
Status: New
Severity: Affects Only Me
Priority: ---
Component: kern
Assignee: bugs at FreeBSD.org
Reporter: noah.bergbauer at tum.de
Created attachment 201701
--> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=201701&action=edit
Initial patch draft
It really shouldn't be necessary to rebuild a gconcat volume from scratch just
to add another disk. This is particularly inconvenient because it forces one to
remount/restart any filesystems/geoms stacked on top of gconcat for no apparent
reason.
I attached my first attempt at hacking on this. It works! But since I have
never worked with geoms (or rather any part of the kernel at all) before I am
very unsure about correctness, especially when it comes to locking and race
conditions in general.
Since the existing mutex appears to have a very specific purpose, I created a
new one. One obvious race is keeping the `g_access` levels in sync, so I'm
locking over there as well. I would like to avoid locking a mutex in the
regular IO path (g_concat_start) as this looks like a performance footgun to
me, but given that I have to do array reallocation it seems to me that the only
alternative is to leak memory - perhaps an rwlock would be appropriate to solve
this?
Even after using FreeBSD for several years I never understood the hardcode
option so I didn't implement that either. Incrementing G_CONCAT_VERSION didn't
work for some reason (userland tool wouldn't pick up the new version), did I
miss something? Also I still need to update the manpage.
I mean, the patch is quite literally a copy-pasted mix from gmultipath
(resize/insert capability), gmirror (metadata update) and gconcat itself. It
works but it really needs someone who actually knows how this stuff works to
advise me on how to proceed.
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-bugs
mailing list