|
@@ -544,7 +544,7 @@ EXPORT_SYMBOL_GPL(shmem_truncate_range);
|
|
|
|
|
|
static int shmem_setattr(struct dentry *dentry, struct iattr *attr)
|
|
|
{
|
|
|
- struct inode *inode = dentry->d_inode;
|
|
|
+ struct inode *inode = d_inode(dentry);
|
|
|
struct shmem_inode_info *info = SHMEM_I(inode);
|
|
|
int error;
|
|
|
|
|
@@ -2274,7 +2274,7 @@ static int shmem_create(struct inode *dir, struct dentry *dentry, umode_t mode,
|
|
|
*/
|
|
|
static int shmem_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 ret;
|
|
|
|
|
|
/*
|
|
@@ -2298,7 +2298,7 @@ out:
|
|
|
|
|
|
static int shmem_unlink(struct inode *dir, struct dentry *dentry)
|
|
|
{
|
|
|
- struct inode *inode = dentry->d_inode;
|
|
|
+ struct inode *inode = d_inode(dentry);
|
|
|
|
|
|
if (inode->i_nlink > 1 && !S_ISDIR(inode->i_mode))
|
|
|
shmem_free_inode(inode->i_sb);
|
|
@@ -2315,7 +2315,7 @@ static int shmem_rmdir(struct inode *dir, struct dentry *dentry)
|
|
|
if (!simple_empty(dentry))
|
|
|
return -ENOTEMPTY;
|
|
|
|
|
|
- drop_nlink(dentry->d_inode);
|
|
|
+ drop_nlink(d_inode(dentry));
|
|
|
drop_nlink(dir);
|
|
|
return shmem_unlink(dir, dentry);
|
|
|
}
|
|
@@ -2336,8 +2336,8 @@ static int shmem_exchange(struct inode *old_dir, struct dentry *old_dentry, stru
|
|
|
}
|
|
|
old_dir->i_ctime = old_dir->i_mtime =
|
|
|
new_dir->i_ctime = new_dir->i_mtime =
|
|
|
- old_dentry->d_inode->i_ctime =
|
|
|
- new_dentry->d_inode->i_ctime = CURRENT_TIME;
|
|
|
+ d_inode(old_dentry)->i_ctime =
|
|
|
+ d_inode(new_dentry)->i_ctime = CURRENT_TIME;
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
@@ -2376,7 +2376,7 @@ static int shmem_whiteout(struct inode *old_dir, struct dentry *old_dentry)
|
|
|
*/
|
|
|
static int shmem_rename2(struct inode *old_dir, struct dentry *old_dentry, struct inode *new_dir, struct dentry *new_dentry, unsigned int flags)
|
|
|
{
|
|
|
- struct inode *inode = old_dentry->d_inode;
|
|
|
+ struct inode *inode = d_inode(old_dentry);
|
|
|
int they_are_dirs = S_ISDIR(inode->i_mode);
|
|
|
|
|
|
if (flags & ~(RENAME_NOREPLACE | RENAME_EXCHANGE | RENAME_WHITEOUT))
|
|
@@ -2396,10 +2396,10 @@ static int shmem_rename2(struct inode *old_dir, struct dentry *old_dentry, struc
|
|
|
return error;
|
|
|
}
|
|
|
|
|
|
- if (new_dentry->d_inode) {
|
|
|
+ if (d_really_is_positive(new_dentry)) {
|
|
|
(void) shmem_unlink(new_dir, new_dentry);
|
|
|
if (they_are_dirs) {
|
|
|
- drop_nlink(new_dentry->d_inode);
|
|
|
+ drop_nlink(d_inode(new_dentry));
|
|
|
drop_nlink(old_dir);
|
|
|
}
|
|
|
} else if (they_are_dirs) {
|
|
@@ -2476,14 +2476,14 @@ static int shmem_symlink(struct inode *dir, struct dentry *dentry, const char *s
|
|
|
|
|
|
static void *shmem_follow_short_symlink(struct dentry *dentry, struct nameidata *nd)
|
|
|
{
|
|
|
- nd_set_link(nd, SHMEM_I(dentry->d_inode)->symlink);
|
|
|
+ nd_set_link(nd, SHMEM_I(d_inode(dentry))->symlink);
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
static void *shmem_follow_link(struct dentry *dentry, struct nameidata *nd)
|
|
|
{
|
|
|
struct page *page = NULL;
|
|
|
- int error = shmem_getpage(dentry->d_inode, 0, &page, SGP_READ, NULL);
|
|
|
+ int error = shmem_getpage(d_inode(dentry), 0, &page, SGP_READ, NULL);
|
|
|
nd_set_link(nd, error ? ERR_PTR(error) : kmap(page));
|
|
|
if (page)
|
|
|
unlock_page(page);
|
|
@@ -2574,7 +2574,7 @@ static int shmem_xattr_validate(const char *name)
|
|
|
static ssize_t shmem_getxattr(struct dentry *dentry, const char *name,
|
|
|
void *buffer, size_t size)
|
|
|
{
|
|
|
- struct shmem_inode_info *info = SHMEM_I(dentry->d_inode);
|
|
|
+ struct shmem_inode_info *info = SHMEM_I(d_inode(dentry));
|
|
|
int err;
|
|
|
|
|
|
/*
|
|
@@ -2595,7 +2595,7 @@ static ssize_t shmem_getxattr(struct dentry *dentry, const char *name,
|
|
|
static int shmem_setxattr(struct dentry *dentry, const char *name,
|
|
|
const void *value, size_t size, int flags)
|
|
|
{
|
|
|
- struct shmem_inode_info *info = SHMEM_I(dentry->d_inode);
|
|
|
+ struct shmem_inode_info *info = SHMEM_I(d_inode(dentry));
|
|
|
int err;
|
|
|
|
|
|
/*
|
|
@@ -2615,7 +2615,7 @@ static int shmem_setxattr(struct dentry *dentry, const char *name,
|
|
|
|
|
|
static int shmem_removexattr(struct dentry *dentry, const char *name)
|
|
|
{
|
|
|
- struct shmem_inode_info *info = SHMEM_I(dentry->d_inode);
|
|
|
+ struct shmem_inode_info *info = SHMEM_I(d_inode(dentry));
|
|
|
int err;
|
|
|
|
|
|
/*
|
|
@@ -2635,7 +2635,7 @@ static int shmem_removexattr(struct dentry *dentry, const char *name)
|
|
|
|
|
|
static ssize_t shmem_listxattr(struct dentry *dentry, char *buffer, size_t size)
|
|
|
{
|
|
|
- struct shmem_inode_info *info = SHMEM_I(dentry->d_inode);
|
|
|
+ struct shmem_inode_info *info = SHMEM_I(d_inode(dentry));
|
|
|
return simple_xattr_list(&info->xattrs, buffer, size);
|
|
|
}
|
|
|
#endif /* CONFIG_TMPFS_XATTR */
|