VFS: normal filesystems (and lustre): d_inode() annotations
that's the bulk of filesystem drivers dealing with inodes of their own Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
59
fs/nfs/dir.c
59
fs/nfs/dir.c
@@ -416,15 +416,14 @@ int nfs_same_file(struct dentry *dentry, struct nfs_entry *entry)
|
||||
{
|
||||
struct nfs_inode *nfsi;
|
||||
|
||||
if (dentry->d_inode == NULL)
|
||||
goto different;
|
||||
if (d_really_is_negative(dentry))
|
||||
return 0;
|
||||
|
||||
nfsi = NFS_I(dentry->d_inode);
|
||||
nfsi = NFS_I(d_inode(dentry));
|
||||
if (entry->fattr->fileid == nfsi->fileid)
|
||||
return 1;
|
||||
if (nfs_compare_fh(entry->fh, &nfsi->fh) == 0)
|
||||
return 1;
|
||||
different:
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -473,7 +472,7 @@ void nfs_prime_dcache(struct dentry *parent, struct nfs_entry *entry)
|
||||
struct qstr filename = QSTR_INIT(entry->name, entry->len);
|
||||
struct dentry *dentry;
|
||||
struct dentry *alias;
|
||||
struct inode *dir = parent->d_inode;
|
||||
struct inode *dir = d_inode(parent);
|
||||
struct inode *inode;
|
||||
int status;
|
||||
|
||||
@@ -497,9 +496,9 @@ void nfs_prime_dcache(struct dentry *parent, struct nfs_entry *entry)
|
||||
goto out;
|
||||
if (nfs_same_file(dentry, entry)) {
|
||||
nfs_set_verifier(dentry, nfs_save_change_attribute(dir));
|
||||
status = nfs_refresh_inode(dentry->d_inode, entry->fattr);
|
||||
status = nfs_refresh_inode(d_inode(dentry), entry->fattr);
|
||||
if (!status)
|
||||
nfs_setsecurity(dentry->d_inode, entry->fattr, entry->label);
|
||||
nfs_setsecurity(d_inode(dentry), entry->fattr, entry->label);
|
||||
goto out;
|
||||
} else {
|
||||
d_invalidate(dentry);
|
||||
@@ -870,7 +869,7 @@ static bool nfs_dir_mapping_need_revalidate(struct inode *dir)
|
||||
static int nfs_readdir(struct file *file, struct dir_context *ctx)
|
||||
{
|
||||
struct dentry *dentry = file->f_path.dentry;
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct inode *inode = d_inode(dentry);
|
||||
nfs_readdir_descriptor_t my_desc,
|
||||
*desc = &my_desc;
|
||||
struct nfs_open_dir_context *dir_ctx = file->private_data;
|
||||
@@ -1118,15 +1117,15 @@ static int nfs_lookup_revalidate(struct dentry *dentry, unsigned int flags)
|
||||
|
||||
if (flags & LOOKUP_RCU) {
|
||||
parent = ACCESS_ONCE(dentry->d_parent);
|
||||
dir = ACCESS_ONCE(parent->d_inode);
|
||||
dir = d_inode_rcu(parent);
|
||||
if (!dir)
|
||||
return -ECHILD;
|
||||
} else {
|
||||
parent = dget_parent(dentry);
|
||||
dir = parent->d_inode;
|
||||
dir = d_inode(parent);
|
||||
}
|
||||
nfs_inc_stats(dir, NFSIOS_DENTRYREVALIDATE);
|
||||
inode = dentry->d_inode;
|
||||
inode = d_inode(dentry);
|
||||
|
||||
if (!inode) {
|
||||
if (nfs_neg_need_reval(dir, dentry, flags)) {
|
||||
@@ -1242,7 +1241,7 @@ out_error:
|
||||
}
|
||||
|
||||
/*
|
||||
* A weaker form of d_revalidate for revalidating just the dentry->d_inode
|
||||
* A weaker form of d_revalidate for revalidating just the d_inode(dentry)
|
||||
* when we don't really care about the dentry name. This is called when a
|
||||
* pathwalk ends on a dentry that was not found via a normal lookup in the
|
||||
* parent dir (e.g.: ".", "..", procfs symlinks or mountpoint traversals).
|
||||
@@ -1253,7 +1252,7 @@ out_error:
|
||||
static int nfs_weak_revalidate(struct dentry *dentry, unsigned int flags)
|
||||
{
|
||||
int error;
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct inode *inode = d_inode(dentry);
|
||||
|
||||
/*
|
||||
* I believe we can only get a negative dentry here in the case of a
|
||||
@@ -1287,7 +1286,7 @@ static int nfs_dentry_delete(const struct dentry *dentry)
|
||||
dentry, dentry->d_flags);
|
||||
|
||||
/* Unhash any dentry with a stale inode */
|
||||
if (dentry->d_inode != NULL && NFS_STALE(dentry->d_inode))
|
||||
if (d_really_is_positive(dentry) && NFS_STALE(d_inode(dentry)))
|
||||
return 1;
|
||||
|
||||
if (dentry->d_flags & DCACHE_NFSFS_RENAMED) {
|
||||
@@ -1491,7 +1490,7 @@ int nfs_atomic_open(struct inode *dir, struct dentry *dentry,
|
||||
int err;
|
||||
|
||||
/* Expect a negative dentry */
|
||||
BUG_ON(dentry->d_inode);
|
||||
BUG_ON(d_inode(dentry));
|
||||
|
||||
dfprintk(VFS, "NFS: atomic_open(%s/%lu), %pd\n",
|
||||
dir->i_sb->s_id, dir->i_ino, dentry);
|
||||
@@ -1587,7 +1586,7 @@ static int nfs4_lookup_revalidate(struct dentry *dentry, unsigned int flags)
|
||||
if (NFS_SB(dentry->d_sb)->caps & NFS_CAP_ATOMIC_OPEN_V1)
|
||||
goto no_open;
|
||||
|
||||
inode = dentry->d_inode;
|
||||
inode = d_inode(dentry);
|
||||
|
||||
/* We can't create new files in nfs_open_revalidate(), so we
|
||||
* optimize away revalidation of negative dentries.
|
||||
@@ -1598,12 +1597,12 @@ static int nfs4_lookup_revalidate(struct dentry *dentry, unsigned int flags)
|
||||
|
||||
if (flags & LOOKUP_RCU) {
|
||||
parent = ACCESS_ONCE(dentry->d_parent);
|
||||
dir = ACCESS_ONCE(parent->d_inode);
|
||||
dir = d_inode_rcu(parent);
|
||||
if (!dir)
|
||||
return -ECHILD;
|
||||
} else {
|
||||
parent = dget_parent(dentry);
|
||||
dir = parent->d_inode;
|
||||
dir = d_inode(parent);
|
||||
}
|
||||
if (!nfs_neg_need_reval(dir, dentry, flags))
|
||||
ret = 1;
|
||||
@@ -1643,14 +1642,14 @@ int nfs_instantiate(struct dentry *dentry, struct nfs_fh *fhandle,
|
||||
struct nfs4_label *label)
|
||||
{
|
||||
struct dentry *parent = dget_parent(dentry);
|
||||
struct inode *dir = parent->d_inode;
|
||||
struct inode *dir = d_inode(parent);
|
||||
struct inode *inode;
|
||||
int error = -EACCES;
|
||||
|
||||
d_drop(dentry);
|
||||
|
||||
/* We may have been initialized further down */
|
||||
if (dentry->d_inode)
|
||||
if (d_really_is_positive(dentry))
|
||||
goto out;
|
||||
if (fhandle->size == 0) {
|
||||
error = NFS_PROTO(dir)->lookup(dir, &dentry->d_name, fhandle, fattr, NULL);
|
||||
@@ -1768,7 +1767,7 @@ EXPORT_SYMBOL_GPL(nfs_mkdir);
|
||||
|
||||
static void nfs_dentry_handle_enoent(struct dentry *dentry)
|
||||
{
|
||||
if (dentry->d_inode != NULL && !d_unhashed(dentry))
|
||||
if (d_really_is_positive(dentry) && !d_unhashed(dentry))
|
||||
d_delete(dentry);
|
||||
}
|
||||
|
||||
@@ -1780,13 +1779,13 @@ int nfs_rmdir(struct inode *dir, struct dentry *dentry)
|
||||
dir->i_sb->s_id, dir->i_ino, dentry);
|
||||
|
||||
trace_nfs_rmdir_enter(dir, dentry);
|
||||
if (dentry->d_inode) {
|
||||
if (d_really_is_positive(dentry)) {
|
||||
nfs_wait_on_sillyrename(dentry);
|
||||
error = NFS_PROTO(dir)->rmdir(dir, &dentry->d_name);
|
||||
/* Ensure the VFS deletes this inode */
|
||||
switch (error) {
|
||||
case 0:
|
||||
clear_nlink(dentry->d_inode);
|
||||
clear_nlink(d_inode(dentry));
|
||||
break;
|
||||
case -ENOENT:
|
||||
nfs_dentry_handle_enoent(dentry);
|
||||
@@ -1808,8 +1807,8 @@ EXPORT_SYMBOL_GPL(nfs_rmdir);
|
||||
*/
|
||||
static int nfs_safe_remove(struct dentry *dentry)
|
||||
{
|
||||
struct inode *dir = dentry->d_parent->d_inode;
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct inode *dir = d_inode(dentry->d_parent);
|
||||
struct inode *inode = d_inode(dentry);
|
||||
int error = -EBUSY;
|
||||
|
||||
dfprintk(VFS, "NFS: safe_remove(%pd2)\n", dentry);
|
||||
@@ -1853,7 +1852,7 @@ int nfs_unlink(struct inode *dir, struct dentry *dentry)
|
||||
if (d_count(dentry) > 1) {
|
||||
spin_unlock(&dentry->d_lock);
|
||||
/* Start asynchronous writeout of the inode */
|
||||
write_inode_now(dentry->d_inode, 0);
|
||||
write_inode_now(d_inode(dentry), 0);
|
||||
error = nfs_sillyrename(dir, dentry);
|
||||
goto out;
|
||||
}
|
||||
@@ -1931,7 +1930,7 @@ int nfs_symlink(struct inode *dir, struct dentry *dentry, const char *symname)
|
||||
* No big deal if we can't add this page to the page cache here.
|
||||
* READLINK will get the missing page from the server if needed.
|
||||
*/
|
||||
if (!add_to_page_cache_lru(page, dentry->d_inode->i_mapping, 0,
|
||||
if (!add_to_page_cache_lru(page, d_inode(dentry)->i_mapping, 0,
|
||||
GFP_KERNEL)) {
|
||||
SetPageUptodate(page);
|
||||
unlock_page(page);
|
||||
@@ -1950,7 +1949,7 @@ EXPORT_SYMBOL_GPL(nfs_symlink);
|
||||
int
|
||||
nfs_link(struct dentry *old_dentry, struct inode *dir, struct dentry *dentry)
|
||||
{
|
||||
struct inode *inode = old_dentry->d_inode;
|
||||
struct inode *inode = d_inode(old_dentry);
|
||||
int error;
|
||||
|
||||
dfprintk(VFS, "NFS: link(%pd2 -> %pd2)\n",
|
||||
@@ -1997,8 +1996,8 @@ EXPORT_SYMBOL_GPL(nfs_link);
|
||||
int nfs_rename(struct inode *old_dir, struct dentry *old_dentry,
|
||||
struct inode *new_dir, struct dentry *new_dentry)
|
||||
{
|
||||
struct inode *old_inode = old_dentry->d_inode;
|
||||
struct inode *new_inode = new_dentry->d_inode;
|
||||
struct inode *old_inode = d_inode(old_dentry);
|
||||
struct inode *new_inode = d_inode(new_dentry);
|
||||
struct dentry *dentry = NULL, *rehash = NULL;
|
||||
struct rpc_task *task;
|
||||
int error = -EBUSY;
|
||||
|
@@ -403,8 +403,8 @@ static void nfs_direct_complete(struct nfs_direct_req *dreq, bool write)
|
||||
static void nfs_direct_readpage_release(struct nfs_page *req)
|
||||
{
|
||||
dprintk("NFS: direct read done (%s/%llu %d@%lld)\n",
|
||||
req->wb_context->dentry->d_inode->i_sb->s_id,
|
||||
(unsigned long long)NFS_FILEID(req->wb_context->dentry->d_inode),
|
||||
d_inode(req->wb_context->dentry)->i_sb->s_id,
|
||||
(unsigned long long)NFS_FILEID(d_inode(req->wb_context->dentry)),
|
||||
req->wb_bytes,
|
||||
(long long)req_offset(req));
|
||||
nfs_release_request(req);
|
||||
|
@@ -56,11 +56,11 @@ static int nfs_superblock_set_dummy_root(struct super_block *sb, struct inode *i
|
||||
* This again causes shrink_dcache_for_umount_subtree() to
|
||||
* Oops, since the test for IS_ROOT() will fail.
|
||||
*/
|
||||
spin_lock(&sb->s_root->d_inode->i_lock);
|
||||
spin_lock(&d_inode(sb->s_root)->i_lock);
|
||||
spin_lock(&sb->s_root->d_lock);
|
||||
hlist_del_init(&sb->s_root->d_u.d_alias);
|
||||
spin_unlock(&sb->s_root->d_lock);
|
||||
spin_unlock(&sb->s_root->d_inode->i_lock);
|
||||
spin_unlock(&d_inode(sb->s_root)->i_lock);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@@ -495,7 +495,7 @@ EXPORT_SYMBOL_GPL(nfs_fhget);
|
||||
int
|
||||
nfs_setattr(struct dentry *dentry, struct iattr *attr)
|
||||
{
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct inode *inode = d_inode(dentry);
|
||||
struct nfs_fattr *fattr;
|
||||
int error = -ENOMEM;
|
||||
|
||||
@@ -621,7 +621,7 @@ static void nfs_request_parent_use_readdirplus(struct dentry *dentry)
|
||||
struct dentry *parent;
|
||||
|
||||
parent = dget_parent(dentry);
|
||||
nfs_force_use_readdirplus(parent->d_inode);
|
||||
nfs_force_use_readdirplus(d_inode(parent));
|
||||
dput(parent);
|
||||
}
|
||||
|
||||
@@ -637,7 +637,7 @@ static bool nfs_need_revalidate_inode(struct inode *inode)
|
||||
|
||||
int nfs_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat)
|
||||
{
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct inode *inode = d_inode(dentry);
|
||||
int need_atime = NFS_I(inode)->cache_validity & NFS_INO_INVALID_ATIME;
|
||||
int err = 0;
|
||||
|
||||
@@ -708,7 +708,7 @@ static struct nfs_lock_context *__nfs_find_lock_context(struct nfs_open_context
|
||||
struct nfs_lock_context *nfs_get_lock_context(struct nfs_open_context *ctx)
|
||||
{
|
||||
struct nfs_lock_context *res, *new = NULL;
|
||||
struct inode *inode = ctx->dentry->d_inode;
|
||||
struct inode *inode = d_inode(ctx->dentry);
|
||||
|
||||
spin_lock(&inode->i_lock);
|
||||
res = __nfs_find_lock_context(ctx);
|
||||
@@ -736,7 +736,7 @@ EXPORT_SYMBOL_GPL(nfs_get_lock_context);
|
||||
void nfs_put_lock_context(struct nfs_lock_context *l_ctx)
|
||||
{
|
||||
struct nfs_open_context *ctx = l_ctx->open_context;
|
||||
struct inode *inode = ctx->dentry->d_inode;
|
||||
struct inode *inode = d_inode(ctx->dentry);
|
||||
|
||||
if (!atomic_dec_and_lock(&l_ctx->count, &inode->i_lock))
|
||||
return;
|
||||
@@ -763,7 +763,7 @@ void nfs_close_context(struct nfs_open_context *ctx, int is_sync)
|
||||
return;
|
||||
if (!is_sync)
|
||||
return;
|
||||
inode = ctx->dentry->d_inode;
|
||||
inode = d_inode(ctx->dentry);
|
||||
if (!list_empty(&NFS_I(inode)->open_files))
|
||||
return;
|
||||
server = NFS_SERVER(inode);
|
||||
@@ -810,7 +810,7 @@ EXPORT_SYMBOL_GPL(get_nfs_open_context);
|
||||
|
||||
static void __put_nfs_open_context(struct nfs_open_context *ctx, int is_sync)
|
||||
{
|
||||
struct inode *inode = ctx->dentry->d_inode;
|
||||
struct inode *inode = d_inode(ctx->dentry);
|
||||
struct super_block *sb = ctx->dentry->d_sb;
|
||||
|
||||
if (!list_empty(&ctx->list)) {
|
||||
@@ -842,7 +842,7 @@ EXPORT_SYMBOL_GPL(put_nfs_open_context);
|
||||
*/
|
||||
void nfs_inode_attach_open_context(struct nfs_open_context *ctx)
|
||||
{
|
||||
struct inode *inode = ctx->dentry->d_inode;
|
||||
struct inode *inode = d_inode(ctx->dentry);
|
||||
struct nfs_inode *nfsi = NFS_I(inode);
|
||||
|
||||
spin_lock(&inode->i_lock);
|
||||
@@ -885,7 +885,7 @@ static void nfs_file_clear_open_context(struct file *filp)
|
||||
struct nfs_open_context *ctx = nfs_file_open_context(filp);
|
||||
|
||||
if (ctx) {
|
||||
struct inode *inode = ctx->dentry->d_inode;
|
||||
struct inode *inode = d_inode(ctx->dentry);
|
||||
|
||||
filp->private_data = NULL;
|
||||
spin_lock(&inode->i_lock);
|
||||
|
@@ -139,7 +139,7 @@ EXPORT_SYMBOL_GPL(nfs_path);
|
||||
struct vfsmount *nfs_d_automount(struct path *path)
|
||||
{
|
||||
struct vfsmount *mnt;
|
||||
struct nfs_server *server = NFS_SERVER(path->dentry->d_inode);
|
||||
struct nfs_server *server = NFS_SERVER(d_inode(path->dentry));
|
||||
struct nfs_fh *fh = NULL;
|
||||
struct nfs_fattr *fattr = NULL;
|
||||
|
||||
@@ -180,16 +180,16 @@ out_nofree:
|
||||
static int
|
||||
nfs_namespace_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat)
|
||||
{
|
||||
if (NFS_FH(dentry->d_inode)->size != 0)
|
||||
if (NFS_FH(d_inode(dentry))->size != 0)
|
||||
return nfs_getattr(mnt, dentry, stat);
|
||||
generic_fillattr(dentry->d_inode, stat);
|
||||
generic_fillattr(d_inode(dentry), stat);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
nfs_namespace_setattr(struct dentry *dentry, struct iattr *attr)
|
||||
{
|
||||
if (NFS_FH(dentry->d_inode)->size != 0)
|
||||
if (NFS_FH(d_inode(dentry))->size != 0)
|
||||
return nfs_setattr(dentry, attr);
|
||||
return -EACCES;
|
||||
}
|
||||
@@ -279,7 +279,7 @@ struct vfsmount *nfs_submount(struct nfs_server *server, struct dentry *dentry,
|
||||
struct dentry *parent = dget_parent(dentry);
|
||||
|
||||
/* Look it up again to get its attributes */
|
||||
err = server->nfs_client->rpc_ops->lookup(parent->d_inode, &dentry->d_name, fh, fattr, NULL);
|
||||
err = server->nfs_client->rpc_ops->lookup(d_inode(parent), &dentry->d_name, fh, fattr, NULL);
|
||||
dput(parent);
|
||||
if (err != 0)
|
||||
return ERR_PTR(err);
|
||||
|
@@ -279,7 +279,7 @@ nfs3_list_one_acl(struct inode *inode, int type, const char *name, void *data,
|
||||
ssize_t
|
||||
nfs3_listxattr(struct dentry *dentry, char *data, size_t size)
|
||||
{
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct inode *inode = d_inode(dentry);
|
||||
ssize_t result = 0;
|
||||
int error;
|
||||
|
||||
|
@@ -120,7 +120,7 @@ static int
|
||||
nfs3_proc_setattr(struct dentry *dentry, struct nfs_fattr *fattr,
|
||||
struct iattr *sattr)
|
||||
{
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct inode *inode = d_inode(dentry);
|
||||
struct nfs3_sattrargs arg = {
|
||||
.fh = NFS_FH(inode),
|
||||
.sattr = sattr,
|
||||
@@ -386,13 +386,13 @@ nfs3_proc_create(struct inode *dir, struct dentry *dentry, struct iattr *sattr,
|
||||
* not sure this buys us anything (and I'd have
|
||||
* to revamp the NFSv3 XDR code) */
|
||||
status = nfs3_proc_setattr(dentry, data->res.fattr, sattr);
|
||||
nfs_post_op_update_inode(dentry->d_inode, data->res.fattr);
|
||||
nfs_post_op_update_inode(d_inode(dentry), data->res.fattr);
|
||||
dprintk("NFS reply setattr (post-create): %d\n", status);
|
||||
if (status != 0)
|
||||
goto out_release_acls;
|
||||
}
|
||||
|
||||
status = nfs3_proc_setacls(dentry->d_inode, acl, default_acl);
|
||||
status = nfs3_proc_setacls(d_inode(dentry), acl, default_acl);
|
||||
|
||||
out_release_acls:
|
||||
posix_acl_release(acl);
|
||||
@@ -570,7 +570,7 @@ nfs3_proc_mkdir(struct inode *dir, struct dentry *dentry, struct iattr *sattr)
|
||||
if (status != 0)
|
||||
goto out_release_acls;
|
||||
|
||||
status = nfs3_proc_setacls(dentry->d_inode, acl, default_acl);
|
||||
status = nfs3_proc_setacls(d_inode(dentry), acl, default_acl);
|
||||
|
||||
out_release_acls:
|
||||
posix_acl_release(acl);
|
||||
@@ -623,7 +623,7 @@ static int
|
||||
nfs3_proc_readdir(struct dentry *dentry, struct rpc_cred *cred,
|
||||
u64 cookie, struct page **pages, unsigned int count, int plus)
|
||||
{
|
||||
struct inode *dir = dentry->d_inode;
|
||||
struct inode *dir = d_inode(dentry);
|
||||
__be32 *verf = NFS_I(dir)->cookieverf;
|
||||
struct nfs3_readdirargs arg = {
|
||||
.fh = NFS_FH(dir),
|
||||
@@ -715,7 +715,7 @@ nfs3_proc_mknod(struct inode *dir, struct dentry *dentry, struct iattr *sattr,
|
||||
if (status != 0)
|
||||
goto out_release_acls;
|
||||
|
||||
status = nfs3_proc_setacls(dentry->d_inode, acl, default_acl);
|
||||
status = nfs3_proc_setacls(d_inode(dentry), acl, default_acl);
|
||||
|
||||
out_release_acls:
|
||||
posix_acl_release(acl);
|
||||
|
@@ -1130,7 +1130,7 @@ error:
|
||||
*/
|
||||
static int nfs_probe_destination(struct nfs_server *server)
|
||||
{
|
||||
struct inode *inode = server->super->s_root->d_inode;
|
||||
struct inode *inode = d_inode(server->super->s_root);
|
||||
struct nfs_fattr *fattr;
|
||||
int error;
|
||||
|
||||
|
@@ -46,7 +46,7 @@ nfs4_file_open(struct inode *inode, struct file *filp)
|
||||
openflags &= ~(O_CREAT|O_EXCL);
|
||||
|
||||
parent = dget_parent(dentry);
|
||||
dir = parent->d_inode;
|
||||
dir = d_inode(parent);
|
||||
|
||||
ctx = alloc_nfs_open_context(filp->f_path.dentry, filp->f_mode);
|
||||
err = PTR_ERR(ctx);
|
||||
@@ -74,7 +74,7 @@ nfs4_file_open(struct inode *inode, struct file *filp)
|
||||
goto out_drop;
|
||||
}
|
||||
}
|
||||
if (inode != dentry->d_inode)
|
||||
if (inode != d_inode(dentry))
|
||||
goto out_drop;
|
||||
|
||||
nfs_set_verifier(dentry, nfs_save_change_attribute(dir));
|
||||
|
@@ -375,7 +375,7 @@ static struct vfsmount *nfs_do_refmount(struct rpc_clnt *client, struct dentry *
|
||||
dprintk("%s: getting locations for %pd2\n",
|
||||
__func__, dentry);
|
||||
|
||||
err = nfs4_proc_fs_locations(client, parent->d_inode, &dentry->d_name, fs_locations, page);
|
||||
err = nfs4_proc_fs_locations(client, d_inode(parent), &dentry->d_name, fs_locations, page);
|
||||
dput(parent);
|
||||
if (err != 0 ||
|
||||
fs_locations->nlocations <= 0 ||
|
||||
@@ -396,7 +396,7 @@ struct vfsmount *nfs4_submount(struct nfs_server *server, struct dentry *dentry,
|
||||
{
|
||||
rpc_authflavor_t flavor = server->client->cl_auth->au_flavor;
|
||||
struct dentry *parent = dget_parent(dentry);
|
||||
struct inode *dir = parent->d_inode;
|
||||
struct inode *dir = d_inode(parent);
|
||||
struct qstr *name = &dentry->d_name;
|
||||
struct rpc_clnt *client;
|
||||
struct vfsmount *mnt;
|
||||
|
@@ -293,7 +293,7 @@ static void nfs4_setup_readdir(u64 cookie, __be32 *verifier, struct dentry *dent
|
||||
*p++ = xdr_one; /* bitmap length */
|
||||
*p++ = htonl(FATTR4_WORD0_FILEID); /* bitmap */
|
||||
*p++ = htonl(8); /* attribute buffer length */
|
||||
p = xdr_encode_hyper(p, NFS_FILEID(dentry->d_inode));
|
||||
p = xdr_encode_hyper(p, NFS_FILEID(d_inode(dentry)));
|
||||
}
|
||||
|
||||
*p++ = xdr_one; /* next */
|
||||
@@ -305,7 +305,7 @@ static void nfs4_setup_readdir(u64 cookie, __be32 *verifier, struct dentry *dent
|
||||
*p++ = xdr_one; /* bitmap length */
|
||||
*p++ = htonl(FATTR4_WORD0_FILEID); /* bitmap */
|
||||
*p++ = htonl(8); /* attribute buffer length */
|
||||
p = xdr_encode_hyper(p, NFS_FILEID(dentry->d_parent->d_inode));
|
||||
p = xdr_encode_hyper(p, NFS_FILEID(d_inode(dentry->d_parent)));
|
||||
|
||||
readdir->pgbase = (char *)p - (char *)start;
|
||||
readdir->count -= readdir->pgbase;
|
||||
@@ -1004,7 +1004,7 @@ static struct nfs4_opendata *nfs4_opendata_alloc(struct dentry *dentry,
|
||||
gfp_t gfp_mask)
|
||||
{
|
||||
struct dentry *parent = dget_parent(dentry);
|
||||
struct inode *dir = parent->d_inode;
|
||||
struct inode *dir = d_inode(parent);
|
||||
struct nfs_server *server = NFS_SERVER(dir);
|
||||
struct nfs_seqid *(*alloc_seqid)(struct nfs_seqid_counter *, gfp_t);
|
||||
struct nfs4_opendata *p;
|
||||
@@ -1057,7 +1057,7 @@ static struct nfs4_opendata *nfs4_opendata_alloc(struct dentry *dentry,
|
||||
case NFS4_OPEN_CLAIM_FH:
|
||||
case NFS4_OPEN_CLAIM_DELEG_CUR_FH:
|
||||
case NFS4_OPEN_CLAIM_DELEG_PREV_FH:
|
||||
p->o_arg.fh = NFS_FH(dentry->d_inode);
|
||||
p->o_arg.fh = NFS_FH(d_inode(dentry));
|
||||
}
|
||||
if (attrs != NULL && attrs->ia_valid != 0) {
|
||||
__u32 verf[2];
|
||||
@@ -1794,7 +1794,7 @@ static const struct rpc_call_ops nfs4_open_confirm_ops = {
|
||||
*/
|
||||
static int _nfs4_proc_open_confirm(struct nfs4_opendata *data)
|
||||
{
|
||||
struct nfs_server *server = NFS_SERVER(data->dir->d_inode);
|
||||
struct nfs_server *server = NFS_SERVER(d_inode(data->dir));
|
||||
struct rpc_task *task;
|
||||
struct rpc_message msg = {
|
||||
.rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_OPEN_CONFIRM],
|
||||
@@ -1951,7 +1951,7 @@ static const struct rpc_call_ops nfs4_open_ops = {
|
||||
|
||||
static int nfs4_run_open_task(struct nfs4_opendata *data, int isrecover)
|
||||
{
|
||||
struct inode *dir = data->dir->d_inode;
|
||||
struct inode *dir = d_inode(data->dir);
|
||||
struct nfs_server *server = NFS_SERVER(dir);
|
||||
struct nfs_openargs *o_arg = &data->o_arg;
|
||||
struct nfs_openres *o_res = &data->o_res;
|
||||
@@ -1998,7 +1998,7 @@ static int nfs4_run_open_task(struct nfs4_opendata *data, int isrecover)
|
||||
|
||||
static int _nfs4_recover_proc_open(struct nfs4_opendata *data)
|
||||
{
|
||||
struct inode *dir = data->dir->d_inode;
|
||||
struct inode *dir = d_inode(data->dir);
|
||||
struct nfs_openres *o_res = &data->o_res;
|
||||
int status;
|
||||
|
||||
@@ -2067,7 +2067,7 @@ static int nfs4_opendata_access(struct rpc_cred *cred,
|
||||
*/
|
||||
static int _nfs4_proc_open(struct nfs4_opendata *data)
|
||||
{
|
||||
struct inode *dir = data->dir->d_inode;
|
||||
struct inode *dir = d_inode(data->dir);
|
||||
struct nfs_server *server = NFS_SERVER(dir);
|
||||
struct nfs_openargs *o_arg = &data->o_arg;
|
||||
struct nfs_openres *o_res = &data->o_res;
|
||||
@@ -2314,7 +2314,7 @@ static int _nfs4_open_and_get_state(struct nfs4_opendata *opendata,
|
||||
set_bit(NFS_STATE_POSIX_LOCKS, &state->flags);
|
||||
|
||||
dentry = opendata->dentry;
|
||||
if (dentry->d_inode == NULL) {
|
||||
if (d_really_is_negative(dentry)) {
|
||||
/* FIXME: Is this d_drop() ever needed? */
|
||||
d_drop(dentry);
|
||||
dentry = d_add_unique(dentry, igrab(state->inode));
|
||||
@@ -2325,7 +2325,7 @@ static int _nfs4_open_and_get_state(struct nfs4_opendata *opendata,
|
||||
ctx->dentry = dget(dentry);
|
||||
}
|
||||
nfs_set_verifier(dentry,
|
||||
nfs_save_change_attribute(opendata->dir->d_inode));
|
||||
nfs_save_change_attribute(d_inode(opendata->dir)));
|
||||
}
|
||||
|
||||
ret = nfs4_opendata_access(sp->so_cred, opendata, state, fmode, flags);
|
||||
@@ -2333,7 +2333,7 @@ static int _nfs4_open_and_get_state(struct nfs4_opendata *opendata,
|
||||
goto out;
|
||||
|
||||
ctx->state = state;
|
||||
if (dentry->d_inode == state->inode) {
|
||||
if (d_inode(dentry) == state->inode) {
|
||||
nfs_inode_attach_open_context(ctx);
|
||||
if (read_seqcount_retry(&sp->so_reclaim_seqcount, seq))
|
||||
nfs4_schedule_stateid_recovery(server, state);
|
||||
@@ -2374,10 +2374,10 @@ static int _nfs4_do_open(struct inode *dir,
|
||||
status = nfs4_recover_expired_lease(server);
|
||||
if (status != 0)
|
||||
goto err_put_state_owner;
|
||||
if (dentry->d_inode != NULL)
|
||||
nfs4_return_incompatible_delegation(dentry->d_inode, fmode);
|
||||
if (d_really_is_positive(dentry))
|
||||
nfs4_return_incompatible_delegation(d_inode(dentry), fmode);
|
||||
status = -ENOMEM;
|
||||
if (dentry->d_inode)
|
||||
if (d_really_is_positive(dentry))
|
||||
claim = NFS4_OPEN_CLAIM_FH;
|
||||
opendata = nfs4_opendata_alloc(dentry, sp, fmode, flags, sattr,
|
||||
label, claim, GFP_KERNEL);
|
||||
@@ -2400,8 +2400,8 @@ static int _nfs4_do_open(struct inode *dir,
|
||||
}
|
||||
opendata->o_arg.open_bitmap = &nfs4_pnfs_open_bitmap[0];
|
||||
}
|
||||
if (dentry->d_inode != NULL)
|
||||
opendata->state = nfs4_get_open_state(dentry->d_inode, sp);
|
||||
if (d_really_is_positive(dentry))
|
||||
opendata->state = nfs4_get_open_state(d_inode(dentry), sp);
|
||||
|
||||
status = _nfs4_open_and_get_state(opendata, fmode, flags, ctx);
|
||||
if (status != 0)
|
||||
@@ -3254,7 +3254,7 @@ static int
|
||||
nfs4_proc_setattr(struct dentry *dentry, struct nfs_fattr *fattr,
|
||||
struct iattr *sattr)
|
||||
{
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct inode *inode = d_inode(dentry);
|
||||
struct rpc_cred *cred = NULL;
|
||||
struct nfs4_state *state = NULL;
|
||||
struct nfs4_label *label = NULL;
|
||||
@@ -3871,13 +3871,13 @@ static int nfs4_proc_mkdir(struct inode *dir, struct dentry *dentry,
|
||||
static int _nfs4_proc_readdir(struct dentry *dentry, struct rpc_cred *cred,
|
||||
u64 cookie, struct page **pages, unsigned int count, int plus)
|
||||
{
|
||||
struct inode *dir = dentry->d_inode;
|
||||
struct inode *dir = d_inode(dentry);
|
||||
struct nfs4_readdir_arg args = {
|
||||
.fh = NFS_FH(dir),
|
||||
.pages = pages,
|
||||
.pgbase = 0,
|
||||
.count = count,
|
||||
.bitmask = NFS_SERVER(dentry->d_inode)->attr_bitmask,
|
||||
.bitmask = NFS_SERVER(d_inode(dentry))->attr_bitmask,
|
||||
.plus = plus,
|
||||
};
|
||||
struct nfs4_readdir_res res;
|
||||
@@ -3914,8 +3914,8 @@ static int nfs4_proc_readdir(struct dentry *dentry, struct rpc_cred *cred,
|
||||
do {
|
||||
err = _nfs4_proc_readdir(dentry, cred, cookie,
|
||||
pages, count, plus);
|
||||
trace_nfs4_readdir(dentry->d_inode, err);
|
||||
err = nfs4_handle_exception(NFS_SERVER(dentry->d_inode), err,
|
||||
trace_nfs4_readdir(d_inode(dentry), err);
|
||||
err = nfs4_handle_exception(NFS_SERVER(d_inode(dentry)), err,
|
||||
&exception);
|
||||
} while (exception.retry);
|
||||
return err;
|
||||
@@ -4830,7 +4830,7 @@ nfs4_set_security_label(struct dentry *dentry, const void *buf, size_t buflen)
|
||||
struct nfs4_label ilabel, *olabel = NULL;
|
||||
struct nfs_fattr fattr;
|
||||
struct rpc_cred *cred;
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct inode *inode = d_inode(dentry);
|
||||
int status;
|
||||
|
||||
if (!nfs_server_capable(inode, NFS_CAP_SECURITY_LABEL))
|
||||
@@ -5670,7 +5670,7 @@ static void nfs4_lock_done(struct rpc_task *task, void *calldata)
|
||||
data->rpc_status = task->tk_status;
|
||||
switch (task->tk_status) {
|
||||
case 0:
|
||||
renew_lease(NFS_SERVER(data->ctx->dentry->d_inode),
|
||||
renew_lease(NFS_SERVER(d_inode(data->ctx->dentry)),
|
||||
data->timestamp);
|
||||
if (data->arg.new_lock) {
|
||||
data->fl.fl_flags &= ~(FL_SLEEP | FL_ACCESS);
|
||||
@@ -6112,7 +6112,7 @@ static int nfs4_xattr_set_nfs4_acl(struct dentry *dentry, const char *key,
|
||||
if (strcmp(key, "") != 0)
|
||||
return -EINVAL;
|
||||
|
||||
return nfs4_proc_set_acl(dentry->d_inode, buf, buflen);
|
||||
return nfs4_proc_set_acl(d_inode(dentry), buf, buflen);
|
||||
}
|
||||
|
||||
static int nfs4_xattr_get_nfs4_acl(struct dentry *dentry, const char *key,
|
||||
@@ -6121,7 +6121,7 @@ static int nfs4_xattr_get_nfs4_acl(struct dentry *dentry, const char *key,
|
||||
if (strcmp(key, "") != 0)
|
||||
return -EINVAL;
|
||||
|
||||
return nfs4_proc_get_acl(dentry->d_inode, buf, buflen);
|
||||
return nfs4_proc_get_acl(d_inode(dentry), buf, buflen);
|
||||
}
|
||||
|
||||
static size_t nfs4_xattr_list_nfs4_acl(struct dentry *dentry, char *list,
|
||||
@@ -6130,7 +6130,7 @@ static size_t nfs4_xattr_list_nfs4_acl(struct dentry *dentry, char *list,
|
||||
{
|
||||
size_t len = sizeof(XATTR_NAME_NFSV4_ACL);
|
||||
|
||||
if (!nfs4_server_supports_acls(NFS_SERVER(dentry->d_inode)))
|
||||
if (!nfs4_server_supports_acls(NFS_SERVER(d_inode(dentry))))
|
||||
return 0;
|
||||
|
||||
if (list && len <= list_len)
|
||||
@@ -6158,7 +6158,7 @@ static int nfs4_xattr_get_nfs4_label(struct dentry *dentry, const char *key,
|
||||
void *buf, size_t buflen, int type)
|
||||
{
|
||||
if (security_ismaclabel(key))
|
||||
return nfs4_get_security_label(dentry->d_inode, buf, buflen);
|
||||
return nfs4_get_security_label(d_inode(dentry), buf, buflen);
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
@@ -6168,10 +6168,10 @@ static size_t nfs4_xattr_list_nfs4_label(struct dentry *dentry, char *list,
|
||||
{
|
||||
size_t len = 0;
|
||||
|
||||
if (nfs_server_capable(dentry->d_inode, NFS_CAP_SECURITY_LABEL)) {
|
||||
len = security_inode_listsecurity(dentry->d_inode, NULL, 0);
|
||||
if (nfs_server_capable(d_inode(dentry), NFS_CAP_SECURITY_LABEL)) {
|
||||
len = security_inode_listsecurity(d_inode(dentry), NULL, 0);
|
||||
if (list && len <= list_len)
|
||||
security_inode_listsecurity(dentry->d_inode, list, len);
|
||||
security_inode_listsecurity(d_inode(dentry), list, len);
|
||||
}
|
||||
return len;
|
||||
}
|
||||
|
@@ -1902,7 +1902,7 @@ static int nfs4_try_migration(struct nfs_server *server, struct rpc_cred *cred)
|
||||
goto out;
|
||||
}
|
||||
|
||||
inode = server->super->s_root->d_inode;
|
||||
inode = d_inode(server->super->s_root);
|
||||
result = nfs4_proc_get_locations(inode, locations, page, cred);
|
||||
if (result) {
|
||||
dprintk("<-- %s: failed to retrieve fs_locations: %d\n",
|
||||
@@ -2021,7 +2021,7 @@ restart:
|
||||
|
||||
rcu_read_unlock();
|
||||
|
||||
inode = server->super->s_root->d_inode;
|
||||
inode = d_inode(server->super->s_root);
|
||||
status = nfs4_proc_fsid_present(inode, cred);
|
||||
if (status != -NFS4ERR_MOVED)
|
||||
goto restart; /* wasn't this one */
|
||||
|
@@ -418,7 +418,7 @@ DECLARE_EVENT_CLASS(nfs4_open_event,
|
||||
__entry->fileid = 0;
|
||||
__entry->fhandle = 0;
|
||||
}
|
||||
__entry->dir = NFS_FILEID(ctx->dentry->d_parent->d_inode);
|
||||
__entry->dir = NFS_FILEID(d_inode(ctx->dentry->d_parent));
|
||||
__assign_str(name, ctx->dentry->d_name.name);
|
||||
),
|
||||
|
||||
@@ -1110,7 +1110,7 @@ TRACE_EVENT(nfs4_layoutget,
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
const struct inode *inode = ctx->dentry->d_inode;
|
||||
const struct inode *inode = d_inode(ctx->dentry);
|
||||
__entry->dev = inode->i_sb->s_dev;
|
||||
__entry->fileid = NFS_FILEID(inode);
|
||||
__entry->fhandle = nfs_fhandle_hash(NFS_FH(inode));
|
||||
|
@@ -938,7 +938,7 @@ static bool nfs_can_coalesce_requests(struct nfs_page *prev,
|
||||
if (prev) {
|
||||
if (!nfs_match_open_context(req->wb_context, prev->wb_context))
|
||||
return false;
|
||||
flctx = req->wb_context->dentry->d_inode->i_flctx;
|
||||
flctx = d_inode(req->wb_context->dentry)->i_flctx;
|
||||
if (flctx != NULL &&
|
||||
!(list_empty_careful(&flctx->flc_posix) &&
|
||||
list_empty_careful(&flctx->flc_flock)) &&
|
||||
|
@@ -426,7 +426,7 @@ static inline bool
|
||||
pnfs_mark_request_commit(struct nfs_page *req, struct pnfs_layout_segment *lseg,
|
||||
struct nfs_commit_info *cinfo, u32 ds_commit_idx)
|
||||
{
|
||||
struct inode *inode = req->wb_context->dentry->d_inode;
|
||||
struct inode *inode = d_inode(req->wb_context->dentry);
|
||||
struct pnfs_layoutdriver_type *ld = NFS_SERVER(inode)->pnfs_curr_ld;
|
||||
|
||||
if (lseg == NULL || ld->mark_request_commit == NULL)
|
||||
@@ -438,7 +438,7 @@ pnfs_mark_request_commit(struct nfs_page *req, struct pnfs_layout_segment *lseg,
|
||||
static inline bool
|
||||
pnfs_clear_request_commit(struct nfs_page *req, struct nfs_commit_info *cinfo)
|
||||
{
|
||||
struct inode *inode = req->wb_context->dentry->d_inode;
|
||||
struct inode *inode = d_inode(req->wb_context->dentry);
|
||||
struct pnfs_layoutdriver_type *ld = NFS_SERVER(inode)->pnfs_curr_ld;
|
||||
|
||||
if (ld == NULL || ld->clear_request_commit == NULL)
|
||||
|
@@ -118,7 +118,7 @@ static int
|
||||
nfs_proc_setattr(struct dentry *dentry, struct nfs_fattr *fattr,
|
||||
struct iattr *sattr)
|
||||
{
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct inode *inode = d_inode(dentry);
|
||||
struct nfs_sattrargs arg = {
|
||||
.fh = NFS_FH(inode),
|
||||
.sattr = sattr
|
||||
@@ -487,7 +487,7 @@ static int
|
||||
nfs_proc_readdir(struct dentry *dentry, struct rpc_cred *cred,
|
||||
u64 cookie, struct page **pages, unsigned int count, int plus)
|
||||
{
|
||||
struct inode *dir = dentry->d_inode;
|
||||
struct inode *dir = d_inode(dentry);
|
||||
struct nfs_readdirargs arg = {
|
||||
.fh = NFS_FH(dir),
|
||||
.cookie = cookie,
|
||||
|
@@ -117,7 +117,7 @@ int nfs_readpage_async(struct nfs_open_context *ctx, struct inode *inode,
|
||||
|
||||
static void nfs_readpage_release(struct nfs_page *req)
|
||||
{
|
||||
struct inode *inode = req->wb_context->dentry->d_inode;
|
||||
struct inode *inode = d_inode(req->wb_context->dentry);
|
||||
|
||||
dprintk("NFS: read done (%s/%llu %d@%lld)\n", inode->i_sb->s_id,
|
||||
(unsigned long long)NFS_FILEID(inode), req->wb_bytes,
|
||||
|
@@ -433,7 +433,7 @@ int nfs_statfs(struct dentry *dentry, struct kstatfs *buf)
|
||||
struct nfs_server *server = NFS_SB(dentry->d_sb);
|
||||
unsigned char blockbits;
|
||||
unsigned long blockres;
|
||||
struct nfs_fh *fh = NFS_FH(dentry->d_inode);
|
||||
struct nfs_fh *fh = NFS_FH(d_inode(dentry));
|
||||
struct nfs_fsstat res;
|
||||
int error = -ENOMEM;
|
||||
|
||||
@@ -447,7 +447,7 @@ int nfs_statfs(struct dentry *dentry, struct kstatfs *buf)
|
||||
|
||||
pd_dentry = dget_parent(dentry);
|
||||
if (pd_dentry != NULL) {
|
||||
nfs_zap_caches(pd_dentry->d_inode);
|
||||
nfs_zap_caches(d_inode(pd_dentry));
|
||||
dput(pd_dentry);
|
||||
}
|
||||
}
|
||||
@@ -2526,7 +2526,7 @@ int nfs_clone_sb_security(struct super_block *s, struct dentry *mntroot,
|
||||
struct nfs_mount_info *mount_info)
|
||||
{
|
||||
/* clone any lsm security options from the parent to the new sb */
|
||||
if (mntroot->d_inode->i_op != NFS_SB(s)->nfs_client->rpc_ops->dir_inode_ops)
|
||||
if (d_inode(mntroot)->i_op != NFS_SB(s)->nfs_client->rpc_ops->dir_inode_ops)
|
||||
return -ESTALE;
|
||||
return security_sb_clone_mnt_opts(mount_info->cloned->sb, s);
|
||||
}
|
||||
|
@@ -45,7 +45,7 @@ error:
|
||||
|
||||
static void *nfs_follow_link(struct dentry *dentry, struct nameidata *nd)
|
||||
{
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct inode *inode = d_inode(dentry);
|
||||
struct page *page;
|
||||
void *err;
|
||||
|
||||
|
@@ -143,7 +143,7 @@ static int nfs_do_call_unlink(struct dentry *parent, struct inode *dir, struct n
|
||||
nfs_free_dname(data);
|
||||
ret = nfs_copy_dname(alias, data);
|
||||
spin_lock(&alias->d_lock);
|
||||
if (ret == 0 && alias->d_inode != NULL &&
|
||||
if (ret == 0 && d_really_is_positive(alias) &&
|
||||
!(alias->d_flags & DCACHE_NFSFS_RENAMED)) {
|
||||
devname_garbage = alias->d_fsdata;
|
||||
alias->d_fsdata = data;
|
||||
@@ -190,7 +190,7 @@ static int nfs_call_unlink(struct dentry *dentry, struct nfs_unlinkdata *data)
|
||||
parent = dget_parent(dentry);
|
||||
if (parent == NULL)
|
||||
goto out_free;
|
||||
dir = parent->d_inode;
|
||||
dir = d_inode(parent);
|
||||
/* Non-exclusive lock protects against concurrent lookup() calls */
|
||||
spin_lock(&dir->i_lock);
|
||||
if (atomic_inc_not_zero(&NFS_I(dir)->silly_count) == 0) {
|
||||
@@ -210,21 +210,21 @@ out_free:
|
||||
|
||||
void nfs_wait_on_sillyrename(struct dentry *dentry)
|
||||
{
|
||||
struct nfs_inode *nfsi = NFS_I(dentry->d_inode);
|
||||
struct nfs_inode *nfsi = NFS_I(d_inode(dentry));
|
||||
|
||||
wait_event(nfsi->waitqueue, atomic_read(&nfsi->silly_count) <= 1);
|
||||
}
|
||||
|
||||
void nfs_block_sillyrename(struct dentry *dentry)
|
||||
{
|
||||
struct nfs_inode *nfsi = NFS_I(dentry->d_inode);
|
||||
struct nfs_inode *nfsi = NFS_I(d_inode(dentry));
|
||||
|
||||
wait_event(nfsi->waitqueue, atomic_cmpxchg(&nfsi->silly_count, 1, 0) == 1);
|
||||
}
|
||||
|
||||
void nfs_unblock_sillyrename(struct dentry *dentry)
|
||||
{
|
||||
struct inode *dir = dentry->d_inode;
|
||||
struct inode *dir = d_inode(dentry);
|
||||
struct nfs_inode *nfsi = NFS_I(dir);
|
||||
struct nfs_unlinkdata *data;
|
||||
|
||||
@@ -367,8 +367,8 @@ static void nfs_async_rename_release(void *calldata)
|
||||
struct nfs_renamedata *data = calldata;
|
||||
struct super_block *sb = data->old_dir->i_sb;
|
||||
|
||||
if (data->old_dentry->d_inode)
|
||||
nfs_mark_for_revalidate(data->old_dentry->d_inode);
|
||||
if (d_really_is_positive(data->old_dentry))
|
||||
nfs_mark_for_revalidate(d_inode(data->old_dentry));
|
||||
|
||||
dput(data->old_dentry);
|
||||
dput(data->new_dentry);
|
||||
@@ -529,10 +529,10 @@ nfs_sillyrename(struct inode *dir, struct dentry *dentry)
|
||||
if (dentry->d_flags & DCACHE_NFSFS_RENAMED)
|
||||
goto out;
|
||||
|
||||
fileid = NFS_FILEID(dentry->d_inode);
|
||||
fileid = NFS_FILEID(d_inode(dentry));
|
||||
|
||||
/* Return delegation in anticipation of the rename */
|
||||
NFS_PROTO(dentry->d_inode)->return_delegation(dentry->d_inode);
|
||||
NFS_PROTO(d_inode(dentry))->return_delegation(d_inode(dentry));
|
||||
|
||||
sdentry = NULL;
|
||||
do {
|
||||
@@ -554,7 +554,7 @@ nfs_sillyrename(struct inode *dir, struct dentry *dentry)
|
||||
*/
|
||||
if (IS_ERR(sdentry))
|
||||
goto out;
|
||||
} while (sdentry->d_inode != NULL); /* need negative lookup */
|
||||
} while (d_inode(sdentry) != NULL); /* need negative lookup */
|
||||
|
||||
/* queue unlink first. Can't do this from rpc_release as it
|
||||
* has to allocate memory
|
||||
|
@@ -702,7 +702,7 @@ static void nfs_inode_add_request(struct inode *inode, struct nfs_page *req)
|
||||
*/
|
||||
static void nfs_inode_remove_request(struct nfs_page *req)
|
||||
{
|
||||
struct inode *inode = req->wb_context->dentry->d_inode;
|
||||
struct inode *inode = d_inode(req->wb_context->dentry);
|
||||
struct nfs_inode *nfsi = NFS_I(inode);
|
||||
struct nfs_page *head;
|
||||
|
||||
@@ -861,7 +861,7 @@ static void
|
||||
nfs_clear_request_commit(struct nfs_page *req)
|
||||
{
|
||||
if (test_bit(PG_CLEAN, &req->wb_flags)) {
|
||||
struct inode *inode = req->wb_context->dentry->d_inode;
|
||||
struct inode *inode = d_inode(req->wb_context->dentry);
|
||||
struct nfs_commit_info cinfo;
|
||||
|
||||
nfs_init_cinfo_from_inode(&cinfo, inode);
|
||||
@@ -1591,7 +1591,7 @@ void nfs_init_commit(struct nfs_commit_data *data,
|
||||
struct nfs_commit_info *cinfo)
|
||||
{
|
||||
struct nfs_page *first = nfs_list_entry(head->next);
|
||||
struct inode *inode = first->wb_context->dentry->d_inode;
|
||||
struct inode *inode = d_inode(first->wb_context->dentry);
|
||||
|
||||
/* Set up the RPC argument and reply structs
|
||||
* NB: take care not to mess about with data->commit et al. */
|
||||
@@ -1690,7 +1690,7 @@ static void nfs_commit_release_pages(struct nfs_commit_data *data)
|
||||
|
||||
dprintk("NFS: commit (%s/%llu %d@%lld)",
|
||||
req->wb_context->dentry->d_sb->s_id,
|
||||
(unsigned long long)NFS_FILEID(req->wb_context->dentry->d_inode),
|
||||
(unsigned long long)NFS_FILEID(d_inode(req->wb_context->dentry)),
|
||||
req->wb_bytes,
|
||||
(long long)req_offset(req));
|
||||
if (status < 0) {
|
||||
|
Reference in New Issue
Block a user