Remove incorrect assertion
Commit 85703f6
added a new ASSERT to zfs_write() as part of the
cleanup which isn't correct in the case where multiple processes
are concurrently extending a file. The `zp->z_size` is updated
atomically while holding a range lock on only a portion of the
file. Therefore, it's possible for the file size to increase
after a same check is performed earlier in the loop causing this
ASSERT to fail. The code itself handles this case correctly so
only the invalid ASSERT needs to be removed.
Reviewed-by: Brian Atkinson <batkinson@lanl.gov>
Reviewed-by: Ryan Moeller <ryan@iXsystems.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #11235
This commit is contained in:
parent
783be694f1
commit
7cf4cd8246
|
@ -467,7 +467,6 @@ zfs_write(znode_t *zp, uio_t *uio, int ioflag, cred_t *cr)
|
||||||
} else {
|
} else {
|
||||||
/* Implied by abuf != NULL: */
|
/* Implied by abuf != NULL: */
|
||||||
ASSERT3S(n, >=, max_blksz);
|
ASSERT3S(n, >=, max_blksz);
|
||||||
ASSERT3S(woff, >=, zp->z_size);
|
|
||||||
ASSERT0(P2PHASE(woff, max_blksz));
|
ASSERT0(P2PHASE(woff, max_blksz));
|
||||||
/*
|
/*
|
||||||
* We can simplify nbytes to MIN(n, max_blksz) since
|
* We can simplify nbytes to MIN(n, max_blksz) since
|
||||||
|
|
Loading…
Reference in New Issue