code = afs_lockctl(vcp, &flock, cmd, credp);
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 */
flp->fl_type = flock.l_type;
flp->fl_pid = flock.l_pid;