]> git.pld-linux.org Git - packages/zfs.git/blob - linux-3.18.patch
- drop non-dist kernel support
[packages/zfs.git] / linux-3.18.patch
1 From 107077a193a5c35e83ab3ba890c429f31736d055 Mon Sep 17 00:00:00 2001
2 From: Ned Bass <bass6@llnl.gov>
3 Date: Thu, 16 Oct 2014 13:52:56 -0700
4 Subject: [PATCH] Remove checks for mandatory locks
5
6 The Linux VFS handles mandatory locks generically so we shouldn't
7 need to check for conflicting locks in zfs_read(), zfs_write(), or
8 zfs_freesp().  Linux 3.18 removed the lock_may_read() and
9 lock_may_write() interfaces which we were relying on for this
10 purpose.  Rather than emulating those interfaces we remove the
11 redundant checks.
12
13 Signed-off-by: Ned Bass <bass6@llnl.gov>
14 Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
15 Closes #2804
16 ---
17  module/zfs/zfs_vnops.c | 18 ------------------
18  module/zfs/zfs_znode.c | 10 ----------
19  2 files changed, 28 deletions(-)
20
21 diff --git a/module/zfs/zfs_vnops.c b/module/zfs/zfs_vnops.c
22 index 4f53173..02fab99 100644
23 --- a/module/zfs/zfs_vnops.c
24 +++ b/module/zfs/zfs_vnops.c
25 @@ -471,15 +471,6 @@ zfs_read(struct inode *ip, uio_t *uio, int ioflag, cred_t *cr)
26         }
27  
28         /*
29 -        * Check for mandatory locks
30 -        */
31 -       if (mandatory_lock(ip) &&
32 -           !lock_may_read(ip, uio->uio_loffset, uio->uio_resid)) {
33 -               ZFS_EXIT(zsb);
34 -               return (SET_ERROR(EAGAIN));
35 -       }
36 -
37 -       /*
38          * If we're in FRSYNC mode, sync out this znode before reading it.
39          */
40         if (ioflag & FRSYNC || zsb->z_os->os_sync == ZFS_SYNC_ALWAYS)
41 @@ -648,15 +639,6 @@ zfs_write(struct inode *ip, uio_t *uio, int ioflag, cred_t *cr)
42         }
43  
44         /*
45 -        * Check for mandatory locks before calling zfs_range_lock()
46 -        * in order to prevent a deadlock with locks set via fcntl().
47 -        */
48 -       if (mandatory_lock(ip) && !lock_may_write(ip, woff, n)) {
49 -               ZFS_EXIT(zsb);
50 -               return (SET_ERROR(EAGAIN));
51 -       }
52 -
53 -       /*
54          * Pre-fault the pages to ensure slow (eg NFS) pages
55          * don't hold up txg.
56          * Skip this if uio contains loaned arc_buf.
57 diff --git a/module/zfs/zfs_znode.c b/module/zfs/zfs_znode.c
58 index 23e0907..a7ef07c 100644
59 --- a/module/zfs/zfs_znode.c
60 +++ b/module/zfs/zfs_znode.c
61 @@ -1471,7 +1471,6 @@ zfs_trunc(znode_t *zp, uint64_t end)
62  int
63  zfs_freesp(znode_t *zp, uint64_t off, uint64_t len, int flag, boolean_t log)
64  {
65 -       struct inode *ip = ZTOI(zp);
66         dmu_tx_t *tx;
67         zfs_sb_t *zsb = ZTOZSB(zp);
68         zilog_t *zilog = zsb->z_log;
69 @@ -1493,15 +1492,6 @@ zfs_freesp(znode_t *zp, uint64_t off, uint64_t len, int flag, boolean_t log)
70                         return (error);
71         }
72  
73 -       /*
74 -        * Check for any locks in the region to be freed.
75 -        */
76 -       if (ip->i_flock && mandatory_lock(ip)) {
77 -               uint64_t length = (len ? len : zp->z_size - off);
78 -               if (!lock_may_write(ip, off, length))
79 -                       return (SET_ERROR(EAGAIN));
80 -       }
81 -
82         if (len == 0) {
83                 error = zfs_trunc(zp, off);
84         } else {
This page took 0.110597 seconds and 3 git commands to generate.