return (0);
}
-#ifdef HAVE_MANDLOCKS
/*
* Check for mandatory locks
*/
- if (MANDMODE(zp->z_mode)) {
- if (error = chklock(ip, FREAD,
- uio->uio_loffset, uio->uio_resid, uio->uio_fmode, ct)) {
- ZFS_EXIT(zsb);
- return (error);
- }
+ if (mandatory_lock(ip) &&
+ !lock_may_read(ip, uio->uio_loffset, uio->uio_resid)) {
+ ZFS_EXIT(zsb);
+ return (EAGAIN);
}
-#endif /* HAVE_MANDLOCK */
/*
* If we're in FRSYNC mode, sync out this znode before reading it.
return (EINVAL);
}
-#ifdef HAVE_MANDLOCKS
/*
* Check for mandatory locks before calling zfs_range_lock()
* in order to prevent a deadlock with locks set via fcntl().
*/
- if (MANDMODE((mode_t)zp->z_mode) &&
- (error = chklock(ip, FWRITE, woff, n, uio->uio_fmode, ct)) != 0) {
+ if (mandatory_lock(ip) && !lock_may_write(ip, woff, n)) {
ZFS_EXIT(zsb);
- return (error);
+ return (EAGAIN);
}
-#endif /* HAVE_MANDLOCKS */
#ifdef HAVE_UIO_ZEROCOPY
/*
if (flags & LOOKUP_XATTR) {
/*
- * If the xattr property is off, refuse the lookup request.
- */
- if (!(zsb->z_flags & ZSB_XATTR_USER)) {
- ZFS_EXIT(zsb);
- return (EINVAL);
- }
-
- /*
* We don't allow recursive attributes..
* Maybe someday we will.
*/
aclp = NULL;
/* Can this be moved to before the top label? */
- if (zsb->z_vfs->mnt_flags & MNT_READONLY) {
+ if (zfs_is_readonly(zsb)) {
err = EROFS;
goto out3;
}