[Bug 261731] geom_gate needs to support BIO_ORDERED
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 05 Feb 2022 08:38:12 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=261731
Bug ID: 261731
Summary: geom_gate needs to support BIO_ORDERED
Product: Base System
Version: Unspecified
Hardware: Any
OS: Any
Status: New
Severity: Affects Only Me
Priority: ---
Component: kern
Assignee: bugs@FreeBSD.org
Reporter: peterj@FreeBSD.org
Discussion in the thread beginning
https://lists.freebsd.org/archives/freebsd-fs/2022-January/000688.html has
revealed that at least UFS relies on support of BIO_ORDERED for correct
operation but examination of sys/geom/gate/g_gate.c shows that geom_gate
ignores BIO_ORDERED. This could lead to potential filesystem corruption.
BIO_ORDERED forms a barrier on BIO operations: An operation marked with
BIO_ORDERED must not be executed until all prior operations have been retired
and no operations after that operation can commence before the BIO_ORDERED
operation has been written to stable (non-volatile) storage and retired. The
requirement that the operation be written to stable storage means that the flag
must be forwarded to the userland daemon for handling.
There are no other bio_flags that appear to need explicit support within
geom_gate.
Fixing this bug therefore requires:
1) An enhancement to struct g_gate_ctl_io to support passing BIO_ORDERED to
userland. This could be achieved by:
a) Adding a new field. This would not change the structure size on 64-bit
architectures.
b) Split the existing gctl_cmd field into 2 uint16_t fields (which matches
struct bio). This would not change the structure size.
c) Treating BIO_ORDERED as a flag that can be OR'd into the existing
gctl_cmd field. This would not change the structure size.
2) Updating userland geom_gate clients, their network protocols and peer
daemons. Within the base system, the clients are hastd, ggatec and ggatel.
--
You are receiving this mail because:
You are the assignee for the bug.