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:
parent
ce0b16ddf1
commit
2b0143b5c9
278 changed files with 1419 additions and 1420 deletions
|
|
@ -153,7 +153,7 @@ static int ll_ddelete(const struct dentry *de)
|
|||
|
||||
CDEBUG(D_DENTRY, "%s dentry %pd (%p, parent %p, inode %p) %s%s\n",
|
||||
d_lustre_invalid((struct dentry *)de) ? "deleting" : "keeping",
|
||||
de, de, de->d_parent, de->d_inode,
|
||||
de, de, de->d_parent, d_inode(de),
|
||||
d_unhashed(de) ? "" : "hashed,",
|
||||
list_empty(&de->d_subdirs) ? "" : "subdirs");
|
||||
|
||||
|
|
@ -167,8 +167,8 @@ static int ll_ddelete(const struct dentry *de)
|
|||
#if 0
|
||||
/* if not ldlm lock for this inode, set i_nlink to 0 so that
|
||||
* this inode can be recycled later b=20433 */
|
||||
if (de->d_inode && !find_cbdata(de->d_inode))
|
||||
clear_nlink(de->d_inode);
|
||||
if (d_really_is_positive(de) && !find_cbdata(d_inode(de)))
|
||||
clear_nlink(d_inode(de));
|
||||
#endif
|
||||
|
||||
if (d_lustre_invalid((struct dentry *)de))
|
||||
|
|
@ -181,7 +181,7 @@ int ll_d_init(struct dentry *de)
|
|||
LASSERT(de != NULL);
|
||||
|
||||
CDEBUG(D_DENTRY, "ldd on dentry %pd (%p) parent %p inode %p refc %d\n",
|
||||
de, de, de->d_parent, de->d_inode,
|
||||
de, de, de->d_parent, d_inode(de),
|
||||
d_count(de));
|
||||
|
||||
if (de->d_fsdata == NULL) {
|
||||
|
|
@ -261,7 +261,7 @@ void ll_invalidate_aliases(struct inode *inode)
|
|||
ll_d_hlist_for_each_entry(dentry, p, &inode->i_dentry, d_u.d_alias) {
|
||||
CDEBUG(D_DENTRY, "dentry in drop %pd (%p) parent %p inode %p flags %d\n",
|
||||
dentry, dentry, dentry->d_parent,
|
||||
dentry->d_inode, dentry->d_flags);
|
||||
d_inode(dentry), dentry->d_flags);
|
||||
|
||||
d_lustre_invalidate(dentry, 0);
|
||||
}
|
||||
|
|
@ -309,7 +309,7 @@ void ll_lookup_finish_locks(struct lookup_intent *it, struct inode *inode)
|
|||
static int ll_revalidate_dentry(struct dentry *dentry,
|
||||
unsigned int lookup_flags)
|
||||
{
|
||||
struct inode *dir = dentry->d_parent->d_inode;
|
||||
struct inode *dir = d_inode(dentry->d_parent);
|
||||
|
||||
/*
|
||||
* if open&create is set, talk to MDS to make sure file is created if
|
||||
|
|
@ -329,7 +329,7 @@ static int ll_revalidate_dentry(struct dentry *dentry,
|
|||
if (lookup_flags & LOOKUP_RCU)
|
||||
return -ECHILD;
|
||||
|
||||
do_statahead_enter(dir, &dentry, dentry->d_inode == NULL);
|
||||
do_statahead_enter(dir, &dentry, d_inode(dentry) == NULL);
|
||||
ll_statahead_mark(dir, dentry);
|
||||
return 1;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -387,7 +387,7 @@ int ll_file_release(struct inode *inode, struct file *file)
|
|||
static int ll_intent_file_open(struct dentry *dentry, void *lmm,
|
||||
int lmmsize, struct lookup_intent *itp)
|
||||
{
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct inode *inode = d_inode(dentry);
|
||||
struct ll_sb_info *sbi = ll_i2sbi(inode);
|
||||
struct dentry *parent = dentry->d_parent;
|
||||
const char *name = dentry->d_name.name;
|
||||
|
|
@ -412,7 +412,7 @@ static int ll_intent_file_open(struct dentry *dentry, void *lmm,
|
|||
opc = LUSTRE_OPC_CREATE;
|
||||
}
|
||||
|
||||
op_data = ll_prep_md_op_data(NULL, parent->d_inode,
|
||||
op_data = ll_prep_md_op_data(NULL, d_inode(parent),
|
||||
inode, name, len,
|
||||
O_RDWR, opc, NULL);
|
||||
if (IS_ERR(op_data))
|
||||
|
|
@ -2889,7 +2889,7 @@ static int ll_inode_revalidate_fini(struct inode *inode, int rc)
|
|||
|
||||
static int __ll_inode_revalidate(struct dentry *dentry, __u64 ibits)
|
||||
{
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct inode *inode = d_inode(dentry);
|
||||
struct ptlrpc_request *req = NULL;
|
||||
struct obd_export *exp;
|
||||
int rc = 0;
|
||||
|
|
@ -2941,12 +2941,12 @@ static int __ll_inode_revalidate(struct dentry *dentry, __u64 ibits)
|
|||
do_lookup() -> ll_revalidate_it(). We cannot use d_drop
|
||||
here to preserve get_cwd functionality on 2.6.
|
||||
Bug 10503 */
|
||||
if (!dentry->d_inode->i_nlink)
|
||||
if (!d_inode(dentry)->i_nlink)
|
||||
d_lustre_invalidate(dentry, 0);
|
||||
|
||||
ll_lookup_finish_locks(&oit, inode);
|
||||
} else if (!ll_have_md_lock(dentry->d_inode, &ibits, LCK_MINMODE)) {
|
||||
struct ll_sb_info *sbi = ll_i2sbi(dentry->d_inode);
|
||||
} else if (!ll_have_md_lock(d_inode(dentry), &ibits, LCK_MINMODE)) {
|
||||
struct ll_sb_info *sbi = ll_i2sbi(d_inode(dentry));
|
||||
u64 valid = OBD_MD_FLGETATTR;
|
||||
struct md_op_data *op_data;
|
||||
int ealen = 0;
|
||||
|
|
@ -2984,7 +2984,7 @@ out:
|
|||
|
||||
static int ll_inode_revalidate(struct dentry *dentry, __u64 ibits)
|
||||
{
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct inode *inode = d_inode(dentry);
|
||||
int rc;
|
||||
|
||||
rc = __ll_inode_revalidate(dentry, ibits);
|
||||
|
|
@ -3012,7 +3012,7 @@ static int ll_inode_revalidate(struct dentry *dentry, __u64 ibits)
|
|||
|
||||
int ll_getattr(struct vfsmount *mnt, struct dentry *de, struct kstat *stat)
|
||||
{
|
||||
struct inode *inode = de->d_inode;
|
||||
struct inode *inode = d_inode(de);
|
||||
struct ll_sb_info *sbi = ll_i2sbi(inode);
|
||||
struct ll_inode_info *lli = ll_i2info(inode);
|
||||
int res = 0;
|
||||
|
|
|
|||
|
|
@ -1488,7 +1488,7 @@ static inline void d_lustre_invalidate(struct dentry *dentry, int nested)
|
|||
{
|
||||
CDEBUG(D_DENTRY, "invalidate dentry %pd (%p) parent %p inode %p refc %d\n",
|
||||
dentry, dentry,
|
||||
dentry->d_parent, dentry->d_inode, d_count(dentry));
|
||||
dentry->d_parent, d_inode(dentry), d_count(dentry));
|
||||
|
||||
spin_lock_nested(&dentry->d_lock,
|
||||
nested ? DENTRY_D_LOCK_NESTED : DENTRY_D_LOCK_NORMAL);
|
||||
|
|
|
|||
|
|
@ -1169,7 +1169,7 @@ static int ll_md_setattr(struct dentry *dentry, struct md_op_data *op_data,
|
|||
struct md_open_data **mod)
|
||||
{
|
||||
struct lustre_md md;
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct inode *inode = d_inode(dentry);
|
||||
struct ll_sb_info *sbi = ll_i2sbi(inode);
|
||||
struct ptlrpc_request *request = NULL;
|
||||
int rc, ia_valid;
|
||||
|
|
@ -1293,7 +1293,7 @@ static int ll_setattr_ost(struct inode *inode, struct iattr *attr)
|
|||
*/
|
||||
int ll_setattr_raw(struct dentry *dentry, struct iattr *attr, bool hsm_import)
|
||||
{
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct inode *inode = d_inode(dentry);
|
||||
struct ll_inode_info *lli = ll_i2info(inode);
|
||||
struct md_op_data *op_data = NULL;
|
||||
struct md_open_data *mod = NULL;
|
||||
|
|
@ -1467,7 +1467,7 @@ out:
|
|||
|
||||
int ll_setattr(struct dentry *de, struct iattr *attr)
|
||||
{
|
||||
int mode = de->d_inode->i_mode;
|
||||
int mode = d_inode(de)->i_mode;
|
||||
|
||||
if ((attr->ia_valid & (ATTR_CTIME|ATTR_SIZE|ATTR_MODE)) ==
|
||||
(ATTR_CTIME|ATTR_SIZE|ATTR_MODE))
|
||||
|
|
|
|||
|
|
@ -230,11 +230,11 @@ static int ll_nfs_get_name_filldir(struct dir_context *ctx, const char *name,
|
|||
static int ll_get_name(struct dentry *dentry, char *name,
|
||||
struct dentry *child)
|
||||
{
|
||||
struct inode *dir = dentry->d_inode;
|
||||
struct inode *dir = d_inode(dentry);
|
||||
int rc;
|
||||
struct ll_getname_data lgd = {
|
||||
.lgd_name = name,
|
||||
.lgd_fid = ll_i2info(child->d_inode)->lli_fid,
|
||||
.lgd_fid = ll_i2info(d_inode(child))->lli_fid,
|
||||
.ctx.actor = ll_nfs_get_name_filldir,
|
||||
};
|
||||
|
||||
|
|
@ -282,7 +282,7 @@ static struct dentry *ll_fh_to_parent(struct super_block *sb, struct fid *fid,
|
|||
static struct dentry *ll_get_parent(struct dentry *dchild)
|
||||
{
|
||||
struct ptlrpc_request *req = NULL;
|
||||
struct inode *dir = dchild->d_inode;
|
||||
struct inode *dir = d_inode(dchild);
|
||||
struct ll_sb_info *sbi;
|
||||
struct dentry *result = NULL;
|
||||
struct mdt_body *body;
|
||||
|
|
|
|||
|
|
@ -154,7 +154,7 @@ static void ll_invalidate_negative_children(struct inode *dir)
|
|||
list_for_each_entry_safe(child, tmp_subdir,
|
||||
&dentry->d_subdirs,
|
||||
d_child) {
|
||||
if (child->d_inode == NULL)
|
||||
if (d_really_is_negative(child))
|
||||
d_lustre_invalidate(child, 1);
|
||||
}
|
||||
}
|
||||
|
|
@ -391,7 +391,7 @@ struct dentry *ll_splice_alias(struct inode *inode, struct dentry *de)
|
|||
iput(inode);
|
||||
CDEBUG(D_DENTRY,
|
||||
"Reuse dentry %p inode %p refc %d flags %#x\n",
|
||||
new, new->d_inode, d_count(new), new->d_flags);
|
||||
new, d_inode(new), d_count(new), new->d_flags);
|
||||
return new;
|
||||
}
|
||||
}
|
||||
|
|
@ -400,7 +400,7 @@ struct dentry *ll_splice_alias(struct inode *inode, struct dentry *de)
|
|||
return ERR_PTR(rc);
|
||||
d_add(de, inode);
|
||||
CDEBUG(D_DENTRY, "Add dentry %p inode %p refc %d flags %#x\n",
|
||||
de, de->d_inode, d_count(de), de->d_flags);
|
||||
de, d_inode(de), d_count(de), de->d_flags);
|
||||
return de;
|
||||
}
|
||||
|
||||
|
|
@ -447,7 +447,7 @@ static int ll_lookup_it_finish(struct ptlrpc_request *request,
|
|||
!it_disposition(it, DISP_OPEN_CREATE)) {
|
||||
/* With DISP_OPEN_CREATE dentry will
|
||||
instantiated in ll_create_it. */
|
||||
LASSERT((*de)->d_inode == NULL);
|
||||
LASSERT(d_inode(*de) == NULL);
|
||||
d_instantiate(*de, inode);
|
||||
}
|
||||
|
||||
|
|
@ -540,7 +540,7 @@ static struct dentry *ll_lookup_it(struct inode *parent, struct dentry *dentry,
|
|||
goto out;
|
||||
}
|
||||
|
||||
inode = dentry->d_inode;
|
||||
inode = d_inode(dentry);
|
||||
if ((it->it_op & IT_OPEN) && inode &&
|
||||
!S_ISREG(inode->i_mode) &&
|
||||
!S_ISDIR(inode->i_mode)) {
|
||||
|
|
@ -636,9 +636,9 @@ static int ll_atomic_open(struct inode *dir, struct dentry *dentry,
|
|||
|
||||
*opened |= FILE_CREATED;
|
||||
}
|
||||
if (dentry->d_inode && it_disposition(it, DISP_OPEN_OPEN)) {
|
||||
if (d_really_is_positive(dentry) && it_disposition(it, DISP_OPEN_OPEN)) {
|
||||
/* Open dentry. */
|
||||
if (S_ISFIFO(dentry->d_inode->i_mode)) {
|
||||
if (S_ISFIFO(d_inode(dentry)->i_mode)) {
|
||||
/* We cannot call open here as it would
|
||||
* deadlock.
|
||||
*/
|
||||
|
|
@ -860,8 +860,8 @@ static int ll_create_nd(struct inode *dir, struct dentry *dentry,
|
|||
|
||||
static inline void ll_get_child_fid(struct dentry *child, struct lu_fid *fid)
|
||||
{
|
||||
if (child->d_inode)
|
||||
*fid = *ll_inode2fid(child->d_inode);
|
||||
if (d_really_is_positive(child))
|
||||
*fid = *ll_inode2fid(d_inode(child));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1073,7 +1073,7 @@ static int ll_symlink(struct inode *dir, struct dentry *dentry,
|
|||
static int ll_link(struct dentry *old_dentry, struct inode *dir,
|
||||
struct dentry *new_dentry)
|
||||
{
|
||||
struct inode *src = old_dentry->d_inode;
|
||||
struct inode *src = d_inode(old_dentry);
|
||||
struct ll_sb_info *sbi = ll_i2sbi(dir);
|
||||
struct ptlrpc_request *request = NULL;
|
||||
struct md_op_data *op_data;
|
||||
|
|
|
|||
|
|
@ -871,7 +871,7 @@ static int do_sa_lookup(struct inode *dir, struct ll_sa_entry *entry)
|
|||
static int do_sa_revalidate(struct inode *dir, struct ll_sa_entry *entry,
|
||||
struct dentry *dentry)
|
||||
{
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct inode *inode = d_inode(dentry);
|
||||
struct lookup_intent it = { .it_op = IT_GETATTR,
|
||||
.d.lustre.it_lock_handle = 0 };
|
||||
struct md_enqueue_info *minfo;
|
||||
|
|
@ -917,7 +917,7 @@ static int do_sa_revalidate(struct inode *dir, struct ll_sa_entry *entry,
|
|||
static void ll_statahead_one(struct dentry *parent, const char *entry_name,
|
||||
int entry_name_len)
|
||||
{
|
||||
struct inode *dir = parent->d_inode;
|
||||
struct inode *dir = d_inode(parent);
|
||||
struct ll_inode_info *lli = ll_i2info(dir);
|
||||
struct ll_statahead_info *sai = lli->lli_sai;
|
||||
struct dentry *dentry = NULL;
|
||||
|
|
@ -935,8 +935,8 @@ static void ll_statahead_one(struct dentry *parent, const char *entry_name,
|
|||
rc = do_sa_lookup(dir, entry);
|
||||
} else {
|
||||
rc = do_sa_revalidate(dir, entry, dentry);
|
||||
if (rc == 1 && agl_should_run(sai, dentry->d_inode))
|
||||
ll_agl_add(sai, dentry->d_inode, entry->se_index);
|
||||
if (rc == 1 && agl_should_run(sai, d_inode(dentry)))
|
||||
ll_agl_add(sai, d_inode(dentry), entry->se_index);
|
||||
}
|
||||
|
||||
if (dentry != NULL)
|
||||
|
|
@ -959,7 +959,7 @@ static void ll_statahead_one(struct dentry *parent, const char *entry_name,
|
|||
static int ll_agl_thread(void *arg)
|
||||
{
|
||||
struct dentry *parent = (struct dentry *)arg;
|
||||
struct inode *dir = parent->d_inode;
|
||||
struct inode *dir = d_inode(parent);
|
||||
struct ll_inode_info *plli = ll_i2info(dir);
|
||||
struct ll_inode_info *clli;
|
||||
struct ll_sb_info *sbi = ll_i2sbi(dir);
|
||||
|
|
@ -1033,7 +1033,7 @@ static void ll_start_agl(struct dentry *parent, struct ll_statahead_info *sai)
|
|||
CDEBUG(D_READA, "start agl thread: sai %p, parent %pd\n",
|
||||
sai, parent);
|
||||
|
||||
plli = ll_i2info(parent->d_inode);
|
||||
plli = ll_i2info(d_inode(parent));
|
||||
task = kthread_run(ll_agl_thread, parent,
|
||||
"ll_agl_%u", plli->lli_opendir_pid);
|
||||
if (IS_ERR(task)) {
|
||||
|
|
@ -1050,7 +1050,7 @@ static void ll_start_agl(struct dentry *parent, struct ll_statahead_info *sai)
|
|||
static int ll_statahead_thread(void *arg)
|
||||
{
|
||||
struct dentry *parent = (struct dentry *)arg;
|
||||
struct inode *dir = parent->d_inode;
|
||||
struct inode *dir = d_inode(parent);
|
||||
struct ll_inode_info *plli = ll_i2info(dir);
|
||||
struct ll_inode_info *clli;
|
||||
struct ll_sb_info *sbi = ll_i2sbi(dir);
|
||||
|
|
@ -1595,7 +1595,7 @@ int do_statahead_enter(struct inode *dir, struct dentry **dentryp,
|
|||
rc = md_revalidate_lock(ll_i2mdexp(dir), &it,
|
||||
ll_inode2fid(inode), &bits);
|
||||
if (rc == 1) {
|
||||
if ((*dentryp)->d_inode == NULL) {
|
||||
if (d_inode(*dentryp) == NULL) {
|
||||
struct dentry *alias;
|
||||
|
||||
alias = ll_splice_alias(inode,
|
||||
|
|
@ -1605,13 +1605,13 @@ int do_statahead_enter(struct inode *dir, struct dentry **dentryp,
|
|||
return PTR_ERR(alias);
|
||||
}
|
||||
*dentryp = alias;
|
||||
} else if ((*dentryp)->d_inode != inode) {
|
||||
} else if (d_inode(*dentryp) != inode) {
|
||||
/* revalidate, but inode is recreated */
|
||||
CDEBUG(D_READA,
|
||||
"stale dentry %pd inode %lu/%u, statahead inode %lu/%u\n",
|
||||
*dentryp,
|
||||
(*dentryp)->d_inode->i_ino,
|
||||
(*dentryp)->d_inode->i_generation,
|
||||
d_inode(*dentryp)->i_ino,
|
||||
d_inode(*dentryp)->i_generation,
|
||||
inode->i_ino,
|
||||
inode->i_generation);
|
||||
ll_sai_unplug(sai, entry);
|
||||
|
|
@ -1657,8 +1657,8 @@ int do_statahead_enter(struct inode *dir, struct dentry **dentryp,
|
|||
|
||||
/* get parent reference count here, and put it in ll_statahead_thread */
|
||||
parent = dget((*dentryp)->d_parent);
|
||||
if (unlikely(sai->sai_inode != parent->d_inode)) {
|
||||
struct ll_inode_info *nlli = ll_i2info(parent->d_inode);
|
||||
if (unlikely(sai->sai_inode != d_inode(parent))) {
|
||||
struct ll_inode_info *nlli = ll_i2info(d_inode(parent));
|
||||
|
||||
CWARN("Race condition, someone changed %pd just now: old parent "DFID", new parent "DFID"\n",
|
||||
*dentryp,
|
||||
|
|
@ -1680,7 +1680,7 @@ int do_statahead_enter(struct inode *dir, struct dentry **dentryp,
|
|||
ll_sai_get(sai);
|
||||
lli->lli_sai = sai;
|
||||
|
||||
plli = ll_i2info(parent->d_inode);
|
||||
plli = ll_i2info(d_inode(parent));
|
||||
rc = PTR_ERR(kthread_run(ll_statahead_thread, parent,
|
||||
"ll_sa_%u", plli->lli_opendir_pid));
|
||||
thread = &sai->sai_thread;
|
||||
|
|
|
|||
|
|
@ -120,7 +120,7 @@ failed:
|
|||
|
||||
static void *ll_follow_link(struct dentry *dentry, struct nameidata *nd)
|
||||
{
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct inode *inode = d_inode(dentry);
|
||||
struct ptlrpc_request *request = NULL;
|
||||
int rc;
|
||||
char *symname = NULL;
|
||||
|
|
|
|||
|
|
@ -214,7 +214,7 @@ int ll_setxattr_common(struct inode *inode, const char *name,
|
|||
int ll_setxattr(struct dentry *dentry, const char *name,
|
||||
const void *value, size_t size, int flags)
|
||||
{
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct inode *inode = d_inode(dentry);
|
||||
|
||||
LASSERT(inode);
|
||||
LASSERT(name);
|
||||
|
|
@ -267,7 +267,7 @@ int ll_setxattr(struct dentry *dentry, const char *name,
|
|||
|
||||
int ll_removexattr(struct dentry *dentry, const char *name)
|
||||
{
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct inode *inode = d_inode(dentry);
|
||||
|
||||
LASSERT(inode);
|
||||
LASSERT(name);
|
||||
|
|
@ -457,7 +457,7 @@ out:
|
|||
ssize_t ll_getxattr(struct dentry *dentry, const char *name,
|
||||
void *buffer, size_t size)
|
||||
{
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct inode *inode = d_inode(dentry);
|
||||
|
||||
LASSERT(inode);
|
||||
LASSERT(name);
|
||||
|
|
@ -545,7 +545,7 @@ out:
|
|||
|
||||
ssize_t ll_listxattr(struct dentry *dentry, char *buffer, size_t size)
|
||||
{
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct inode *inode = d_inode(dentry);
|
||||
int rc = 0, rc2 = 0;
|
||||
struct lov_mds_md *lmm = NULL;
|
||||
struct ptlrpc_request *request = NULL;
|
||||
|
|
|
|||
|
|
@ -247,7 +247,7 @@ static int v9fs_xattr_get_acl(struct dentry *dentry, const char *name,
|
|||
if ((v9ses->flags & V9FS_ACCESS_MASK) != V9FS_ACCESS_CLIENT)
|
||||
return v9fs_remote_get_acl(dentry, name, buffer, size, type);
|
||||
|
||||
acl = v9fs_get_cached_acl(dentry->d_inode, type);
|
||||
acl = v9fs_get_cached_acl(d_inode(dentry), type);
|
||||
if (IS_ERR(acl))
|
||||
return PTR_ERR(acl);
|
||||
if (acl == NULL)
|
||||
|
|
@ -285,7 +285,7 @@ static int v9fs_xattr_set_acl(struct dentry *dentry, const char *name,
|
|||
int retval;
|
||||
struct posix_acl *acl;
|
||||
struct v9fs_session_info *v9ses;
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct inode *inode = d_inode(dentry);
|
||||
|
||||
if (strcmp(name, "") != 0)
|
||||
return -EINVAL;
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ static int v9fs_cached_dentry_delete(const struct dentry *dentry)
|
|||
dentry, dentry);
|
||||
|
||||
/* Don't cache negative dentries */
|
||||
if (!dentry->d_inode)
|
||||
if (d_really_is_negative(dentry))
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -83,7 +83,7 @@ static int v9fs_lookup_revalidate(struct dentry *dentry, unsigned int flags)
|
|||
if (flags & LOOKUP_RCU)
|
||||
return -ECHILD;
|
||||
|
||||
inode = dentry->d_inode;
|
||||
inode = d_inode(dentry);
|
||||
if (!inode)
|
||||
goto out_valid;
|
||||
|
||||
|
|
|
|||
|
|
@ -595,7 +595,7 @@ static int v9fs_remove(struct inode *dir, struct dentry *dentry, int flags)
|
|||
dir, dentry, flags);
|
||||
|
||||
v9ses = v9fs_inode2v9ses(dir);
|
||||
inode = dentry->d_inode;
|
||||
inode = d_inode(dentry);
|
||||
dfid = v9fs_fid_lookup(dentry->d_parent);
|
||||
if (IS_ERR(dfid)) {
|
||||
retval = PTR_ERR(dfid);
|
||||
|
|
@ -864,7 +864,7 @@ v9fs_vfs_atomic_open(struct inode *dir, struct dentry *dentry,
|
|||
}
|
||||
|
||||
/* Only creates */
|
||||
if (!(flags & O_CREAT) || dentry->d_inode)
|
||||
if (!(flags & O_CREAT) || d_really_is_positive(dentry))
|
||||
return finish_no_open(file, res);
|
||||
|
||||
err = 0;
|
||||
|
|
@ -881,7 +881,7 @@ v9fs_vfs_atomic_open(struct inode *dir, struct dentry *dentry,
|
|||
}
|
||||
|
||||
v9fs_invalidate_inode_attr(dir);
|
||||
v9inode = V9FS_I(dentry->d_inode);
|
||||
v9inode = V9FS_I(d_inode(dentry));
|
||||
mutex_lock(&v9inode->v_mutex);
|
||||
if ((v9ses->cache == CACHE_LOOSE || v9ses->cache == CACHE_FSCACHE) &&
|
||||
!v9inode->writeback_fid &&
|
||||
|
|
@ -908,7 +908,7 @@ v9fs_vfs_atomic_open(struct inode *dir, struct dentry *dentry,
|
|||
|
||||
file->private_data = fid;
|
||||
if (v9ses->cache == CACHE_LOOSE || v9ses->cache == CACHE_FSCACHE)
|
||||
v9fs_cache_inode_set_cookie(dentry->d_inode, file);
|
||||
v9fs_cache_inode_set_cookie(d_inode(dentry), file);
|
||||
|
||||
*opened |= FILE_CREATED;
|
||||
out:
|
||||
|
|
@ -969,8 +969,8 @@ v9fs_vfs_rename(struct inode *old_dir, struct dentry *old_dentry,
|
|||
|
||||
p9_debug(P9_DEBUG_VFS, "\n");
|
||||
retval = 0;
|
||||
old_inode = old_dentry->d_inode;
|
||||
new_inode = new_dentry->d_inode;
|
||||
old_inode = d_inode(old_dentry);
|
||||
new_inode = d_inode(new_dentry);
|
||||
v9ses = v9fs_inode2v9ses(old_inode);
|
||||
oldfid = v9fs_fid_lookup(old_dentry);
|
||||
if (IS_ERR(oldfid))
|
||||
|
|
@ -1061,7 +1061,7 @@ v9fs_vfs_getattr(struct vfsmount *mnt, struct dentry *dentry,
|
|||
p9_debug(P9_DEBUG_VFS, "dentry: %p\n", dentry);
|
||||
v9ses = v9fs_dentry2v9ses(dentry);
|
||||
if (v9ses->cache == CACHE_LOOSE || v9ses->cache == CACHE_FSCACHE) {
|
||||
generic_fillattr(dentry->d_inode, stat);
|
||||
generic_fillattr(d_inode(dentry), stat);
|
||||
return 0;
|
||||
}
|
||||
fid = v9fs_fid_lookup(dentry);
|
||||
|
|
@ -1072,8 +1072,8 @@ v9fs_vfs_getattr(struct vfsmount *mnt, struct dentry *dentry,
|
|||
if (IS_ERR(st))
|
||||
return PTR_ERR(st);
|
||||
|
||||
v9fs_stat2inode(st, dentry->d_inode, dentry->d_inode->i_sb);
|
||||
generic_fillattr(dentry->d_inode, stat);
|
||||
v9fs_stat2inode(st, d_inode(dentry), d_inode(dentry)->i_sb);
|
||||
generic_fillattr(d_inode(dentry), stat);
|
||||
|
||||
p9stat_free(st);
|
||||
kfree(st);
|
||||
|
|
@ -1095,7 +1095,7 @@ static int v9fs_vfs_setattr(struct dentry *dentry, struct iattr *iattr)
|
|||
struct p9_wstat wstat;
|
||||
|
||||
p9_debug(P9_DEBUG_VFS, "\n");
|
||||
retval = inode_change_ok(dentry->d_inode, iattr);
|
||||
retval = inode_change_ok(d_inode(dentry), iattr);
|
||||
if (retval)
|
||||
return retval;
|
||||
|
||||
|
|
@ -1128,20 +1128,20 @@ static int v9fs_vfs_setattr(struct dentry *dentry, struct iattr *iattr)
|
|||
|
||||
/* Write all dirty data */
|
||||
if (d_is_reg(dentry))
|
||||
filemap_write_and_wait(dentry->d_inode->i_mapping);
|
||||
filemap_write_and_wait(d_inode(dentry)->i_mapping);
|
||||
|
||||
retval = p9_client_wstat(fid, &wstat);
|
||||
if (retval < 0)
|
||||
return retval;
|
||||
|
||||
if ((iattr->ia_valid & ATTR_SIZE) &&
|
||||
iattr->ia_size != i_size_read(dentry->d_inode))
|
||||
truncate_setsize(dentry->d_inode, iattr->ia_size);
|
||||
iattr->ia_size != i_size_read(d_inode(dentry)))
|
||||
truncate_setsize(d_inode(dentry), iattr->ia_size);
|
||||
|
||||
v9fs_invalidate_inode_attr(dentry->d_inode);
|
||||
v9fs_invalidate_inode_attr(d_inode(dentry));
|
||||
|
||||
setattr_copy(dentry->d_inode, iattr);
|
||||
mark_inode_dirty(dentry->d_inode);
|
||||
setattr_copy(d_inode(dentry), iattr);
|
||||
mark_inode_dirty(d_inode(dentry));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -1403,7 +1403,7 @@ v9fs_vfs_link(struct dentry *old_dentry, struct inode *dir,
|
|||
retval = v9fs_vfs_mkspecial(dir, dentry, P9_DMLINK, name);
|
||||
__putname(name);
|
||||
if (!retval) {
|
||||
v9fs_refresh_inode(oldfid, old_dentry->d_inode);
|
||||
v9fs_refresh_inode(oldfid, d_inode(old_dentry));
|
||||
v9fs_invalidate_inode_attr(dir);
|
||||
}
|
||||
clunk_fid:
|
||||
|
|
|
|||
|
|
@ -265,7 +265,7 @@ v9fs_vfs_atomic_open_dotl(struct inode *dir, struct dentry *dentry,
|
|||
}
|
||||
|
||||
/* Only creates */
|
||||
if (!(flags & O_CREAT) || dentry->d_inode)
|
||||
if (!(flags & O_CREAT) || d_really_is_positive(dentry))
|
||||
return finish_no_open(file, res);
|
||||
|
||||
v9ses = v9fs_inode2v9ses(dir);
|
||||
|
|
@ -481,7 +481,7 @@ v9fs_vfs_getattr_dotl(struct vfsmount *mnt, struct dentry *dentry,
|
|||
p9_debug(P9_DEBUG_VFS, "dentry: %p\n", dentry);
|
||||
v9ses = v9fs_dentry2v9ses(dentry);
|
||||
if (v9ses->cache == CACHE_LOOSE || v9ses->cache == CACHE_FSCACHE) {
|
||||
generic_fillattr(dentry->d_inode, stat);
|
||||
generic_fillattr(d_inode(dentry), stat);
|
||||
return 0;
|
||||
}
|
||||
fid = v9fs_fid_lookup(dentry);
|
||||
|
|
@ -496,8 +496,8 @@ v9fs_vfs_getattr_dotl(struct vfsmount *mnt, struct dentry *dentry,
|
|||
if (IS_ERR(st))
|
||||
return PTR_ERR(st);
|
||||
|
||||
v9fs_stat2inode_dotl(st, dentry->d_inode);
|
||||
generic_fillattr(dentry->d_inode, stat);
|
||||
v9fs_stat2inode_dotl(st, d_inode(dentry));
|
||||
generic_fillattr(d_inode(dentry), stat);
|
||||
/* Change block size to what the server returned */
|
||||
stat->blksize = st->st_blksize;
|
||||
|
||||
|
|
@ -557,7 +557,7 @@ int v9fs_vfs_setattr_dotl(struct dentry *dentry, struct iattr *iattr)
|
|||
int retval;
|
||||
struct p9_fid *fid;
|
||||
struct p9_iattr_dotl p9attr;
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct inode *inode = d_inode(dentry);
|
||||
|
||||
p9_debug(P9_DEBUG_VFS, "\n");
|
||||
|
||||
|
|
@ -795,10 +795,10 @@ v9fs_vfs_link_dotl(struct dentry *old_dentry, struct inode *dir,
|
|||
if (IS_ERR(fid))
|
||||
return PTR_ERR(fid);
|
||||
|
||||
v9fs_refresh_inode_dotl(fid, old_dentry->d_inode);
|
||||
v9fs_refresh_inode_dotl(fid, d_inode(old_dentry));
|
||||
}
|
||||
ihold(old_dentry->d_inode);
|
||||
d_instantiate(dentry, old_dentry->d_inode);
|
||||
ihold(d_inode(old_dentry));
|
||||
d_instantiate(dentry, d_inode(old_dentry));
|
||||
|
||||
return err;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -168,8 +168,8 @@ static struct dentry *v9fs_mount(struct file_system_type *fs_type, int flags,
|
|||
retval = PTR_ERR(st);
|
||||
goto release_sb;
|
||||
}
|
||||
root->d_inode->i_ino = v9fs_qid2ino(&st->qid);
|
||||
v9fs_stat2inode_dotl(st, root->d_inode);
|
||||
d_inode(root)->i_ino = v9fs_qid2ino(&st->qid);
|
||||
v9fs_stat2inode_dotl(st, d_inode(root));
|
||||
kfree(st);
|
||||
} else {
|
||||
struct p9_wstat *st = NULL;
|
||||
|
|
@ -179,8 +179,8 @@ static struct dentry *v9fs_mount(struct file_system_type *fs_type, int flags,
|
|||
goto release_sb;
|
||||
}
|
||||
|
||||
root->d_inode->i_ino = v9fs_qid2ino(&st->qid);
|
||||
v9fs_stat2inode(st, root->d_inode, sb);
|
||||
d_inode(root)->i_ino = v9fs_qid2ino(&st->qid);
|
||||
v9fs_stat2inode(st, d_inode(root), sb);
|
||||
|
||||
p9stat_free(st);
|
||||
kfree(st);
|
||||
|
|
|
|||
|
|
@ -298,7 +298,7 @@ out:
|
|||
int
|
||||
adfs_notify_change(struct dentry *dentry, struct iattr *attr)
|
||||
{
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct inode *inode = d_inode(dentry);
|
||||
struct super_block *sb = inode->i_sb;
|
||||
unsigned int ia_valid = attr->ia_valid;
|
||||
int error;
|
||||
|
|
|
|||
|
|
@ -138,7 +138,7 @@ affs_fix_dcache(struct inode *inode, u32 entry_ino)
|
|||
static int
|
||||
affs_remove_link(struct dentry *dentry)
|
||||
{
|
||||
struct inode *dir, *inode = dentry->d_inode;
|
||||
struct inode *dir, *inode = d_inode(dentry);
|
||||
struct super_block *sb = inode->i_sb;
|
||||
struct buffer_head *bh = NULL, *link_bh = NULL;
|
||||
u32 link_ino, ino;
|
||||
|
|
@ -268,11 +268,11 @@ affs_remove_header(struct dentry *dentry)
|
|||
struct buffer_head *bh = NULL;
|
||||
int retval;
|
||||
|
||||
dir = dentry->d_parent->d_inode;
|
||||
dir = d_inode(dentry->d_parent);
|
||||
sb = dir->i_sb;
|
||||
|
||||
retval = -ENOENT;
|
||||
inode = dentry->d_inode;
|
||||
inode = d_inode(dentry);
|
||||
if (!inode)
|
||||
goto done;
|
||||
|
||||
|
|
@ -471,7 +471,7 @@ affs_warning(struct super_block *sb, const char *function, const char *fmt, ...)
|
|||
bool
|
||||
affs_nofilenametruncate(const struct dentry *dentry)
|
||||
{
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct inode *inode = d_inode(dentry);
|
||||
return AFFS_SB(inode->i_sb)->s_flags & SF_NO_TRUNCATE;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -212,7 +212,7 @@ affs_write_inode(struct inode *inode, struct writeback_control *wbc)
|
|||
int
|
||||
affs_notify_change(struct dentry *dentry, struct iattr *attr)
|
||||
{
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct inode *inode = d_inode(dentry);
|
||||
int error;
|
||||
|
||||
pr_debug("notify_change(%lu,0x%x)\n", inode->i_ino, attr->ia_valid);
|
||||
|
|
|
|||
|
|
@ -250,7 +250,7 @@ int
|
|||
affs_unlink(struct inode *dir, struct dentry *dentry)
|
||||
{
|
||||
pr_debug("%s(dir=%lu, %lu \"%pd\")\n", __func__, dir->i_ino,
|
||||
dentry->d_inode->i_ino, dentry);
|
||||
d_inode(dentry)->i_ino, dentry);
|
||||
|
||||
return affs_remove_header(dentry);
|
||||
}
|
||||
|
|
@ -318,7 +318,7 @@ int
|
|||
affs_rmdir(struct inode *dir, struct dentry *dentry)
|
||||
{
|
||||
pr_debug("%s(dir=%lu, %lu \"%pd\")\n", __func__, dir->i_ino,
|
||||
dentry->d_inode->i_ino, dentry);
|
||||
d_inode(dentry)->i_ino, dentry);
|
||||
|
||||
return affs_remove_header(dentry);
|
||||
}
|
||||
|
|
@ -401,7 +401,7 @@ err:
|
|||
int
|
||||
affs_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);
|
||||
|
||||
pr_debug("%s(%lu, %lu, \"%pd\")\n", __func__, inode->i_ino, dir->i_ino,
|
||||
dentry);
|
||||
|
|
@ -428,13 +428,13 @@ affs_rename(struct inode *old_dir, struct dentry *old_dentry,
|
|||
return retval;
|
||||
|
||||
/* Unlink destination if it already exists */
|
||||
if (new_dentry->d_inode) {
|
||||
if (d_really_is_positive(new_dentry)) {
|
||||
retval = affs_remove_header(new_dentry);
|
||||
if (retval)
|
||||
return retval;
|
||||
}
|
||||
|
||||
bh = affs_bread(sb, old_dentry->d_inode->i_ino);
|
||||
bh = affs_bread(sb, d_inode(old_dentry)->i_ino);
|
||||
if (!bh)
|
||||
return -EIO;
|
||||
|
||||
|
|
|
|||
42
fs/afs/dir.c
42
fs/afs/dir.c
|
|
@ -505,7 +505,7 @@ static struct dentry *afs_lookup(struct inode *dir, struct dentry *dentry,
|
|||
_enter("{%x:%u},%p{%pd},",
|
||||
vnode->fid.vid, vnode->fid.vnode, dentry, dentry);
|
||||
|
||||
ASSERTCMP(dentry->d_inode, ==, NULL);
|
||||
ASSERTCMP(d_inode(dentry), ==, NULL);
|
||||
|
||||
if (dentry->d_name.len >= AFSNAMEMAX) {
|
||||
_leave(" = -ENAMETOOLONG");
|
||||
|
|
@ -563,8 +563,8 @@ success:
|
|||
_leave(" = 0 { vn=%u u=%u } -> { ino=%lu v=%u }",
|
||||
fid.vnode,
|
||||
fid.unique,
|
||||
dentry->d_inode->i_ino,
|
||||
dentry->d_inode->i_generation);
|
||||
d_inode(dentry)->i_ino,
|
||||
d_inode(dentry)->i_generation);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
|
@ -586,9 +586,9 @@ static int afs_d_revalidate(struct dentry *dentry, unsigned int flags)
|
|||
if (flags & LOOKUP_RCU)
|
||||
return -ECHILD;
|
||||
|
||||
vnode = AFS_FS_I(dentry->d_inode);
|
||||
vnode = AFS_FS_I(d_inode(dentry));
|
||||
|
||||
if (dentry->d_inode)
|
||||
if (d_really_is_positive(dentry))
|
||||
_enter("{v={%x:%u} n=%pd fl=%lx},",
|
||||
vnode->fid.vid, vnode->fid.vnode, dentry,
|
||||
vnode->flags);
|
||||
|
|
@ -601,7 +601,7 @@ static int afs_d_revalidate(struct dentry *dentry, unsigned int flags)
|
|||
|
||||
/* lock down the parent dentry so we can peer at it */
|
||||
parent = dget_parent(dentry);
|
||||
dir = AFS_FS_I(parent->d_inode);
|
||||
dir = AFS_FS_I(d_inode(parent));
|
||||
|
||||
/* validate the parent directory */
|
||||
if (test_bit(AFS_VNODE_MODIFIED, &dir->flags))
|
||||
|
|
@ -623,9 +623,9 @@ static int afs_d_revalidate(struct dentry *dentry, unsigned int flags)
|
|||
switch (ret) {
|
||||
case 0:
|
||||
/* the filename maps to something */
|
||||
if (!dentry->d_inode)
|
||||
if (d_really_is_negative(dentry))
|
||||
goto out_bad;
|
||||
if (is_bad_inode(dentry->d_inode)) {
|
||||
if (is_bad_inode(d_inode(dentry))) {
|
||||
printk("kAFS: afs_d_revalidate: %pd2 has bad inode\n",
|
||||
dentry);
|
||||
goto out_bad;
|
||||
|
|
@ -647,7 +647,7 @@ static int afs_d_revalidate(struct dentry *dentry, unsigned int flags)
|
|||
_debug("%pd: file deleted (uq %u -> %u I:%u)",
|
||||
dentry, fid.unique,
|
||||
vnode->fid.unique,
|
||||
dentry->d_inode->i_generation);
|
||||
d_inode(dentry)->i_generation);
|
||||
spin_lock(&vnode->lock);
|
||||
set_bit(AFS_VNODE_DELETED, &vnode->flags);
|
||||
spin_unlock(&vnode->lock);
|
||||
|
|
@ -658,7 +658,7 @@ static int afs_d_revalidate(struct dentry *dentry, unsigned int flags)
|
|||
case -ENOENT:
|
||||
/* the filename is unknown */
|
||||
_debug("%pd: dirent not found", dentry);
|
||||
if (dentry->d_inode)
|
||||
if (d_really_is_positive(dentry))
|
||||
goto not_found;
|
||||
goto out_valid;
|
||||
|
||||
|
|
@ -703,9 +703,9 @@ static int afs_d_delete(const struct dentry *dentry)
|
|||
if (dentry->d_flags & DCACHE_NFSFS_RENAMED)
|
||||
goto zap;
|
||||
|
||||
if (dentry->d_inode &&
|
||||
(test_bit(AFS_VNODE_DELETED, &AFS_FS_I(dentry->d_inode)->flags) ||
|
||||
test_bit(AFS_VNODE_PSEUDODIR, &AFS_FS_I(dentry->d_inode)->flags)))
|
||||
if (d_really_is_positive(dentry) &&
|
||||
(test_bit(AFS_VNODE_DELETED, &AFS_FS_I(d_inode(dentry))->flags) ||
|
||||
test_bit(AFS_VNODE_PSEUDODIR, &AFS_FS_I(d_inode(dentry))->flags)))
|
||||
goto zap;
|
||||
|
||||
_leave(" = 0 [keep]");
|
||||
|
|
@ -814,8 +814,8 @@ static int afs_rmdir(struct inode *dir, struct dentry *dentry)
|
|||
if (ret < 0)
|
||||
goto rmdir_error;
|
||||
|
||||
if (dentry->d_inode) {
|
||||
vnode = AFS_FS_I(dentry->d_inode);
|
||||
if (d_really_is_positive(dentry)) {
|
||||
vnode = AFS_FS_I(d_inode(dentry));
|
||||
clear_nlink(&vnode->vfs_inode);
|
||||
set_bit(AFS_VNODE_DELETED, &vnode->flags);
|
||||
afs_discard_callback_on_delete(vnode);
|
||||
|
|
@ -856,8 +856,8 @@ static int afs_unlink(struct inode *dir, struct dentry *dentry)
|
|||
goto error;
|
||||
}
|
||||
|
||||
if (dentry->d_inode) {
|
||||
vnode = AFS_FS_I(dentry->d_inode);
|
||||
if (d_really_is_positive(dentry)) {
|
||||
vnode = AFS_FS_I(d_inode(dentry));
|
||||
|
||||
/* make sure we have a callback promise on the victim */
|
||||
ret = afs_validate(vnode, key);
|
||||
|
|
@ -869,7 +869,7 @@ static int afs_unlink(struct inode *dir, struct dentry *dentry)
|
|||
if (ret < 0)
|
||||
goto remove_error;
|
||||
|
||||
if (dentry->d_inode) {
|
||||
if (d_really_is_positive(dentry)) {
|
||||
/* if the file wasn't deleted due to excess hard links, the
|
||||
* fileserver will break the callback promise on the file - if
|
||||
* it had one - before it returns to us, and if it was deleted,
|
||||
|
|
@ -879,7 +879,7 @@ static int afs_unlink(struct inode *dir, struct dentry *dentry)
|
|||
* or it was outstanding on a different server, then it won't
|
||||
* break it either...
|
||||
*/
|
||||
vnode = AFS_FS_I(dentry->d_inode);
|
||||
vnode = AFS_FS_I(d_inode(dentry));
|
||||
if (test_bit(AFS_VNODE_DELETED, &vnode->flags))
|
||||
_debug("AFS_VNODE_DELETED");
|
||||
if (test_bit(AFS_VNODE_CB_BROKEN, &vnode->flags))
|
||||
|
|
@ -977,7 +977,7 @@ static int afs_link(struct dentry *from, struct inode *dir,
|
|||
struct key *key;
|
||||
int ret;
|
||||
|
||||
vnode = AFS_FS_I(from->d_inode);
|
||||
vnode = AFS_FS_I(d_inode(from));
|
||||
dvnode = AFS_FS_I(dir);
|
||||
|
||||
_enter("{%x:%u},{%x:%u},{%pd}",
|
||||
|
|
@ -1089,7 +1089,7 @@ static int afs_rename(struct inode *old_dir, struct dentry *old_dentry,
|
|||
struct key *key;
|
||||
int ret;
|
||||
|
||||
vnode = AFS_FS_I(old_dentry->d_inode);
|
||||
vnode = AFS_FS_I(d_inode(old_dentry));
|
||||
orig_dvnode = AFS_FS_I(old_dir);
|
||||
new_dvnode = AFS_FS_I(new_dir);
|
||||
|
||||
|
|
|
|||
|
|
@ -379,7 +379,7 @@ int afs_getattr(struct vfsmount *mnt, struct dentry *dentry,
|
|||
{
|
||||
struct inode *inode;
|
||||
|
||||
inode = dentry->d_inode;
|
||||
inode = d_inode(dentry);
|
||||
|
||||
_enter("{ ino=%lu v=%u }", inode->i_ino, inode->i_generation);
|
||||
|
||||
|
|
@ -458,7 +458,7 @@ void afs_evict_inode(struct inode *inode)
|
|||
*/
|
||||
int afs_setattr(struct dentry *dentry, struct iattr *attr)
|
||||
{
|
||||
struct afs_vnode *vnode = AFS_FS_I(dentry->d_inode);
|
||||
struct afs_vnode *vnode = AFS_FS_I(d_inode(dentry));
|
||||
struct key *key;
|
||||
int ret;
|
||||
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue