Skip to content

Commit 5b0fbe7

Browse files
committed
Update Windows README milestones and design issues
Mark completed items: async vdev_disk.c I/O, posix.c, DriveLetter dataset property, ZFS delegation, Windows SD/ACL integration, UAC elevation relay, xattrs and alternate data streams. Update design issues: remove resolved items (vdev_disk.c threading, PsGetCurrentThreadId, posix.c, DriveLetter). Retain EFI label workaround as an open item. Add stream rename and console colour as known gaps. Signed-off-by: Jorgen Lundman <lundman@lundman.net>
1 parent c83eb3c commit 5b0fbe7

1 file changed

Lines changed: 25 additions & 25 deletions

File tree

module/os/windows/README.md

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -256,43 +256,43 @@ Windows Updates run, you can disable those in gpedit.msc
256256

257257
✅ Compile ZFS on top of ZFS
258258

259-
❎ Scrooge McDuck style swim in cash
259+
✅ Async vdev_disk.c I/O
260260

261-
---
261+
✅ posix.c substantially complete
262262

263-
# Design issues that need addressing.
263+
✅ DriveLetter dataset property (zfs set driveletter=Z pool)
264+
* Assigned first-available letter if set to "?:"
265+
* Imported Unix pools default to drive-letter mount
264266

265-
* Windows does not handle EFI labels, for now they are parsed with
266-
libefi, and we send offset and size with the filename, that both
267-
libzfs and kernel will parse out and use. This works for a proof
268-
of concept.
267+
✅ ZFS delegation (zfs allow / zfs unallow)
269268

270-
Possibly a more proper solution would be to write a thin virtual
271-
hard disk driver, which reads the EFI label and present just the
272-
partitions.
269+
✅ Windows Security Descriptor / ACL integration
270+
* SeAccessCheck on parent SD authoritative for IRP_MJ_CREATE
271+
* ZFS POSIX ACL checked via uid=0 credential bypass
273272

274-
* vdev_disk.c spawns a thread to get around that IoCompletionRoutine
275-
is called in a different context, to sleep until signalled. Is there
276-
a better way to do async in Windows?
273+
✅ UAC elevation relay for privileged operations
277274

278-
* ThreadId should be checked, using PsGetCurrentThreadId() but
279-
it makes zio_taskq_member(taskq_member()) crash. Investigate.
275+
✅ xattrs and alternate data streams (NTFS ADS)
276+
* Stream rename not yet supported
280277

281-
* Functions in posix.c need sustenance.
278+
❎ Scrooge McDuck style swim in cash
282279

283-
Add dataset property DriveLetter, which is ignored on Unix system.
284-
So for a simple drive letter dataset:
280+
---
285281

286-
zfs set driveletter=Z pool
282+
# Design issues that need addressing.
287283

288-
The default creating of a new pool, AND, importing a UNIX pool, would
289-
set the root dataset to
284+
* Windows does not natively handle EFI disk labels. The current
285+
workaround encodes partition offset and size in the device filename,
286+
which is parsed by both libzfs and the kernel driver. This is
287+
functional but not ideal; a cleaner solution would be a thin virtual
288+
disk driver that presents EFI partitions directly to Windows. This
289+
remains an open item.
290290

291-
driveletter=?:
291+
* Alternate data streams (xattrs / NTFS ADS) are implemented.
292+
Renaming streams is not yet supported.
292293

293-
So it is assigned first-available drive letter. All lower datasets
294-
will be mounted inside the drive letter. If pool's WinDriveLetter is
295-
not set, it will mount "/pool" as "C:/pool".
294+
* cmdbox/console text colour attributes (ANSI escape sequences) are
295+
not yet wired up in posix.c.
296296

297297
---
298298

0 commit comments

Comments
 (0)