X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=module%2Fzfs%2Fzfs_vnops.c;h=ae61b43043b73c12f7a8b0efe28b728e1d6c84f6;hb=46e18b3f0fc13aa0859d0fef7dc829db20491ab6;hp=21397131025ceb27d92ffa6601e2aabb0412a08c;hpb=e2e7aa2df88708cdcae87688a69ba3f5d1cc43ed;p=zfs.git diff --git a/module/zfs/zfs_vnops.c b/module/zfs/zfs_vnops.c index 2139713..ae61b43 100644 --- a/module/zfs/zfs_vnops.c +++ b/module/zfs/zfs_vnops.c @@ -399,18 +399,14 @@ zfs_read(struct inode *ip, uio_t *uio, int ioflag, cred_t *cr) 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. @@ -581,17 +577,14 @@ zfs_write(struct inode *ip, uio_t *uio, int ioflag, cred_t *cr) 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 /* @@ -1120,14 +1113,6 @@ zfs_lookup(struct inode *dip, char *nm, struct inode **ipp, int flags, 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. */ @@ -2420,7 +2405,7 @@ top: 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; }