]> git.proxmox.com Git - mirror_zfs.git/commitdiff
Remove incorrect assertion
authorBrian Behlendorf <behlendorf1@llnl.gov>
Tue, 24 Nov 2020 17:28:42 +0000 (09:28 -0800)
committerGitHub <noreply@github.com>
Tue, 24 Nov 2020 17:28:42 +0000 (09:28 -0800)
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

module/zfs/zfs_vnops.c

index ab7d9a0bc7d7e70d7b0b6b36069016487e615736..1f78b8ceebbbd1bbfa96294d8c85a90954b81b7a 100644 (file)
@@ -559,7 +559,6 @@ zfs_write(znode_t *zp, uio_t *uio, int ioflag, cred_t *cr)
                } else {
                        /* Implied by abuf != NULL: */
                        ASSERT3S(n, >=, max_blksz);
-                       ASSERT3S(woff, >=, zp->z_size);
                        ASSERT0(P2PHASE(woff, max_blksz));
                        /*
                         * We can simplify nbytes to MIN(n, max_blksz) since