X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=module%2Fzfs%2Fzfs_znode.c;h=a51d5e6f362cc31367720da6c6ff09aa4982c544;hb=b2f25e00ec993e0cefcc70f0ccf00cf746fc1739;hp=076161a8576b8e85aef0efffb69b137db2950a8e;hpb=5c03efc379693f992ebe39c6a00c7297c4a304ea;p=zfs.git diff --git a/module/zfs/zfs_znode.c b/module/zfs/zfs_znode.c index 076161a..a51d5e6 100644 --- a/module/zfs/zfs_znode.c +++ b/module/zfs/zfs_znode.c @@ -1324,9 +1324,7 @@ top: int zfs_freesp(znode_t *zp, uint64_t off, uint64_t len, int flag, boolean_t log) { -#ifdef HAVE_MANDLOCKS struct inode *ip = ZTOI(zp); -#endif /* HAVE_MANDLOCKS */ dmu_tx_t *tx; zfs_sb_t *zsb = ZTOZSB(zp); zilog_t *zilog = zsb->z_log; @@ -1348,17 +1346,14 @@ zfs_freesp(znode_t *zp, uint64_t off, uint64_t len, int flag, boolean_t log) return (error); } -#ifdef HAVE_MANDLOCKS /* * Check for any locks in the region to be freed. */ - - if (MANDLOCK(ip, (mode_t)mode)) { + if (ip->i_flock && mandatory_lock(ip)) { uint64_t length = (len ? len : zp->z_size - off); - if (error = chklock(ip, FWRITE, off, length, flag, NULL)) - return (error); + if (!lock_may_write(ip, off, length)) + return (EAGAIN); } -#endif /* HAVE_MANDLOCKS */ if (len == 0) { error = zfs_trunc(zp, off);