@@ -337,6 +337,10 @@ zfs_write(znode_t *zp, uio_t *uio, int ioflag, cred_t *cr)
337
337
uint64_t end_size = MAX (zp -> z_size , woff + n );
338
338
zilog_t * zilog = zfsvfs -> z_log ;
339
339
340
+ const uint64_t uid = KUID_TO_SUID (ZTOUID (zp ));
341
+ const uint64_t gid = KGID_TO_SGID (ZTOGID (zp ));
342
+ const uint64_t projid = zp -> z_projid ;
343
+
340
344
/*
341
345
* Write the file in reasonable size chunks. Each chunk is written
342
346
* in a separate transaction; this keeps the intent log records small
@@ -345,13 +349,11 @@ zfs_write(znode_t *zp, uio_t *uio, int ioflag, cred_t *cr)
345
349
while (n > 0 ) {
346
350
woff = uio -> uio_loffset ;
347
351
348
- if (zfs_id_overblockquota (zfsvfs , DMU_USERUSED_OBJECT ,
349
- KUID_TO_SUID (ZTOUID (zp ))) ||
350
- zfs_id_overblockquota (zfsvfs , DMU_GROUPUSED_OBJECT ,
351
- KGID_TO_SGID (ZTOGID (zp ))) ||
352
- (zp -> z_projid != ZFS_DEFAULT_PROJID &&
352
+ if (zfs_id_overblockquota (zfsvfs , DMU_USERUSED_OBJECT , uid ) ||
353
+ zfs_id_overblockquota (zfsvfs , DMU_GROUPUSED_OBJECT , gid ) ||
354
+ (projid != ZFS_DEFAULT_PROJID &&
353
355
zfs_id_overblockquota (zfsvfs , DMU_PROJECTUSED_OBJECT ,
354
- zp -> z_projid ))) {
356
+ projid ))) {
355
357
error = SET_ERROR (EDQUOT );
356
358
break ;
357
359
}
@@ -515,7 +517,6 @@ zfs_write(znode_t *zp, uio_t *uio, int ioflag, cred_t *cr)
515
517
* user 0 is not an ephemeral uid.
516
518
*/
517
519
mutex_enter (& zp -> z_acl_lock );
518
- uint32_t uid = KUID_TO_SUID (ZTOUID (zp ));
519
520
if ((zp -> z_mode & (S_IXUSR | (S_IXUSR >> 3 ) |
520
521
(S_IXUSR >> 6 ))) != 0 &&
521
522
(zp -> z_mode & (S_ISUID | S_ISGID )) != 0 &&
0 commit comments