Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull fourth vfs update from Al Viro: "d_inode() annotations from David Howells (sat in for-next since before the beginning of merge window) + four assorted fixes" * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: RCU pathwalk breakage when running into a symlink overmounting something fix I_DIO_WAKEUP definition direct-io: only inc/dec inode->i_dio_count for file systems fs/9p: fix readdir() VFS: assorted d_backing_inode() annotations VFS: fs/inode.c helpers: d_inode() annotations VFS: fs/cachefiles: d_backing_inode() annotations VFS: fs library helpers: d_inode() annotations VFS: assorted weird filesystems: d_inode() annotations VFS: normal filesystems (and lustre): d_inode() annotations VFS: security/: d_inode() annotations VFS: security/: d_backing_inode() annotations VFS: net/: d_inode() annotations VFS: net/unix: d_backing_inode() annotations VFS: kernel/: d_inode() annotations VFS: audit: d_backing_inode() annotations VFS: Fix up some ->d_inode accesses in the chelsio driver VFS: Cachefiles should perform fs modifications on the top layer only VFS: AF_UNIX sockets should call mknod on the top layer only
This commit is contained in:
@@ -55,7 +55,7 @@ static int ext4_sync_parent(struct inode *inode)
|
||||
dentry = d_find_any_alias(inode);
|
||||
if (!dentry)
|
||||
break;
|
||||
next = igrab(dentry->d_parent->d_inode);
|
||||
next = igrab(d_inode(dentry->d_parent));
|
||||
dput(dentry);
|
||||
if (!next)
|
||||
break;
|
||||
|
@@ -443,7 +443,7 @@ static int find_group_orlov(struct super_block *sb, struct inode *parent,
|
||||
ndirs = percpu_counter_read_positive(&sbi->s_dirs_counter);
|
||||
|
||||
if (S_ISDIR(mode) &&
|
||||
((parent == sb->s_root->d_inode) ||
|
||||
((parent == d_inode(sb->s_root)) ||
|
||||
(ext4_test_inode_flag(parent, EXT4_INODE_TOPDIR)))) {
|
||||
int best_ndir = inodes_per_group;
|
||||
int ret = -1;
|
||||
|
@@ -682,11 +682,11 @@ retry:
|
||||
* via ext4_inode_block_unlocked_dio(). Check inode's state
|
||||
* while holding extra i_dio_count ref.
|
||||
*/
|
||||
atomic_inc(&inode->i_dio_count);
|
||||
inode_dio_begin(inode);
|
||||
smp_mb();
|
||||
if (unlikely(ext4_test_inode_state(inode,
|
||||
EXT4_STATE_DIOREAD_LOCK))) {
|
||||
inode_dio_done(inode);
|
||||
inode_dio_end(inode);
|
||||
goto locked;
|
||||
}
|
||||
if (IS_DAX(inode))
|
||||
@@ -697,7 +697,7 @@ retry:
|
||||
inode->i_sb->s_bdev, iter,
|
||||
offset, ext4_get_block, NULL,
|
||||
NULL, 0);
|
||||
inode_dio_done(inode);
|
||||
inode_dio_end(inode);
|
||||
} else {
|
||||
locked:
|
||||
if (IS_DAX(inode))
|
||||
|
@@ -1000,7 +1000,7 @@ static int ext4_add_dirent_to_inline(handle_t *handle,
|
||||
struct ext4_iloc *iloc,
|
||||
void *inline_start, int inline_size)
|
||||
{
|
||||
struct inode *dir = dentry->d_parent->d_inode;
|
||||
struct inode *dir = d_inode(dentry->d_parent);
|
||||
const char *name = dentry->d_name.name;
|
||||
int namelen = dentry->d_name.len;
|
||||
int err;
|
||||
@@ -1254,7 +1254,7 @@ int ext4_try_add_inline_entry(handle_t *handle, struct dentry *dentry,
|
||||
int ret, inline_size;
|
||||
void *inline_start;
|
||||
struct ext4_iloc iloc;
|
||||
struct inode *dir = dentry->d_parent->d_inode;
|
||||
struct inode *dir = d_inode(dentry->d_parent);
|
||||
|
||||
ret = ext4_get_inode_loc(dir, &iloc);
|
||||
if (ret)
|
||||
|
@@ -3077,7 +3077,7 @@ static ssize_t ext4_ext_direct_IO(struct kiocb *iocb, struct iov_iter *iter,
|
||||
* overwrite DIO as i_dio_count needs to be incremented under i_mutex.
|
||||
*/
|
||||
if (iov_iter_rw(iter) == WRITE)
|
||||
atomic_inc(&inode->i_dio_count);
|
||||
inode_dio_begin(inode);
|
||||
|
||||
/* If we do a overwrite dio, i_mutex locking can be released */
|
||||
overwrite = *((int *)iocb->private);
|
||||
@@ -3182,7 +3182,7 @@ static ssize_t ext4_ext_direct_IO(struct kiocb *iocb, struct iov_iter *iter,
|
||||
|
||||
retake_lock:
|
||||
if (iov_iter_rw(iter) == WRITE)
|
||||
inode_dio_done(inode);
|
||||
inode_dio_end(inode);
|
||||
/* take i_mutex locking again if we do a ovewrite dio */
|
||||
if (overwrite) {
|
||||
up_read(&EXT4_I(inode)->i_data_sem);
|
||||
@@ -4637,7 +4637,7 @@ static void ext4_wait_for_tail_page_commit(struct inode *inode)
|
||||
*/
|
||||
int ext4_setattr(struct dentry *dentry, struct iattr *attr)
|
||||
{
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct inode *inode = d_inode(dentry);
|
||||
int error, rc = 0;
|
||||
int orphan = 0;
|
||||
const unsigned int ia_valid = attr->ia_valid;
|
||||
@@ -4785,7 +4785,7 @@ int ext4_getattr(struct vfsmount *mnt, struct dentry *dentry,
|
||||
struct inode *inode;
|
||||
unsigned long long delalloc_blocks;
|
||||
|
||||
inode = dentry->d_inode;
|
||||
inode = d_inode(dentry);
|
||||
generic_fillattr(inode, stat);
|
||||
|
||||
/*
|
||||
|
@@ -475,7 +475,7 @@ int ext4_ext_migrate(struct inode *inode)
|
||||
EXT4_INODES_PER_GROUP(inode->i_sb)) + 1;
|
||||
owner[0] = i_uid_read(inode);
|
||||
owner[1] = i_gid_read(inode);
|
||||
tmp_inode = ext4_new_inode(handle, inode->i_sb->s_root->d_inode,
|
||||
tmp_inode = ext4_new_inode(handle, d_inode(inode->i_sb->s_root),
|
||||
S_IFREG, NULL, goal, owner);
|
||||
if (IS_ERR(tmp_inode)) {
|
||||
retval = PTR_ERR(tmp_inode);
|
||||
|
@@ -1664,7 +1664,7 @@ struct dentry *ext4_get_parent(struct dentry *child)
|
||||
struct ext4_dir_entry_2 * de;
|
||||
struct buffer_head *bh;
|
||||
|
||||
bh = ext4_find_entry(child->d_inode, &dotdot, &de, NULL);
|
||||
bh = ext4_find_entry(d_inode(child), &dotdot, &de, NULL);
|
||||
if (IS_ERR(bh))
|
||||
return (struct dentry *) bh;
|
||||
if (!bh)
|
||||
@@ -1672,13 +1672,13 @@ struct dentry *ext4_get_parent(struct dentry *child)
|
||||
ino = le32_to_cpu(de->inode);
|
||||
brelse(bh);
|
||||
|
||||
if (!ext4_valid_inum(child->d_inode->i_sb, ino)) {
|
||||
EXT4_ERROR_INODE(child->d_inode,
|
||||
if (!ext4_valid_inum(d_inode(child)->i_sb, ino)) {
|
||||
EXT4_ERROR_INODE(d_inode(child),
|
||||
"bad parent inode number: %u", ino);
|
||||
return ERR_PTR(-EIO);
|
||||
}
|
||||
|
||||
return d_obtain_alias(ext4_iget_normal(child->d_inode->i_sb, ino));
|
||||
return d_obtain_alias(ext4_iget_normal(d_inode(child)->i_sb, ino));
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1988,7 +1988,7 @@ static int add_dirent_to_buf(handle_t *handle, struct dentry *dentry,
|
||||
struct inode *inode, struct ext4_dir_entry_2 *de,
|
||||
struct buffer_head *bh)
|
||||
{
|
||||
struct inode *dir = dentry->d_parent->d_inode;
|
||||
struct inode *dir = d_inode(dentry->d_parent);
|
||||
const char *name = dentry->d_name.name;
|
||||
int namelen = dentry->d_name.len;
|
||||
unsigned int blocksize = dir->i_sb->s_blocksize;
|
||||
@@ -2048,7 +2048,7 @@ static int add_dirent_to_buf(handle_t *handle, struct dentry *dentry,
|
||||
static int make_indexed_dir(handle_t *handle, struct dentry *dentry,
|
||||
struct inode *inode, struct buffer_head *bh)
|
||||
{
|
||||
struct inode *dir = dentry->d_parent->d_inode;
|
||||
struct inode *dir = d_inode(dentry->d_parent);
|
||||
#ifdef CONFIG_EXT4_FS_ENCRYPTION
|
||||
struct ext4_fname_crypto_ctx *ctx = NULL;
|
||||
int res;
|
||||
@@ -2202,7 +2202,7 @@ out_frames:
|
||||
static int ext4_add_entry(handle_t *handle, struct dentry *dentry,
|
||||
struct inode *inode)
|
||||
{
|
||||
struct inode *dir = dentry->d_parent->d_inode;
|
||||
struct inode *dir = d_inode(dentry->d_parent);
|
||||
struct buffer_head *bh = NULL;
|
||||
struct ext4_dir_entry_2 *de;
|
||||
struct ext4_dir_entry_tail *t;
|
||||
@@ -2287,7 +2287,7 @@ static int ext4_dx_add_entry(handle_t *handle, struct dentry *dentry,
|
||||
struct dx_entry *entries, *at;
|
||||
struct dx_hash_info hinfo;
|
||||
struct buffer_head *bh;
|
||||
struct inode *dir = dentry->d_parent->d_inode;
|
||||
struct inode *dir = d_inode(dentry->d_parent);
|
||||
struct super_block *sb = dir->i_sb;
|
||||
struct ext4_dir_entry_2 *de;
|
||||
int err;
|
||||
@@ -3063,7 +3063,7 @@ static int ext4_rmdir(struct inode *dir, struct dentry *dentry)
|
||||
/* Initialize quotas before so that eventual writes go in
|
||||
* separate transaction */
|
||||
dquot_initialize(dir);
|
||||
dquot_initialize(dentry->d_inode);
|
||||
dquot_initialize(d_inode(dentry));
|
||||
|
||||
retval = -ENOENT;
|
||||
bh = ext4_find_entry(dir, &dentry->d_name, &de, NULL);
|
||||
@@ -3072,7 +3072,7 @@ static int ext4_rmdir(struct inode *dir, struct dentry *dentry)
|
||||
if (!bh)
|
||||
goto end_rmdir;
|
||||
|
||||
inode = dentry->d_inode;
|
||||
inode = d_inode(dentry);
|
||||
|
||||
retval = -EIO;
|
||||
if (le32_to_cpu(de->inode) != inode->i_ino)
|
||||
@@ -3132,7 +3132,7 @@ static int ext4_unlink(struct inode *dir, struct dentry *dentry)
|
||||
/* Initialize quotas before so that eventual writes go
|
||||
* in separate transaction */
|
||||
dquot_initialize(dir);
|
||||
dquot_initialize(dentry->d_inode);
|
||||
dquot_initialize(d_inode(dentry));
|
||||
|
||||
retval = -ENOENT;
|
||||
bh = ext4_find_entry(dir, &dentry->d_name, &de, NULL);
|
||||
@@ -3141,7 +3141,7 @@ static int ext4_unlink(struct inode *dir, struct dentry *dentry)
|
||||
if (!bh)
|
||||
goto end_unlink;
|
||||
|
||||
inode = dentry->d_inode;
|
||||
inode = d_inode(dentry);
|
||||
|
||||
retval = -EIO;
|
||||
if (le32_to_cpu(de->inode) != inode->i_ino)
|
||||
@@ -3339,7 +3339,7 @@ static int ext4_link(struct dentry *old_dentry,
|
||||
struct inode *dir, struct dentry *dentry)
|
||||
{
|
||||
handle_t *handle;
|
||||
struct inode *inode = old_dentry->d_inode;
|
||||
struct inode *inode = d_inode(old_dentry);
|
||||
int err, retries = 0;
|
||||
|
||||
if (inode->i_nlink >= EXT4_LINK_MAX)
|
||||
@@ -3613,12 +3613,12 @@ static int ext4_rename(struct inode *old_dir, struct dentry *old_dentry,
|
||||
struct ext4_renament old = {
|
||||
.dir = old_dir,
|
||||
.dentry = old_dentry,
|
||||
.inode = old_dentry->d_inode,
|
||||
.inode = d_inode(old_dentry),
|
||||
};
|
||||
struct ext4_renament new = {
|
||||
.dir = new_dir,
|
||||
.dentry = new_dentry,
|
||||
.inode = new_dentry->d_inode,
|
||||
.inode = d_inode(new_dentry),
|
||||
};
|
||||
int force_reread;
|
||||
int retval;
|
||||
@@ -3809,12 +3809,12 @@ static int ext4_cross_rename(struct inode *old_dir, struct dentry *old_dentry,
|
||||
struct ext4_renament old = {
|
||||
.dir = old_dir,
|
||||
.dentry = old_dentry,
|
||||
.inode = old_dentry->d_inode,
|
||||
.inode = d_inode(old_dentry),
|
||||
};
|
||||
struct ext4_renament new = {
|
||||
.dir = new_dir,
|
||||
.dentry = new_dentry,
|
||||
.inode = new_dentry->d_inode,
|
||||
.inode = d_inode(new_dentry),
|
||||
};
|
||||
u8 new_file_type;
|
||||
int retval;
|
||||
|
@@ -1556,7 +1556,7 @@ static int handle_mount_opt(struct super_block *sb, char *opt, int token,
|
||||
return -1;
|
||||
}
|
||||
|
||||
journal_inode = path.dentry->d_inode;
|
||||
journal_inode = d_inode(path.dentry);
|
||||
if (!S_ISBLK(journal_inode->i_mode)) {
|
||||
ext4_msg(sb, KERN_ERR, "error: journal path %s "
|
||||
"is not a block device", journal_path);
|
||||
@@ -5217,7 +5217,7 @@ static int ext4_write_info(struct super_block *sb, int type)
|
||||
handle_t *handle;
|
||||
|
||||
/* Data block + inode block */
|
||||
handle = ext4_journal_start(sb->s_root->d_inode, EXT4_HT_QUOTA, 2);
|
||||
handle = ext4_journal_start(d_inode(sb->s_root), EXT4_HT_QUOTA, 2);
|
||||
if (IS_ERR(handle))
|
||||
return PTR_ERR(handle);
|
||||
ret = dquot_commit_info(sb, type);
|
||||
@@ -5265,7 +5265,7 @@ static int ext4_quota_on(struct super_block *sb, int type, int format_id,
|
||||
* all updates to the file when we bypass pagecache...
|
||||
*/
|
||||
if (EXT4_SB(sb)->s_journal &&
|
||||
ext4_should_journal_data(path->dentry->d_inode)) {
|
||||
ext4_should_journal_data(d_inode(path->dentry))) {
|
||||
/*
|
||||
* We don't need to lock updates but journal_flush() could
|
||||
* otherwise be livelocked...
|
||||
|
@@ -28,7 +28,7 @@ static void *ext4_follow_link(struct dentry *dentry, struct nameidata *nd)
|
||||
struct page *cpage = NULL;
|
||||
char *caddr, *paddr = NULL;
|
||||
struct ext4_str cstr, pstr;
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct inode *inode = d_inode(dentry);
|
||||
struct ext4_fname_crypto_ctx *ctx = NULL;
|
||||
struct ext4_encrypted_symlink_data *sd;
|
||||
loff_t size = min_t(loff_t, i_size_read(inode), PAGE_SIZE - 1);
|
||||
@@ -43,8 +43,8 @@ static void *ext4_follow_link(struct dentry *dentry, struct nameidata *nd)
|
||||
return ctx;
|
||||
|
||||
if (ext4_inode_is_fast_symlink(inode)) {
|
||||
caddr = (char *) EXT4_I(dentry->d_inode)->i_data;
|
||||
max_size = sizeof(EXT4_I(dentry->d_inode)->i_data);
|
||||
caddr = (char *) EXT4_I(inode)->i_data;
|
||||
max_size = sizeof(EXT4_I(inode)->i_data);
|
||||
} else {
|
||||
cpage = read_mapping_page(inode->i_mapping, 0, NULL);
|
||||
if (IS_ERR(cpage)) {
|
||||
@@ -113,7 +113,7 @@ static void ext4_put_link(struct dentry *dentry, struct nameidata *nd,
|
||||
|
||||
static void *ext4_follow_fast_link(struct dentry *dentry, struct nameidata *nd)
|
||||
{
|
||||
struct ext4_inode_info *ei = EXT4_I(dentry->d_inode);
|
||||
struct ext4_inode_info *ei = EXT4_I(d_inode(dentry));
|
||||
nd_set_link(nd, (char *) ei->i_data);
|
||||
return NULL;
|
||||
}
|
||||
|
@@ -178,7 +178,7 @@ ext4_xattr_handler(int name_index)
|
||||
/*
|
||||
* Inode operation listxattr()
|
||||
*
|
||||
* dentry->d_inode->i_mutex: don't care
|
||||
* d_inode(dentry)->i_mutex: don't care
|
||||
*/
|
||||
ssize_t
|
||||
ext4_listxattr(struct dentry *dentry, char *buffer, size_t size)
|
||||
@@ -423,7 +423,7 @@ ext4_xattr_list_entries(struct dentry *dentry, struct ext4_xattr_entry *entry,
|
||||
static int
|
||||
ext4_xattr_block_list(struct dentry *dentry, char *buffer, size_t buffer_size)
|
||||
{
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct inode *inode = d_inode(dentry);
|
||||
struct buffer_head *bh = NULL;
|
||||
int error;
|
||||
struct mb_cache *ext4_mb_cache = EXT4_GET_MB_CACHE(inode);
|
||||
@@ -460,7 +460,7 @@ cleanup:
|
||||
static int
|
||||
ext4_xattr_ibody_list(struct dentry *dentry, char *buffer, size_t buffer_size)
|
||||
{
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct inode *inode = d_inode(dentry);
|
||||
struct ext4_xattr_ibody_header *header;
|
||||
struct ext4_inode *raw_inode;
|
||||
struct ext4_iloc iloc;
|
||||
@@ -501,7 +501,7 @@ ext4_xattr_list(struct dentry *dentry, char *buffer, size_t buffer_size)
|
||||
{
|
||||
int ret, ret2;
|
||||
|
||||
down_read(&EXT4_I(dentry->d_inode)->xattr_sem);
|
||||
down_read(&EXT4_I(d_inode(dentry))->xattr_sem);
|
||||
ret = ret2 = ext4_xattr_ibody_list(dentry, buffer, buffer_size);
|
||||
if (ret < 0)
|
||||
goto errout;
|
||||
@@ -514,7 +514,7 @@ ext4_xattr_list(struct dentry *dentry, char *buffer, size_t buffer_size)
|
||||
goto errout;
|
||||
ret += ret2;
|
||||
errout:
|
||||
up_read(&EXT4_I(dentry->d_inode)->xattr_sem);
|
||||
up_read(&EXT4_I(d_inode(dentry))->xattr_sem);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@@ -33,7 +33,7 @@ ext4_xattr_security_get(struct dentry *dentry, const char *name,
|
||||
{
|
||||
if (strcmp(name, "") == 0)
|
||||
return -EINVAL;
|
||||
return ext4_xattr_get(dentry->d_inode, EXT4_XATTR_INDEX_SECURITY,
|
||||
return ext4_xattr_get(d_inode(dentry), EXT4_XATTR_INDEX_SECURITY,
|
||||
name, buffer, size);
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ ext4_xattr_security_set(struct dentry *dentry, const char *name,
|
||||
{
|
||||
if (strcmp(name, "") == 0)
|
||||
return -EINVAL;
|
||||
return ext4_xattr_set(dentry->d_inode, EXT4_XATTR_INDEX_SECURITY,
|
||||
return ext4_xattr_set(d_inode(dentry), EXT4_XATTR_INDEX_SECURITY,
|
||||
name, value, size, flags);
|
||||
}
|
||||
|
||||
|
@@ -36,7 +36,7 @@ ext4_xattr_trusted_get(struct dentry *dentry, const char *name, void *buffer,
|
||||
{
|
||||
if (strcmp(name, "") == 0)
|
||||
return -EINVAL;
|
||||
return ext4_xattr_get(dentry->d_inode, EXT4_XATTR_INDEX_TRUSTED,
|
||||
return ext4_xattr_get(d_inode(dentry), EXT4_XATTR_INDEX_TRUSTED,
|
||||
name, buffer, size);
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ ext4_xattr_trusted_set(struct dentry *dentry, const char *name,
|
||||
{
|
||||
if (strcmp(name, "") == 0)
|
||||
return -EINVAL;
|
||||
return ext4_xattr_set(dentry->d_inode, EXT4_XATTR_INDEX_TRUSTED,
|
||||
return ext4_xattr_set(d_inode(dentry), EXT4_XATTR_INDEX_TRUSTED,
|
||||
name, value, size, flags);
|
||||
}
|
||||
|
||||
|
@@ -37,7 +37,7 @@ ext4_xattr_user_get(struct dentry *dentry, const char *name,
|
||||
return -EINVAL;
|
||||
if (!test_opt(dentry->d_sb, XATTR_USER))
|
||||
return -EOPNOTSUPP;
|
||||
return ext4_xattr_get(dentry->d_inode, EXT4_XATTR_INDEX_USER,
|
||||
return ext4_xattr_get(d_inode(dentry), EXT4_XATTR_INDEX_USER,
|
||||
name, buffer, size);
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ ext4_xattr_user_set(struct dentry *dentry, const char *name,
|
||||
return -EINVAL;
|
||||
if (!test_opt(dentry->d_sb, XATTR_USER))
|
||||
return -EOPNOTSUPP;
|
||||
return ext4_xattr_set(dentry->d_inode, EXT4_XATTR_INDEX_USER,
|
||||
return ext4_xattr_set(d_inode(dentry), EXT4_XATTR_INDEX_USER,
|
||||
name, value, size, flags);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user