Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 9980
b: refs/heads/master
c: 6f926b5
h: refs/heads/master
v: v3
  • Loading branch information
Trond Myklebust authored and Trond Myklebust committed Oct 18, 2005
1 parent e2c10d0 commit 1cf92cf
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 2 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 02a913a73b52071e93f4b76db3e86138d19efffd
refs/heads/master: 6f926b5ba75c568296ec227e7d782db4ddbdca5c
4 changes: 3 additions & 1 deletion trunk/fs/nfs/dir.c
Original file line number Diff line number Diff line change
Expand Up @@ -957,10 +957,12 @@ static struct dentry *nfs_atomic_lookup(struct inode *dir, struct dentry *dentry
res = NULL;
goto out;
/* This turned out not to be a regular file */
case -EISDIR:
case -ENOTDIR:
goto no_open;
case -ELOOP:
if (!(nd->intent.open.flags & O_NOFOLLOW))
goto no_open;
/* case -EISDIR: */
/* case -EINVAL: */
default:
goto out;
Expand Down
16 changes: 16 additions & 0 deletions trunk/fs/nfs/nfs4proc.c
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,22 @@ static int _nfs4_proc_open(struct inode *dir, struct nfs4_state_owner *sp, stru
o_arg->clientid = sp->so_client->cl_clientid;

status = rpc_call_sync(server->client, &msg, RPC_TASK_NOINTR);
if (status == 0) {
/* OPEN on anything except a regular file is disallowed in NFSv4 */
switch (o_res->f_attr->mode & S_IFMT) {
case S_IFREG:
break;
case S_IFLNK:
status = -ELOOP;
break;
case S_IFDIR:
status = -EISDIR;
break;
default:
status = -ENOTDIR;
}
}

nfs_increment_open_seqid(status, o_arg->seqid);
if (status != 0)
goto out;
Expand Down

0 comments on commit 1cf92cf

Please sign in to comment.