fcntl write lock on readonly file error fix
authorDerrick Brashear <shadow@dementia.org>
Sun, 2 May 2010 23:06:43 +0000 (19:06 -0400)
committerDerrick Brashear <shadow@dementia.org>
Wed, 5 May 2010 20:41:28 +0000 (13:41 -0700)
apparently we return EROFS where we should return EBADF. Fix the
error the client gets; the RPC is unchanged (and indeed shouldn't
be changed)

Change-Id: I738f1ee36f39d03bf018c0f91c7de9c8ed8cc9a9
Reviewed-on: http://gerrit.openafs.org/1895
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>

src/afs/VNOPS/afs_vnop_flock.c

index d8b159d..8010e73 100644 (file)
@@ -434,6 +434,8 @@ HandleFlock(register struct vcache *avc, int acom, struct vrequest *areq,
                                 (tc, code, &avc->f.fid, areq,
                                  AFS_STATS_FS_RPCIDX_SETLOCK, SHARED_LOCK,
                                  NULL));
+                       if ((LockType == LockWrite) && (code == VREADONLY))
+                           code = EBADF; /* per POSIX; VREADONLY == EROFS */
                    } else
                        /* XXX - Should probably try and log this when we're
                         * XXX - running with logging enabled. But it's horrid