diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/ceph/locks.c | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/fs/ceph/locks.c b/fs/ceph/locks.c index ae6d14e82b0f..133e0063da64 100644 --- a/fs/ceph/locks.c +++ b/fs/ceph/locks.c | |||
@@ -91,10 +91,10 @@ int ceph_lock(struct file *file, int cmd, struct file_lock *fl) | |||
91 | dout("ceph_lock, fl_pid:%d", fl->fl_pid); | 91 | dout("ceph_lock, fl_pid:%d", fl->fl_pid); |
92 | 92 | ||
93 | /* set wait bit as appropriate, then make command as Ceph expects it*/ | 93 | /* set wait bit as appropriate, then make command as Ceph expects it*/ |
94 | if (F_SETLKW == cmd) | 94 | if (IS_GETLK(cmd)) |
95 | wait = 1; | ||
96 | if (F_GETLK == cmd) | ||
97 | op = CEPH_MDS_OP_GETFILELOCK; | 95 | op = CEPH_MDS_OP_GETFILELOCK; |
96 | else if (IS_SETLKW(cmd)) | ||
97 | wait = 1; | ||
98 | 98 | ||
99 | if (F_RDLCK == fl->fl_type) | 99 | if (F_RDLCK == fl->fl_type) |
100 | lock_cmd = CEPH_LOCK_SHARED; | 100 | lock_cmd = CEPH_LOCK_SHARED; |
@@ -131,20 +131,17 @@ int ceph_flock(struct file *file, int cmd, struct file_lock *fl) | |||
131 | { | 131 | { |
132 | u8 lock_cmd; | 132 | u8 lock_cmd; |
133 | int err; | 133 | int err; |
134 | u8 wait = 1; | 134 | u8 wait = 0; |
135 | 135 | ||
136 | fl->fl_nspid = get_pid(task_tgid(current)); | 136 | fl->fl_nspid = get_pid(task_tgid(current)); |
137 | dout("ceph_flock, fl_pid:%d", fl->fl_pid); | 137 | dout("ceph_flock, fl_pid:%d", fl->fl_pid); |
138 | 138 | ||
139 | /* set wait bit, then clear it out of cmd*/ | 139 | if (IS_SETLKW(cmd)) |
140 | if (cmd & LOCK_NB) | 140 | wait = 1; |
141 | wait = 0; | 141 | |
142 | cmd = cmd & (LOCK_SH | LOCK_EX | LOCK_UN); | 142 | if (F_RDLCK == fl->fl_type) |
143 | /* set command sequence that Ceph wants to see: | ||
144 | shared lock, exclusive lock, or unlock */ | ||
145 | if (LOCK_SH == cmd) | ||
146 | lock_cmd = CEPH_LOCK_SHARED; | 143 | lock_cmd = CEPH_LOCK_SHARED; |
147 | else if (LOCK_EX == cmd) | 144 | else if (F_WRLCK == fl->fl_type) |
148 | lock_cmd = CEPH_LOCK_EXCL; | 145 | lock_cmd = CEPH_LOCK_EXCL; |
149 | else | 146 | else |
150 | lock_cmd = CEPH_LOCK_UNLOCK; | 147 | lock_cmd = CEPH_LOCK_UNLOCK; |