Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1775fd3e authored by David Quigley's avatar David Quigley Committed by Trond Myklebust
Browse files

NFS:Add labels to client function prototypes



After looking at all of the nfsv4 operations the label structure has been added
to the prototypes of the functions which can transmit label data.

Signed-off-by: default avatarMatthew N. Dodd <Matthew.Dodd@sparta.com>
Signed-off-by: default avatarMiguel Rodel Felipe <Rodel_FM@dsi.a-star.edu.sg>
Signed-off-by: default avatarPhua Eu Gene <PHUA_Eu_Gene@dsi.a-star.edu.sg>
Signed-off-by: default avatarKhin Mi Mi Aung <Mi_Mi_AUNG@dsi.a-star.edu.sg>
Signed-off-by: default avatarSteve Dickson <steved@redhat.com>
Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent a09df2ca
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -1076,7 +1076,7 @@ struct nfs_server *nfs_create_server(struct nfs_mount_info *mount_info,
	}
	}


	if (!(fattr->valid & NFS_ATTR_FATTR)) {
	if (!(fattr->valid & NFS_ATTR_FATTR)) {
		error = nfs_mod->rpc_ops->getattr(server, mount_info->mntfh, fattr);
		error = nfs_mod->rpc_ops->getattr(server, mount_info->mntfh, fattr, NULL);
		if (error < 0) {
		if (error < 0) {
			dprintk("nfs_create_server: getattr error = %d\n", -error);
			dprintk("nfs_create_server: getattr error = %d\n", -error);
			goto error;
			goto error;
+11 −8
Original line number Original line Diff line number Diff line
@@ -460,7 +460,7 @@ void nfs_prime_dcache(struct dentry *parent, struct nfs_entry *entry)
	if (dentry == NULL)
	if (dentry == NULL)
		return;
		return;


	inode = nfs_fhget(dentry->d_sb, entry->fh, entry->fattr);
	inode = nfs_fhget(dentry->d_sb, entry->fh, entry->fattr, entry->label);
	if (IS_ERR(inode))
	if (IS_ERR(inode))
		goto out;
		goto out;


@@ -1040,6 +1040,7 @@ static int nfs_lookup_revalidate(struct dentry *dentry, unsigned int flags)
	struct dentry *parent;
	struct dentry *parent;
	struct nfs_fh *fhandle = NULL;
	struct nfs_fh *fhandle = NULL;
	struct nfs_fattr *fattr = NULL;
	struct nfs_fattr *fattr = NULL;
	struct nfs4_label *label = NULL;
	int error;
	int error;


	if (flags & LOOKUP_RCU)
	if (flags & LOOKUP_RCU)
@@ -1082,7 +1083,7 @@ static int nfs_lookup_revalidate(struct dentry *dentry, unsigned int flags)
	if (fhandle == NULL || fattr == NULL)
	if (fhandle == NULL || fattr == NULL)
		goto out_error;
		goto out_error;


	error = NFS_PROTO(dir)->lookup(dir, &dentry->d_name, fhandle, fattr);
	error = NFS_PROTO(dir)->lookup(dir, &dentry->d_name, fhandle, fattr, label);
	if (error)
	if (error)
		goto out_bad;
		goto out_bad;
	if (nfs_compare_fh(NFS_FH(inode), fhandle))
	if (nfs_compare_fh(NFS_FH(inode), fhandle))
@@ -1256,6 +1257,7 @@ struct dentry *nfs_lookup(struct inode *dir, struct dentry * dentry, unsigned in
	struct inode *inode = NULL;
	struct inode *inode = NULL;
	struct nfs_fh *fhandle = NULL;
	struct nfs_fh *fhandle = NULL;
	struct nfs_fattr *fattr = NULL;
	struct nfs_fattr *fattr = NULL;
	struct nfs4_label *label = NULL;
	int error;
	int error;


	dfprintk(VFS, "NFS: lookup(%s/%s)\n",
	dfprintk(VFS, "NFS: lookup(%s/%s)\n",
@@ -1285,14 +1287,14 @@ struct dentry *nfs_lookup(struct inode *dir, struct dentry * dentry, unsigned in
	parent = dentry->d_parent;
	parent = dentry->d_parent;
	/* Protect against concurrent sillydeletes */
	/* Protect against concurrent sillydeletes */
	nfs_block_sillyrename(parent);
	nfs_block_sillyrename(parent);
	error = NFS_PROTO(dir)->lookup(dir, &dentry->d_name, fhandle, fattr);
	error = NFS_PROTO(dir)->lookup(dir, &dentry->d_name, fhandle, fattr, label);
	if (error == -ENOENT)
	if (error == -ENOENT)
		goto no_entry;
		goto no_entry;
	if (error < 0) {
	if (error < 0) {
		res = ERR_PTR(error);
		res = ERR_PTR(error);
		goto out_unblock_sillyrename;
		goto out_unblock_sillyrename;
	}
	}
	inode = nfs_fhget(dentry->d_sb, fhandle, fattr);
	inode = nfs_fhget(dentry->d_sb, fhandle, fattr, label);
	res = ERR_CAST(inode);
	res = ERR_CAST(inode);
	if (IS_ERR(res))
	if (IS_ERR(res))
		goto out_unblock_sillyrename;
		goto out_unblock_sillyrename;
@@ -1528,7 +1530,8 @@ static int nfs4_lookup_revalidate(struct dentry *dentry, unsigned int flags)
 * Code common to create, mkdir, and mknod.
 * Code common to create, mkdir, and mknod.
 */
 */
int nfs_instantiate(struct dentry *dentry, struct nfs_fh *fhandle,
int nfs_instantiate(struct dentry *dentry, struct nfs_fh *fhandle,
				struct nfs_fattr *fattr)
				struct nfs_fattr *fattr,
				struct nfs4_label *label)
{
{
	struct dentry *parent = dget_parent(dentry);
	struct dentry *parent = dget_parent(dentry);
	struct inode *dir = parent->d_inode;
	struct inode *dir = parent->d_inode;
@@ -1541,18 +1544,18 @@ int nfs_instantiate(struct dentry *dentry, struct nfs_fh *fhandle,
	if (dentry->d_inode)
	if (dentry->d_inode)
		goto out;
		goto out;
	if (fhandle->size == 0) {
	if (fhandle->size == 0) {
		error = NFS_PROTO(dir)->lookup(dir, &dentry->d_name, fhandle, fattr);
		error = NFS_PROTO(dir)->lookup(dir, &dentry->d_name, fhandle, fattr, NULL);
		if (error)
		if (error)
			goto out_error;
			goto out_error;
	}
	}
	nfs_set_verifier(dentry, nfs_save_change_attribute(dir));
	nfs_set_verifier(dentry, nfs_save_change_attribute(dir));
	if (!(fattr->valid & NFS_ATTR_FATTR)) {
	if (!(fattr->valid & NFS_ATTR_FATTR)) {
		struct nfs_server *server = NFS_SB(dentry->d_sb);
		struct nfs_server *server = NFS_SB(dentry->d_sb);
		error = server->nfs_client->rpc_ops->getattr(server, fhandle, fattr);
		error = server->nfs_client->rpc_ops->getattr(server, fhandle, fattr, NULL);
		if (error < 0)
		if (error < 0)
			goto out_error;
			goto out_error;
	}
	}
	inode = nfs_fhget(dentry->d_sb, fhandle, fattr);
	inode = nfs_fhget(dentry->d_sb, fhandle, fattr, label);
	error = PTR_ERR(inode);
	error = PTR_ERR(inode);
	if (IS_ERR(inode))
	if (IS_ERR(inode))
		goto out_error;
		goto out_error;
+1 −1
Original line number Original line Diff line number Diff line
@@ -95,7 +95,7 @@ struct dentry *nfs_get_root(struct super_block *sb, struct nfs_fh *mntfh,
		goto out;
		goto out;
	}
	}


	inode = nfs_fhget(sb, mntfh, fsinfo.fattr);
	inode = nfs_fhget(sb, mntfh, fsinfo.fattr, NULL);
	if (IS_ERR(inode)) {
	if (IS_ERR(inode)) {
		dprintk("nfs_get_root: get root inode failed\n");
		dprintk("nfs_get_root: get root inode failed\n");
		ret = ERR_CAST(inode);
		ret = ERR_CAST(inode);
+3 −2
Original line number Original line Diff line number Diff line
@@ -290,7 +290,7 @@ EXPORT_SYMBOL_GPL(nfs4_label_alloc);
 * instead of inode number.
 * instead of inode number.
 */
 */
struct inode *
struct inode *
nfs_fhget(struct super_block *sb, struct nfs_fh *fh, struct nfs_fattr *fattr)
nfs_fhget(struct super_block *sb, struct nfs_fh *fh, struct nfs_fattr *fattr, struct nfs4_label *label)
{
{
	struct nfs_find_desc desc = {
	struct nfs_find_desc desc = {
		.fh	= fh,
		.fh	= fh,
@@ -818,6 +818,7 @@ int
__nfs_revalidate_inode(struct nfs_server *server, struct inode *inode)
__nfs_revalidate_inode(struct nfs_server *server, struct inode *inode)
{
{
	int		 status = -ESTALE;
	int		 status = -ESTALE;
	struct nfs4_label *label = NULL;
	struct nfs_fattr *fattr = NULL;
	struct nfs_fattr *fattr = NULL;
	struct nfs_inode *nfsi = NFS_I(inode);
	struct nfs_inode *nfsi = NFS_I(inode);


@@ -835,7 +836,7 @@ __nfs_revalidate_inode(struct nfs_server *server, struct inode *inode)
		goto out;
		goto out;


	nfs_inc_stats(inode, NFSIOS_INODEREVALIDATE);
	nfs_inc_stats(inode, NFSIOS_INODEREVALIDATE);
	status = NFS_PROTO(inode)->getattr(server, NFS_FH(inode), fattr);
	status = NFS_PROTO(inode)->getattr(server, NFS_FH(inode), fattr, label);
	if (status != 0) {
	if (status != 0) {
		dfprintk(PAGECACHE, "nfs_revalidate_inode: (%s/%Ld) getattr failed, error=%d\n",
		dfprintk(PAGECACHE, "nfs_revalidate_inode: (%s/%Ld) getattr failed, error=%d\n",
			 inode->i_sb->s_id,
			 inode->i_sb->s_id,
+1 −1
Original line number Original line Diff line number Diff line
@@ -280,7 +280,7 @@ struct vfsmount *nfs_submount(struct nfs_server *server, struct dentry *dentry,
	struct dentry *parent = dget_parent(dentry);
	struct dentry *parent = dget_parent(dentry);


	/* Look it up again to get its attributes */
	/* Look it up again to get its attributes */
	err = server->nfs_client->rpc_ops->lookup(parent->d_inode, &dentry->d_name, fh, fattr);
	err = server->nfs_client->rpc_ops->lookup(parent->d_inode, &dentry->d_name, fh, fattr, NULL);
	dput(parent);
	dput(parent);
	if (err != 0)
	if (err != 0)
		return ERR_PTR(err);
		return ERR_PTR(err);
Loading