Cachefiles: Fix up scripted S_ISDIR/S_ISREG/S_ISLNK conversions
Fix up the following scripted S_ISDIR/S_ISREG/S_ISLNK conversions (or lack thereof) in cachefiles: (1) Cachefiles mostly wants to use d_can_lookup() rather than d_is_dir() as it doesn't want to deal with automounts in its cache. (2) Coccinelle didn't find S_IS* expressions in ASSERT() statements in cachefiles. Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
Родитель
e36cb0b89c
Коммит
ce40fa78ef
|
@ -574,7 +574,7 @@ static int cachefiles_daemon_cull(struct cachefiles_cache *cache, char *args)
|
|||
/* extract the directory dentry from the cwd */
|
||||
get_fs_pwd(current->fs, &path);
|
||||
|
||||
if (!d_is_dir(path.dentry))
|
||||
if (!d_can_lookup(path.dentry))
|
||||
goto notdir;
|
||||
|
||||
cachefiles_begin_secure(cache, &saved_cred);
|
||||
|
@ -646,7 +646,7 @@ static int cachefiles_daemon_inuse(struct cachefiles_cache *cache, char *args)
|
|||
/* extract the directory dentry from the cwd */
|
||||
get_fs_pwd(current->fs, &path);
|
||||
|
||||
if (!d_is_dir(path.dentry))
|
||||
if (!d_can_lookup(path.dentry))
|
||||
goto notdir;
|
||||
|
||||
cachefiles_begin_secure(cache, &saved_cred);
|
||||
|
|
|
@ -437,7 +437,7 @@ static int cachefiles_attr_changed(struct fscache_object *_object)
|
|||
if (!object->backer)
|
||||
return -ENOBUFS;
|
||||
|
||||
ASSERT(S_ISREG(object->backer->d_inode->i_mode));
|
||||
ASSERT(d_is_reg(object->backer));
|
||||
|
||||
fscache_set_store_limit(&object->fscache, ni_size);
|
||||
|
||||
|
@ -501,7 +501,7 @@ static void cachefiles_invalidate_object(struct fscache_operation *op)
|
|||
op->object->debug_id, (unsigned long long)ni_size);
|
||||
|
||||
if (object->backer) {
|
||||
ASSERT(S_ISREG(object->backer->d_inode->i_mode));
|
||||
ASSERT(d_is_reg(object->backer));
|
||||
|
||||
fscache_set_store_limit(&object->fscache, ni_size);
|
||||
|
||||
|
|
|
@ -323,7 +323,7 @@ try_again:
|
|||
return 0;
|
||||
}
|
||||
|
||||
if (!d_is_dir(cache->graveyard)) {
|
||||
if (!d_can_lookup(cache->graveyard)) {
|
||||
unlock_rename(cache->graveyard, dir);
|
||||
cachefiles_io_error(cache, "Graveyard no longer a directory");
|
||||
return -EIO;
|
||||
|
@ -539,7 +539,7 @@ lookup_again:
|
|||
_debug("mkdir -> %p{%p{ino=%lu}}",
|
||||
next, next->d_inode, next->d_inode->i_ino);
|
||||
|
||||
} else if (!d_is_dir(next)) {
|
||||
} else if (!d_can_lookup(next)) {
|
||||
pr_err("inode %lu is not a directory\n",
|
||||
next->d_inode->i_ino);
|
||||
ret = -ENOBUFS;
|
||||
|
@ -568,7 +568,7 @@ lookup_again:
|
|||
_debug("create -> %p{%p{ino=%lu}}",
|
||||
next, next->d_inode, next->d_inode->i_ino);
|
||||
|
||||
} else if (!d_is_dir(next) &&
|
||||
} else if (!d_can_lookup(next) &&
|
||||
!d_is_reg(next)
|
||||
) {
|
||||
pr_err("inode %lu is not a file or directory\n",
|
||||
|
@ -763,7 +763,7 @@ struct dentry *cachefiles_get_directory(struct cachefiles_cache *cache,
|
|||
/* we need to make sure the subdir is a directory */
|
||||
ASSERT(subdir->d_inode);
|
||||
|
||||
if (!d_is_dir(subdir)) {
|
||||
if (!d_can_lookup(subdir)) {
|
||||
pr_err("%s is not a directory\n", dirname);
|
||||
ret = -EIO;
|
||||
goto check_error;
|
||||
|
|
|
@ -900,7 +900,7 @@ int cachefiles_write_page(struct fscache_storage *op, struct page *page)
|
|||
return -ENOBUFS;
|
||||
}
|
||||
|
||||
ASSERT(S_ISREG(object->backer->d_inode->i_mode));
|
||||
ASSERT(d_is_reg(object->backer));
|
||||
|
||||
cache = container_of(object->fscache.cache,
|
||||
struct cachefiles_cache, cache);
|
||||
|
|
Загрузка…
Ссылка в новой задаче