Skip to content

Commit

Permalink
VFS: fs/cachefiles: d_backing_inode() annotations
Browse files Browse the repository at this point in the history
Signed-off-by: David Howells <[email protected]>
Signed-off-by: Al Viro <[email protected]>
  • Loading branch information
dhowells authored and Al Viro committed Apr 15, 2015
1 parent dea655c commit 466b77b
Show file tree
Hide file tree
Showing 6 changed files with 62 additions and 62 deletions.
10 changes: 5 additions & 5 deletions fs/cachefiles/bind.c
Original file line number Diff line number Diff line change
Expand Up @@ -123,11 +123,11 @@ static int cachefiles_daemon_add_cache(struct cachefiles_cache *cache)

/* check parameters */
ret = -EOPNOTSUPP;
if (!root->d_inode ||
!root->d_inode->i_op->lookup ||
!root->d_inode->i_op->mkdir ||
!root->d_inode->i_op->setxattr ||
!root->d_inode->i_op->getxattr ||
if (d_is_negative(root) ||
!d_backing_inode(root)->i_op->lookup ||
!d_backing_inode(root)->i_op->mkdir ||
!d_backing_inode(root)->i_op->setxattr ||
!d_backing_inode(root)->i_op->getxattr ||
!root->d_sb->s_op->statfs ||
!root->d_sb->s_op->sync_fs)
goto error_unsupported;
Expand Down
2 changes: 1 addition & 1 deletion fs/cachefiles/interface.c
Original file line number Diff line number Diff line change
Expand Up @@ -441,7 +441,7 @@ static int cachefiles_attr_changed(struct fscache_object *_object)

fscache_set_store_limit(&object->fscache, ni_size);

oi_size = i_size_read(object->backer->d_inode);
oi_size = i_size_read(d_backing_inode(object->backer));
if (oi_size == ni_size)
return 0;

Expand Down
70 changes: 35 additions & 35 deletions fs/cachefiles/namei.c
Original file line number Diff line number Diff line change
Expand Up @@ -355,7 +355,7 @@ static int cachefiles_bury_object(struct cachefiles_cache *cache,
return -EIO;
}

if (grave->d_inode) {
if (d_is_positive(grave)) {
unlock_rename(cache->graveyard, dir);
dput(grave);
grave = NULL;
Expand Down Expand Up @@ -415,7 +415,7 @@ int cachefiles_delete_object(struct cachefiles_cache *cache,
_enter(",OBJ%x{%p}", object->fscache.debug_id, object->dentry);

ASSERT(object->dentry);
ASSERT(object->dentry->d_inode);
ASSERT(d_backing_inode(object->dentry));
ASSERT(object->dentry->d_parent);

dir = dget_parent(object->dentry);
Expand Down Expand Up @@ -473,7 +473,7 @@ int cachefiles_walk_to_object(struct cachefiles_object *parent,
path.mnt = cache->mnt;

ASSERT(parent->dentry);
ASSERT(parent->dentry->d_inode);
ASSERT(d_backing_inode(parent->dentry));

if (!(d_is_dir(parent->dentry))) {
// TODO: convert file to dir
Expand Down Expand Up @@ -505,21 +505,21 @@ int cachefiles_walk_to_object(struct cachefiles_object *parent,
if (IS_ERR(next))
goto lookup_error;

_debug("next -> %p %s", next, next->d_inode ? "positive" : "negative");
_debug("next -> %p %s", next, d_backing_inode(next) ? "positive" : "negative");

if (!key)
object->new = !next->d_inode;
object->new = !d_backing_inode(next);

/* if this element of the path doesn't exist, then the lookup phase
* failed, and we can release any readers in the certain knowledge that
* there's nothing for them to actually read */
if (!next->d_inode)
if (d_is_negative(next))
fscache_object_lookup_negative(&object->fscache);

/* we need to create the object if it's negative */
if (key || object->type == FSCACHE_COOKIE_TYPE_INDEX) {
/* index objects and intervening tree levels must be subdirs */
if (!next->d_inode) {
if (d_is_negative(next)) {
ret = cachefiles_has_space(cache, 1, 0);
if (ret < 0)
goto create_error;
Expand All @@ -534,21 +534,21 @@ int cachefiles_walk_to_object(struct cachefiles_object *parent,
if (ret < 0)
goto create_error;

ASSERT(next->d_inode);
ASSERT(d_backing_inode(next));

_debug("mkdir -> %p{%p{ino=%lu}}",
next, next->d_inode, next->d_inode->i_ino);
next, d_backing_inode(next), d_backing_inode(next)->i_ino);

} else if (!d_can_lookup(next)) {
pr_err("inode %lu is not a directory\n",
next->d_inode->i_ino);
d_backing_inode(next)->i_ino);
ret = -ENOBUFS;
goto error;
}

} else {
/* non-index objects start out life as files */
if (!next->d_inode) {
if (d_is_negative(next)) {
ret = cachefiles_has_space(cache, 1, 0);
if (ret < 0)
goto create_error;
Expand All @@ -563,16 +563,16 @@ int cachefiles_walk_to_object(struct cachefiles_object *parent,
if (ret < 0)
goto create_error;

ASSERT(next->d_inode);
ASSERT(d_backing_inode(next));

_debug("create -> %p{%p{ino=%lu}}",
next, next->d_inode, next->d_inode->i_ino);
next, d_backing_inode(next), d_backing_inode(next)->i_ino);

} else if (!d_can_lookup(next) &&
!d_is_reg(next)
) {
pr_err("inode %lu is not a file or directory\n",
next->d_inode->i_ino);
d_backing_inode(next)->i_ino);
ret = -ENOBUFS;
goto error;
}
Expand Down Expand Up @@ -646,7 +646,7 @@ int cachefiles_walk_to_object(struct cachefiles_object *parent,
const struct address_space_operations *aops;

ret = -EPERM;
aops = object->dentry->d_inode->i_mapping->a_ops;
aops = d_backing_inode(object->dentry)->i_mapping->a_ops;
if (!aops->bmap)
goto check_error;

Expand All @@ -659,7 +659,7 @@ int cachefiles_walk_to_object(struct cachefiles_object *parent,
object->new = 0;
fscache_obtained_object(&object->fscache);

_leave(" = 0 [%lu]", object->dentry->d_inode->i_ino);
_leave(" = 0 [%lu]", d_backing_inode(object->dentry)->i_ino);
return 0;

create_error:
Expand Down Expand Up @@ -731,10 +731,10 @@ struct dentry *cachefiles_get_directory(struct cachefiles_cache *cache,
}

_debug("subdir -> %p %s",
subdir, subdir->d_inode ? "positive" : "negative");
subdir, d_backing_inode(subdir) ? "positive" : "negative");

/* we need to create the subdir if it doesn't exist yet */
if (!subdir->d_inode) {
if (d_is_negative(subdir)) {
ret = cachefiles_has_space(cache, 1, 0);
if (ret < 0)
goto mkdir_error;
Expand All @@ -750,18 +750,18 @@ struct dentry *cachefiles_get_directory(struct cachefiles_cache *cache,
if (ret < 0)
goto mkdir_error;

ASSERT(subdir->d_inode);
ASSERT(d_backing_inode(subdir));

_debug("mkdir -> %p{%p{ino=%lu}}",
subdir,
subdir->d_inode,
subdir->d_inode->i_ino);
d_backing_inode(subdir),
d_backing_inode(subdir)->i_ino);
}

mutex_unlock(&d_inode(dir)->i_mutex);

/* we need to make sure the subdir is a directory */
ASSERT(subdir->d_inode);
ASSERT(d_backing_inode(subdir));

if (!d_can_lookup(subdir)) {
pr_err("%s is not a directory\n", dirname);
Expand All @@ -770,18 +770,18 @@ struct dentry *cachefiles_get_directory(struct cachefiles_cache *cache,
}

ret = -EPERM;
if (!subdir->d_inode->i_op->setxattr ||
!subdir->d_inode->i_op->getxattr ||
!subdir->d_inode->i_op->lookup ||
!subdir->d_inode->i_op->mkdir ||
!subdir->d_inode->i_op->create ||
(!subdir->d_inode->i_op->rename &&
!subdir->d_inode->i_op->rename2) ||
!subdir->d_inode->i_op->rmdir ||
!subdir->d_inode->i_op->unlink)
if (!d_backing_inode(subdir)->i_op->setxattr ||
!d_backing_inode(subdir)->i_op->getxattr ||
!d_backing_inode(subdir)->i_op->lookup ||
!d_backing_inode(subdir)->i_op->mkdir ||
!d_backing_inode(subdir)->i_op->create ||
(!d_backing_inode(subdir)->i_op->rename &&
!d_backing_inode(subdir)->i_op->rename2) ||
!d_backing_inode(subdir)->i_op->rmdir ||
!d_backing_inode(subdir)->i_op->unlink)
goto check_error;

_leave(" = [%lu]", subdir->d_inode->i_ino);
_leave(" = [%lu]", d_backing_inode(subdir)->i_ino);
return subdir;

check_error:
Expand Down Expand Up @@ -836,12 +836,12 @@ static struct dentry *cachefiles_check_active(struct cachefiles_cache *cache,
goto lookup_error;

//_debug("victim -> %p %s",
// victim, victim->d_inode ? "positive" : "negative");
// victim, d_backing_inode(victim) ? "positive" : "negative");

/* if the object is no longer there then we probably retired the object
* at the netfs's request whilst the cull was in progress
*/
if (!victim->d_inode) {
if (d_is_negative(victim)) {
mutex_unlock(&d_inode(dir)->i_mutex);
dput(victim);
_leave(" = -ENOENT [absent]");
Expand Down Expand Up @@ -913,7 +913,7 @@ int cachefiles_cull(struct cachefiles_cache *cache, struct dentry *dir,
return PTR_ERR(victim);

_debug("victim -> %p %s",
victim, victim->d_inode ? "positive" : "negative");
victim, d_backing_inode(victim) ? "positive" : "negative");

/* okay... the victim is not being used so we can cull it
* - start by marking it as stale
Expand Down
14 changes: 7 additions & 7 deletions fs/cachefiles/rdwr.c
Original file line number Diff line number Diff line change
Expand Up @@ -74,12 +74,12 @@ static int cachefiles_read_waiter(wait_queue_t *wait, unsigned mode,
static int cachefiles_read_reissue(struct cachefiles_object *object,
struct cachefiles_one_read *monitor)
{
struct address_space *bmapping = object->backer->d_inode->i_mapping;
struct address_space *bmapping = d_backing_inode(object->backer)->i_mapping;
struct page *backpage = monitor->back_page, *backpage2;
int ret;

_enter("{ino=%lx},{%lx,%lx}",
object->backer->d_inode->i_ino,
d_backing_inode(object->backer)->i_ino,
backpage->index, backpage->flags);

/* skip if the page was truncated away completely */
Expand Down Expand Up @@ -157,7 +157,7 @@ static void cachefiles_read_copier(struct fscache_operation *_op)
object = container_of(op->op.object,
struct cachefiles_object, fscache);

_enter("{ino=%lu}", object->backer->d_inode->i_ino);
_enter("{ino=%lu}", d_backing_inode(object->backer)->i_ino);

max = 8;
spin_lock_irq(&object->work_lock);
Expand Down Expand Up @@ -247,7 +247,7 @@ static int cachefiles_read_backing_file_one(struct cachefiles_object *object,
init_waitqueue_func_entry(&monitor->monitor, cachefiles_read_waiter);

/* attempt to get hold of the backing page */
bmapping = object->backer->d_inode->i_mapping;
bmapping = d_backing_inode(object->backer)->i_mapping;
newpage = NULL;

for (;;) {
Expand Down Expand Up @@ -408,7 +408,7 @@ int cachefiles_read_or_alloc_page(struct fscache_retrieval *op,
if (!object->backer)
goto enobufs;

inode = object->backer->d_inode;
inode = d_backing_inode(object->backer);
ASSERT(S_ISREG(inode->i_mode));
ASSERT(inode->i_mapping->a_ops->bmap);
ASSERT(inode->i_mapping->a_ops->readpages);
Expand Down Expand Up @@ -468,7 +468,7 @@ static int cachefiles_read_backing_file(struct cachefiles_object *object,
struct list_head *list)
{
struct cachefiles_one_read *monitor = NULL;
struct address_space *bmapping = object->backer->d_inode->i_mapping;
struct address_space *bmapping = d_backing_inode(object->backer)->i_mapping;
struct page *newpage = NULL, *netpage, *_n, *backpage = NULL;
int ret = 0;

Expand Down Expand Up @@ -705,7 +705,7 @@ int cachefiles_read_or_alloc_pages(struct fscache_retrieval *op,
if (cachefiles_has_space(cache, 0, *nr_pages) < 0)
space = 0;

inode = object->backer->d_inode;
inode = d_backing_inode(object->backer);
ASSERT(S_ISREG(inode->i_mode));
ASSERT(inode->i_mapping->a_ops->bmap);
ASSERT(inode->i_mapping->a_ops->readpages);
Expand Down
6 changes: 3 additions & 3 deletions fs/cachefiles/security.c
Original file line number Diff line number Diff line change
Expand Up @@ -55,14 +55,14 @@ static int cachefiles_check_cache_dir(struct cachefiles_cache *cache,
{
int ret;

ret = security_inode_mkdir(root->d_inode, root, 0);
ret = security_inode_mkdir(d_backing_inode(root), root, 0);
if (ret < 0) {
pr_err("Security denies permission to make dirs: error %d",
ret);
return ret;
}

ret = security_inode_create(root->d_inode, root, 0);
ret = security_inode_create(d_backing_inode(root), root, 0);
if (ret < 0)
pr_err("Security denies permission to create files: error %d",
ret);
Expand Down Expand Up @@ -95,7 +95,7 @@ int cachefiles_determine_cache_security(struct cachefiles_cache *cache,

/* use the cache root dir's security context as the basis with
* which create files */
ret = set_create_files_as(new, root->d_inode);
ret = set_create_files_as(new, d_backing_inode(root));
if (ret < 0) {
abort_creds(new);
cachefiles_begin_secure(cache, _saved_cred);
Expand Down
Loading

0 comments on commit 466b77b

Please sign in to comment.