X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=fs%2Fnfs%2Finode.c;h=bf31dc34e5f061f8c15c8fa24ba9892d3410a197;hb=3e3ff47c8527c5ba0be4e9f358d49e4b076bd6ef;hp=7f25c31fdb81acd24408da44ef32a37ea4395bd0;hpb=a91482bdcc2e0f6035702e46f1b99043a0893346;p=linux-2.6.git diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c index 7f25c31fd..bf31dc34e 100644 --- a/fs/nfs/inode.c +++ b/fs/nfs/inode.c @@ -131,6 +131,7 @@ nfs_delete_inode(struct inode * inode) printk(KERN_ERR "nfs_delete_inode: inode %ld has pending RPC requests\n", inode->i_ino); } +// DLIMIT_FREE_INODE(inode->i_sb, inode->i_xid); clear_inode(inode); } @@ -390,7 +391,6 @@ nfs_create_client(struct nfs_server *server, const struct nfs_mount_data *data) clnt->cl_intr = (server->flags & NFS_MOUNT_INTR) ? 1 : 0; clnt->cl_softrtry = (server->flags & NFS_MOUNT_SOFT) ? 1 : 0; clnt->cl_droppriv = (server->flags & NFS_MOUNT_BROKEN_SUID) ? 1 : 0; - clnt->cl_tagxid = (server->flags & NFS_MOUNT_TAGXID) ? 1 : 0; clnt->cl_chatty = 1; return clnt; @@ -700,6 +700,11 @@ nfs_fhget(struct super_block *sb, struct nfs_fh *fh, struct nfs_fattr *fattr) if (inode->i_state & I_NEW) { struct nfs_inode *nfsi = NFS_I(inode); +/* if (DLIMIT_ALLOC_INODE(sb, inode->i_xid)) { + err = -ENOSPC; + goto fail_dlim; + } +*/ /* We set i_ino for the few things that still rely on it, * such as stat(2) */ inode->i_ino = hash; @@ -734,9 +739,10 @@ nfs_fhget(struct super_block *sb, struct nfs_fh *fh, struct nfs_fattr *fattr) nfsi->change_attr = fattr->change_attr; inode->i_size = nfs_size_to_loff_t(fattr->size); inode->i_nlink = fattr->nlink; - inode->i_uid = INOXID_UID(XID_TAG(inode), fattr->uid, fattr->gid); - inode->i_gid = INOXID_GID(XID_TAG(inode), fattr->uid, fattr->gid); - inode->i_xid = INOXID_XID(XID_TAG(inode), fattr->uid, fattr->gid, 0); + inode->i_uid = INOXID_UID(fattr->uid, fattr->gid); + inode->i_gid = INOXID_GID(fattr->uid, fattr->gid); + if (inode->i_sb->s_flags & MS_TAGXID) + inode->i_xid = INOXID_XID(fattr->uid, fattr->gid, 0); /* maybe fattr->xid someday */ if (fattr->valid & (NFS_ATTR_FATTR_V3 | NFS_ATTR_FATTR_V4)) { /* @@ -1125,9 +1131,10 @@ int nfs_refresh_inode(struct inode *inode, struct nfs_fattr *fattr) } else if (S_ISREG(inode->i_mode) && new_isize > cur_size) nfsi->flags |= NFS_INO_INVALID_ATTR; - uid = INOXID_UID(XID_TAG(inode), fattr->uid, fattr->gid); - gid = INOXID_GID(XID_TAG(inode), fattr->uid, fattr->gid); - xid = INOXID_XID(XID_TAG(inode), fattr->uid, fattr->gid, 0); + uid = INOXID_UID(fattr->uid, fattr->gid); + gid = INOXID_GID(fattr->uid, fattr->gid); + if (inode->i_sb->s_flags & MS_TAGXID) + xid = INOXID_XID(fattr->uid, fattr->gid, 0); /* Have any file permissions changed? */ if ((inode->i_mode & S_IALLUGO) != (fattr->mode & S_IALLUGO) @@ -1252,9 +1259,10 @@ static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr, unsign memcpy(&inode->i_ctime, &fattr->ctime, sizeof(inode->i_ctime)); memcpy(&inode->i_atime, &fattr->atime, sizeof(inode->i_atime)); - uid = INOXID_UID(XID_TAG(inode), fattr->uid, fattr->gid); - gid = INOXID_GID(XID_TAG(inode), fattr->uid, fattr->gid); - xid = INOXID_XID(XID_TAG(inode), fattr->uid, fattr->gid, 0); + uid = INOXID_UID(fattr->uid, fattr->gid); + gid = INOXID_GID(fattr->uid, fattr->gid); + if (inode->i_sb->s_flags & MS_TAGXID) + xid = INOXID_XID(fattr->uid, fattr->gid, 0); if ((inode->i_mode & S_IALLUGO) != (fattr->mode & S_IALLUGO) || inode->i_uid != uid ||