mirror of
https://git.openafs.org/openafs.git
synced 2025-02-01 05:57:43 +00:00
STABLE14-linux-enroll-locks-20060403
FIXES 25037 enroll our locks in the linux kernels' lock management (cherry picked from commit 62e28d9a0a6adc6e1f3c2938bfc530b54bea4158)
This commit is contained in:
parent
df39e2ec8a
commit
e5e8d2ac72
@ -463,6 +463,25 @@ afs_linux_lock(struct file *fp, int cmd, struct file_lock *flp)
|
|||||||
code = afs_lockctl(vcp, &flock, cmd, credp);
|
code = afs_lockctl(vcp, &flock, cmd, credp);
|
||||||
AFS_GUNLOCK();
|
AFS_GUNLOCK();
|
||||||
|
|
||||||
|
#ifdef AFS_LINUX24_ENV
|
||||||
|
if (code == 0 && (cmd == F_SETLK || cmd == F_SETLKW)) {
|
||||||
|
struct file_lock flp2;
|
||||||
|
flp2 = *flp;
|
||||||
|
#ifdef AFS_LINUX26_ENV
|
||||||
|
flp2.fl_flags &=~ FL_SLEEP;
|
||||||
|
#endif
|
||||||
|
code = posix_lock_file(fp, &flp2);
|
||||||
|
osi_Assert(code != -EAGAIN); /* there should be no conflicts */
|
||||||
|
if (code) {
|
||||||
|
struct AFS_FLOCK flock2;
|
||||||
|
flock2 = flock;
|
||||||
|
flock2.l_type = F_UNLCK;
|
||||||
|
AFS_GLOCK();
|
||||||
|
afs_lockctl(vcp, &flock2, F_SETLK, credp);
|
||||||
|
AFS_GUNLOCK();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
/* Convert flock back to Linux's file_lock */
|
/* Convert flock back to Linux's file_lock */
|
||||||
flp->fl_type = flock.l_type;
|
flp->fl_type = flock.l_type;
|
||||||
flp->fl_pid = flock.l_pid;
|
flp->fl_pid = flock.l_pid;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user