FreeBSD: Prevent a NULL reference in zvol_cdev_open

Check if the ZVOL has been written before calling zil_async_to_sync.
The ZIL will be opened on the first write, not earlier.

Reviewed-by: Ryan Moeller <ryan@iXsystems.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Mariusz Zaborski <oshogbo@vexillium.org>
Closes #11152
This commit is contained in:
Mariusz Zaborski 2020-11-06 02:02:19 +01:00 committed by Brian Behlendorf
parent ef648fec0e
commit 957b4e9fbd
1 changed files with 2 additions and 1 deletions

View File

@ -891,7 +891,8 @@ zvol_cdev_open(struct cdev *dev, int flags, int fmt, struct thread *td)
if (flags & (FSYNC | FDSYNC)) { if (flags & (FSYNC | FDSYNC)) {
zsd = &zv->zv_zso->zso_dev; zsd = &zv->zv_zso->zso_dev;
zsd->zsd_sync_cnt++; zsd->zsd_sync_cnt++;
if (zsd->zsd_sync_cnt == 1) if (zsd->zsd_sync_cnt == 1 &&
(zv->zv_flags & ZVOL_WRITTEN_TO) != 0)
zil_async_to_sync(zv->zv_zilog, ZVOL_OBJ); zil_async_to_sync(zv->zv_zilog, ZVOL_OBJ);
} }