nfs4: Use correct mode in share reclaimation

This commit is contained in:
Pawel Dziepak
2012-06-29 02:15:30 +02:00
parent 55f2930931
commit 6ebe67d0d0
3 changed files with 22 additions and 21 deletions
@@ -647,22 +647,6 @@ Inode::WriteStat(const struct stat* st, uint32 mask)
}
static OpenAccess
sModeToAccess(int mode)
{
switch (mode & O_RWMASK) {
case O_RDONLY:
return OPEN4_SHARE_ACCESS_READ;
case O_WRONLY:
return OPEN4_SHARE_ACCESS_WRITE;
case O_RDWR:
return OPEN4_SHARE_ACCESS_BOTH;
}
return OPEN4_SHARE_ACCESS_READ;
}
static status_t
sConfirmOpen(Filesystem* fs, Filehandle& fh, OpenFileCookie* cookie)
{
@@ -166,6 +166,23 @@ enum OpenAccess {
OPEN4_SHARE_ACCESS_BOTH = 3
};
static inline OpenAccess
sModeToAccess(int mode)
{
switch (mode & O_RWMASK) {
case O_RDONLY:
return OPEN4_SHARE_ACCESS_READ;
case O_WRONLY:
return OPEN4_SHARE_ACCESS_WRITE;
case O_RDWR:
return OPEN4_SHARE_ACCESS_BOTH;
}
return OPEN4_SHARE_ACCESS_READ;
}
enum OpenCreate {
OPEN4_NOCREATE = 0,
OPEN4_CREATE = 1
@@ -203,8 +220,8 @@ enum LockType {
};
static inline
LockType sGetLockType(short type, bool wait) {
static inline LockType
sGetLockType(short type, bool wait) {
switch (type) {
case F_RDLCK: return wait ? READW_LT : READ_LT;
case F_WRLCK: return wait ? WRITEW_LT : WRITE_LT;
@@ -213,8 +230,8 @@ LockType sGetLockType(short type, bool wait) {
}
static inline
short sLockTypeToHaiku(LockType type) {
static inline short
sLockTypeToHaiku(LockType type) {
switch (type) {
case READ_LT:
case READW_LT:
@@ -78,7 +78,7 @@ NFS4Server::_ReclaimOpen(OpenFileCookie* cookie)
RequestBuilder& req = request.Builder();
req.PutFH(cookie->fHandle);
req.Open(CLAIM_PREVIOUS, cookie->fSequence++, OPEN4_SHARE_ACCESS_READ,
req.Open(CLAIM_PREVIOUS, cookie->fSequence++, sModeToAccess(cookie->fMode),
cookie->fClientId, OPEN4_NOCREATE, cookie->fOwnerId, NULL);
status_t result = request.Send();