Lines Matching refs:inode
46 static int iget_test(struct inode *inode, void *opaque) in iget_test() argument
48 struct gfs2_inode *ip = GFS2_I(inode); in iget_test()
53 inode->i_state & (I_FREEING|I_CLEAR|I_WILL_FREE)) { in iget_test()
62 static int iget_set(struct inode *inode, void *opaque) in iget_set() argument
64 struct gfs2_inode *ip = GFS2_I(inode); in iget_set()
69 inode->i_ino = (unsigned long)(data->no_addr); in iget_set()
74 struct inode *gfs2_ilookup(struct super_block *sb, u64 no_addr, int non_block) in gfs2_ilookup()
85 static struct inode *gfs2_iget(struct super_block *sb, u64 no_addr, in gfs2_iget()
105 static void gfs2_set_iop(struct inode *inode) in gfs2_set_iop() argument
107 struct gfs2_sbd *sdp = GFS2_SB(inode); in gfs2_set_iop()
108 umode_t mode = inode->i_mode; in gfs2_set_iop()
111 inode->i_op = &gfs2_file_iops; in gfs2_set_iop()
113 inode->i_fop = &gfs2_file_fops_nolock; in gfs2_set_iop()
115 inode->i_fop = &gfs2_file_fops; in gfs2_set_iop()
117 inode->i_op = &gfs2_dir_iops; in gfs2_set_iop()
119 inode->i_fop = &gfs2_dir_fops_nolock; in gfs2_set_iop()
121 inode->i_fop = &gfs2_dir_fops; in gfs2_set_iop()
123 inode->i_op = &gfs2_symlink_iops; in gfs2_set_iop()
125 inode->i_op = &gfs2_file_iops; in gfs2_set_iop()
126 init_special_inode(inode, inode->i_mode, inode->i_rdev); in gfs2_set_iop()
140 struct inode *gfs2_inode_lookup(struct super_block *sb, unsigned int type, in gfs2_inode_lookup()
143 struct inode *inode; in gfs2_inode_lookup() local
148 inode = gfs2_iget(sb, no_addr, non_block); in gfs2_inode_lookup()
149 ip = GFS2_I(inode); in gfs2_inode_lookup()
151 if (!inode) in gfs2_inode_lookup()
154 if (inode->i_state & I_NEW) { in gfs2_inode_lookup()
155 struct gfs2_sbd *sdp = GFS2_SB(inode); in gfs2_inode_lookup()
178 error = gfs2_inode_refresh(GFS2_I(inode)); in gfs2_inode_lookup()
182 inode->i_mode = DT2IF(type); in gfs2_inode_lookup()
185 gfs2_set_iop(inode); in gfs2_inode_lookup()
186 unlock_new_inode(inode); in gfs2_inode_lookup()
189 return inode; in gfs2_inode_lookup()
202 iget_failed(inode); in gfs2_inode_lookup()
206 struct inode *gfs2_lookup_by_inum(struct gfs2_sbd *sdp, u64 no_addr, in gfs2_lookup_by_inum()
211 struct inode *inode = NULL; in gfs2_lookup_by_inum() local
224 inode = gfs2_inode_lookup(sb, DT_UNKNOWN, no_addr, 0, 1); in gfs2_lookup_by_inum()
225 if (IS_ERR(inode)) in gfs2_lookup_by_inum()
231 if (GFS2_I(inode)->i_no_formal_ino != *no_formal_ino) in gfs2_lookup_by_inum()
235 if (GFS2_I(inode)->i_diskflags & GFS2_DIF_SYSTEM) in gfs2_lookup_by_inum()
243 return error ? ERR_PTR(error) : inode; in gfs2_lookup_by_inum()
245 iput(inode); in gfs2_lookup_by_inum()
250 struct inode *gfs2_lookup_simple(struct inode *dip, const char *name) in gfs2_lookup_simple()
253 struct inode *inode; in gfs2_lookup_simple() local
255 inode = gfs2_lookupi(dip, &qstr, 1); in gfs2_lookup_simple()
261 if (inode == NULL) in gfs2_lookup_simple()
264 return inode; in gfs2_lookup_simple()
283 struct inode *gfs2_lookupi(struct inode *dir, const struct qstr *name, in gfs2_lookupi()
290 struct inode *inode = NULL; in gfs2_lookupi() local
316 inode = gfs2_dir_search(dir, name, false); in gfs2_lookupi()
317 if (IS_ERR(inode)) in gfs2_lookupi()
318 error = PTR_ERR(inode); in gfs2_lookupi()
324 return inode ? inode : ERR_PTR(error); in gfs2_lookupi()
358 struct inode *inode) in munge_mode_uid_gid() argument
363 if (S_ISDIR(inode->i_mode)) in munge_mode_uid_gid()
364 inode->i_mode |= S_ISUID; in munge_mode_uid_gid()
366 inode->i_mode &= ~07111; in munge_mode_uid_gid()
367 inode->i_uid = dip->i_inode.i_uid; in munge_mode_uid_gid()
369 inode->i_uid = current_fsuid(); in munge_mode_uid_gid()
372 if (S_ISDIR(inode->i_mode)) in munge_mode_uid_gid()
373 inode->i_mode |= S_ISGID; in munge_mode_uid_gid()
374 inode->i_gid = dip->i_inode.i_gid; in munge_mode_uid_gid()
376 inode->i_gid = current_fsgid(); in munge_mode_uid_gid()
555 static int gfs2_initxattrs(struct inode *inode, const struct xattr *xattr_array, in gfs2_initxattrs() argument
562 err = __gfs2_xattr_set(inode, xattr->name, xattr->value, in gfs2_initxattrs()
584 static int gfs2_create_inode(struct inode *dir, struct dentry *dentry, in gfs2_create_inode()
592 struct inode *inode = NULL; in gfs2_create_inode() local
620 inode = gfs2_dir_search(dir, &dentry->d_name, !S_ISREG(mode) || excl); in gfs2_create_inode()
621 error = PTR_ERR(inode); in gfs2_create_inode()
622 if (!IS_ERR(inode)) { in gfs2_create_inode()
623 if (S_ISDIR(inode->i_mode)) { in gfs2_create_inode()
624 iput(inode); in gfs2_create_inode()
625 inode = ERR_PTR(-EISDIR); in gfs2_create_inode()
628 d_instantiate(dentry, inode); in gfs2_create_inode()
631 if (S_ISREG(inode->i_mode)) in gfs2_create_inode()
646 inode = new_inode(sdp->sd_vfs); in gfs2_create_inode()
648 if (!inode) in gfs2_create_inode()
655 ip = GFS2_I(inode); in gfs2_create_inode()
660 inode->i_mode = mode; in gfs2_create_inode()
661 set_nlink(inode, S_ISDIR(mode) ? 2 : 1); in gfs2_create_inode()
662 inode->i_rdev = dev; in gfs2_create_inode()
663 inode->i_size = size; in gfs2_create_inode()
664 inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; in gfs2_create_inode()
665 gfs2_set_inode_blocks(inode, 1); in gfs2_create_inode()
666 munge_mode_uid_gid(dip, inode); in gfs2_create_inode()
680 gfs2_set_aops(inode); in gfs2_create_inode()
688 gfs2_set_inode_flags(inode); in gfs2_create_inode()
701 gfs2_set_inode_blocks(inode, blocks); in gfs2_create_inode()
733 gfs2_set_iop(inode); in gfs2_create_inode()
734 insert_inode_hash(inode); in gfs2_create_inode()
737 error = gfs2_set_acl(inode, default_acl, ACL_TYPE_DEFAULT); in gfs2_create_inode()
742 error = gfs2_set_acl(inode, acl, ACL_TYPE_ACCESS); in gfs2_create_inode()
758 mark_inode_dirty(inode); in gfs2_create_inode()
759 d_instantiate(dentry, inode); in gfs2_create_inode()
790 if (inode && !IS_ERR(inode)) { in gfs2_create_inode()
791 clear_nlink(inode); in gfs2_create_inode()
793 mark_inode_dirty(inode); in gfs2_create_inode()
795 &GFS2_I(inode)->i_flags); in gfs2_create_inode()
796 iput(inode); in gfs2_create_inode()
811 static int gfs2_create(struct inode *dir, struct dentry *dentry, in gfs2_create()
828 static struct dentry *__gfs2_lookup(struct inode *dir, struct dentry *dentry, in __gfs2_lookup()
831 struct inode *inode; in __gfs2_lookup() local
837 inode = gfs2_lookupi(dir, &dentry->d_name, 0); in __gfs2_lookup()
838 if (inode == NULL) { in __gfs2_lookup()
842 if (IS_ERR(inode)) in __gfs2_lookup()
843 return ERR_CAST(inode); in __gfs2_lookup()
845 gl = GFS2_I(inode)->i_gl; in __gfs2_lookup()
848 iput(inode); in __gfs2_lookup()
852 d = d_splice_alias(inode, dentry); in __gfs2_lookup()
857 if (file && S_ISREG(inode->i_mode)) in __gfs2_lookup()
868 static struct dentry *gfs2_lookup(struct inode *dir, struct dentry *dentry, in gfs2_lookup()
886 static int gfs2_link(struct dentry *old_dentry, struct inode *dir, in gfs2_link()
891 struct inode *inode = d_inode(old_dentry); in gfs2_link() local
892 struct gfs2_inode *ip = GFS2_I(inode); in gfs2_link()
898 if (S_ISDIR(inode->i_mode)) in gfs2_link()
917 if (inode->i_nlink == 0) in gfs2_link()
941 if (IS_IMMUTABLE(inode) || IS_APPEND(inode)) in gfs2_link()
984 ihold(inode); in gfs2_link()
985 d_instantiate(dentry, inode); in gfs2_link()
986 mark_inode_dirty(inode); in gfs2_link()
1058 struct inode *inode = d_inode(dentry); in gfs2_unlink_inode() local
1059 struct gfs2_inode *ip = GFS2_I(inode); in gfs2_unlink_inode()
1067 inode->i_ctime = CURRENT_TIME; in gfs2_unlink_inode()
1068 if (S_ISDIR(inode->i_mode)) in gfs2_unlink_inode()
1069 clear_nlink(inode); in gfs2_unlink_inode()
1071 drop_nlink(inode); in gfs2_unlink_inode()
1072 mark_inode_dirty(inode); in gfs2_unlink_inode()
1073 if (inode->i_nlink == 0) in gfs2_unlink_inode()
1074 gfs2_unlink_di(inode); in gfs2_unlink_inode()
1090 static int gfs2_unlink(struct inode *dir, struct dentry *dentry) in gfs2_unlink()
1094 struct inode *inode = d_inode(dentry); in gfs2_unlink() local
1095 struct gfs2_inode *ip = GFS2_I(inode); in gfs2_unlink()
1125 if (inode->i_nlink == 0) in gfs2_unlink()
1128 if (S_ISDIR(inode->i_mode)) { in gfs2_unlink()
1130 if (ip->i_entries > 2 || inode->i_nlink > 2) in gfs2_unlink()
1173 static int gfs2_symlink(struct inode *dir, struct dentry *dentry, in gfs2_symlink()
1195 static int gfs2_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) in gfs2_mkdir()
1211 static int gfs2_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, in gfs2_mknod()
1229 static int gfs2_atomic_open(struct inode *dir, struct dentry *dentry, in gfs2_atomic_open()
1273 struct inode *dir = &to->i_inode; in gfs2_ok_to_move()
1275 struct inode *tmp; in gfs2_ok_to_move()
1319 static int gfs2_rename(struct inode *odir, struct dentry *odentry, in gfs2_rename()
1320 struct inode *ndir, struct dentry *ndentry) in gfs2_rename()
1606 int gfs2_permission(struct inode *inode, int mask) in gfs2_permission() argument
1614 ip = GFS2_I(inode); in gfs2_permission()
1624 if ((mask & MAY_WRITE) && IS_IMMUTABLE(inode)) in gfs2_permission()
1627 error = generic_permission(inode, mask); in gfs2_permission()
1634 static int __gfs2_setattr_simple(struct inode *inode, struct iattr *attr) in __gfs2_setattr_simple() argument
1636 setattr_copy(inode, attr); in __gfs2_setattr_simple()
1637 mark_inode_dirty(inode); in __gfs2_setattr_simple()
1649 int gfs2_setattr_simple(struct inode *inode, struct iattr *attr) in gfs2_setattr_simple() argument
1654 return __gfs2_setattr_simple(inode, attr); in gfs2_setattr_simple()
1656 error = gfs2_trans_begin(GFS2_SB(inode), RES_DINODE, 0); in gfs2_setattr_simple()
1660 error = __gfs2_setattr_simple(inode, attr); in gfs2_setattr_simple()
1661 gfs2_trans_end(GFS2_SB(inode)); in gfs2_setattr_simple()
1665 static int setattr_chown(struct inode *inode, struct iattr *attr) in setattr_chown() argument
1667 struct gfs2_inode *ip = GFS2_I(inode); in setattr_chown()
1668 struct gfs2_sbd *sdp = GFS2_SB(inode); in setattr_chown()
1674 ouid = inode->i_uid; in setattr_chown()
1675 ogid = inode->i_gid; in setattr_chown()
1684 error = get_write_access(inode); in setattr_chown()
1713 error = gfs2_setattr_simple(inode, attr); in setattr_chown()
1728 put_write_access(inode); in setattr_chown()
1745 struct inode *inode = d_inode(dentry); in gfs2_setattr() local
1746 struct gfs2_inode *ip = GFS2_I(inode); in gfs2_setattr()
1759 if (IS_IMMUTABLE(inode) || IS_APPEND(inode)) in gfs2_setattr()
1762 error = inode_change_ok(inode, attr); in gfs2_setattr()
1767 error = gfs2_setattr_size(inode, attr->ia_size); in gfs2_setattr()
1769 error = setattr_chown(inode, attr); in gfs2_setattr()
1771 error = gfs2_setattr_simple(inode, attr); in gfs2_setattr()
1773 error = posix_acl_chmod(inode, inode->i_mode); in gfs2_setattr()
1778 mark_inode_dirty(inode); in gfs2_setattr()
1801 struct inode *inode = d_inode(dentry); in gfs2_getattr() local
1802 struct gfs2_inode *ip = GFS2_I(inode); in gfs2_getattr()
1814 generic_fillattr(inode, stat); in gfs2_getattr()
1824 struct inode *inode = d_inode(dentry); in gfs2_setxattr() local
1825 struct gfs2_inode *ip = GFS2_I(inode); in gfs2_setxattr()
1844 struct inode *inode = d_inode(dentry); in gfs2_getxattr() local
1845 struct gfs2_inode *ip = GFS2_I(inode); in gfs2_getxattr()
1865 struct inode *inode = d_inode(dentry); in gfs2_removexattr() local
1866 struct gfs2_inode *ip = GFS2_I(inode); in gfs2_removexattr()
1882 static int gfs2_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, in gfs2_fiemap() argument
1885 struct gfs2_inode *ip = GFS2_I(inode); in gfs2_fiemap()
1893 mutex_lock(&inode->i_mutex); in gfs2_fiemap()
1900 u64 phys = ip->i_no_addr << inode->i_blkbits; in gfs2_fiemap()
1901 u64 size = i_size_read(inode); in gfs2_fiemap()
1914 ret = __generic_block_fiemap(inode, fieinfo, start, len, in gfs2_fiemap()
1920 mutex_unlock(&inode->i_mutex); in gfs2_fiemap()