Lines Matching refs:inode
37 static void cifs_set_ops(struct inode *inode) argument
39 struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb);
41 switch (inode->i_mode & S_IFMT) {
43 inode->i_op = &cifs_file_inode_ops;
46 inode->i_fop = &cifs_file_direct_nobrl_ops;
48 inode->i_fop = &cifs_file_direct_ops;
51 inode->i_fop = &cifs_file_strict_nobrl_ops;
53 inode->i_fop = &cifs_file_strict_ops;
55 inode->i_fop = &cifs_file_nobrl_ops;
57 inode->i_fop = &cifs_file_ops;
63 inode->i_data.a_ops = &cifs_addr_ops_smallbuf;
65 inode->i_data.a_ops = &cifs_addr_ops;
69 if (IS_AUTOMOUNT(inode)) {
70 inode->i_op = &cifs_dfs_referral_inode_operations;
75 inode->i_op = &cifs_dir_inode_ops;
76 inode->i_fop = &cifs_dir_ops;
80 inode->i_op = &cifs_symlink_inode_ops;
83 init_special_inode(inode, inode->i_mode, inode->i_rdev);
92 cifs_revalidate_cache(struct inode *inode, struct cifs_fattr *fattr) argument
94 struct cifsInodeInfo *cifs_i = CIFS_I(inode);
99 if (inode->i_state & I_NEW) {
113 if (timespec_equal(&inode->i_mtime, &fattr->cf_mtime) &&
130 cifs_nlink_fattr_to_inode(struct inode *inode, struct cifs_fattr *fattr) argument
139 if (inode->i_state & I_NEW) {
141 set_nlink(inode, 2);
143 set_nlink(inode, 1);
149 set_nlink(inode, fattr->cf_nlink);
154 cifs_fattr_to_inode(struct inode *inode, struct cifs_fattr *fattr) argument
156 struct cifsInodeInfo *cifs_i = CIFS_I(inode);
157 struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb);
159 cifs_revalidate_cache(inode, fattr);
161 spin_lock(&inode->i_lock);
162 inode->i_atime = fattr->cf_atime;
163 inode->i_mtime = fattr->cf_mtime;
164 inode->i_ctime = fattr->cf_ctime;
165 inode->i_rdev = fattr->cf_rdev;
166 cifs_nlink_fattr_to_inode(inode, fattr);
167 inode->i_uid = fattr->cf_uid;
168 inode->i_gid = fattr->cf_gid;
171 if (inode->i_state & I_NEW ||
173 inode->i_mode = fattr->cf_mode;
193 i_size_write(inode, fattr->cf_eof);
200 inode->i_blocks = (512 - 1 + fattr->cf_bytes) >> 9;
202 spin_unlock(&inode->i_lock);
205 inode->i_flags |= S_AUTOMOUNT;
206 if (inode->i_state & I_NEW)
207 cifs_set_ops(inode);
337 struct inode *inode = file_inode(filp); local
338 struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb);
347 cifs_create_dfs_fattr(&fattr, inode->i_sb);
351 cifs_fattr_to_inode(inode, &fattr);
356 int cifs_get_inode_info_unix(struct inode **pinode,
659 struct inode *inode = file_inode(filp); local
660 struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb);
676 cifs_create_dfs_fattr(&fattr, inode->i_sb);
687 CIFS_I(inode)->time = 0;
696 fattr.cf_uniqueid = CIFS_I(inode)->uniqueid;
698 cifs_fattr_to_inode(inode, &fattr);
705 cifs_get_inode_info(struct inode **inode, const char *full_path, argument
730 if ((data == NULL) && (*inode != NULL)) {
731 if (CIFS_CACHE_READ(CIFS_I(*inode))) {
801 if (*inode == NULL) {
818 fattr.cf_uniqueid = CIFS_I(*inode)->uniqueid;
831 rc = cifs_acl_to_fattr(cifs_sb, &fattr, *inode, full_path, fid);
852 if (!*inode) {
853 *inode = cifs_iget(sb, &fattr);
854 if (!*inode)
860 if (unlikely(((*inode)->i_mode & S_IFMT) !=
866 cifs_fattr_to_inode(*inode, &fattr);
880 cifs_find_inode(struct inode *inode, void *opaque) argument
885 if (CIFS_I(inode)->uniqueid != fattr->cf_uniqueid)
889 if (CIFS_I(inode)->createtime != fattr->cf_createtime)
893 if ((inode->i_mode & S_IFMT) != (fattr->cf_mode & S_IFMT))
897 if (S_ISDIR(inode->i_mode) && !hlist_empty(&inode->i_dentry))
904 cifs_init_inode(struct inode *inode, void *opaque) argument
908 CIFS_I(inode)->uniqueid = fattr->cf_uniqueid;
909 CIFS_I(inode)->createtime = fattr->cf_createtime;
919 inode_has_hashed_dentries(struct inode *inode) argument
923 spin_lock(&inode->i_lock);
924 hlist_for_each_entry(dentry, &inode->i_dentry, d_u.d_alias) {
926 spin_unlock(&inode->i_lock);
930 spin_unlock(&inode->i_lock);
935 struct inode *
939 struct inode *inode; local
947 inode = iget5_locked(sb, hash, cifs_find_inode, cifs_init_inode, fattr);
948 if (inode) {
953 if (inode_has_hashed_dentries(inode)) {
955 iput(inode);
961 cifs_fattr_to_inode(inode, fattr);
963 inode->i_flags |= S_NOATIME | S_NOCMTIME;
964 if (inode->i_state & I_NEW) {
965 inode->i_ino = hash;
968 CIFS_I(inode)->fscache = NULL;
970 unlock_new_inode(inode);
974 return inode;
978 struct inode *cifs_root_iget(struct super_block *sb)
982 struct inode *inode = NULL; local
988 rc = cifs_get_inode_info_unix(&inode, "", sb, xid);
996 rc = cifs_get_inode_info(&inode, "", NULL, sb, xid, NULL);
999 if (!inode) {
1000 inode = ERR_PTR(rc);
1006 tcon->resource_id = CIFS_I(inode)->uniqueid;
1011 spin_lock(&inode->i_lock);
1012 inode->i_mode |= S_IFDIR;
1013 set_nlink(inode, 2);
1014 inode->i_op = &cifs_ipc_inode_ops;
1015 inode->i_fop = &simple_dir_operations;
1016 inode->i_uid = cifs_sb->mnt_uid;
1017 inode->i_gid = cifs_sb->mnt_gid;
1018 spin_unlock(&inode->i_lock);
1020 iget_failed(inode);
1021 inode = ERR_PTR(rc);
1029 return inode;
1033 cifs_set_file_info(struct inode *inode, struct iattr *attrs, unsigned int xid, argument
1037 struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb);
1078 return server->ops->set_file_info(inode, full_path, &info_buf, xid);
1094 struct inode *inode = d_inode(dentry); local
1095 struct cifsInodeInfo *cifsInode = CIFS_I(inode);
1096 struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb);
1214 cifs_drop_nlink(struct inode *inode) argument
1216 spin_lock(&inode->i_lock);
1217 if (inode->i_nlink > 0)
1218 drop_nlink(inode);
1219 spin_unlock(&inode->i_lock);
1229 int cifs_unlink(struct inode *dir, struct dentry *dentry)
1234 struct inode *inode = d_inode(dentry); local
1282 if (inode)
1283 cifs_drop_nlink(inode);
1291 cifs_drop_nlink(inode);
1293 } else if ((rc == -EACCES) && (dosattr == 0) && inode) {
1301 cifs_inode = CIFS_I(inode);
1310 rc = cifs_set_file_info(inode, attrs, xid, full_path, dosattr);
1319 cifs_set_file_info(inode, attrs, xid, full_path, origattr);
1322 if (inode) {
1323 cifs_inode = CIFS_I(inode);
1326 inode->i_ctime = current_fs_time(sb);
1340 cifs_mkdir_qinfo(struct inode *parent, struct dentry *dentry, umode_t mode,
1345 struct inode *inode = NULL; local
1348 rc = cifs_get_inode_info_unix(&inode, full_path, parent->i_sb,
1351 rc = cifs_get_inode_info(&inode, full_path, NULL, parent->i_sb,
1362 if (inode->i_nlink < 2)
1363 set_nlink(inode, 2);
1394 server->ops->mkdir_setinfo(inode, full_path, cifs_sb,
1397 inode->i_mode = (mode | S_IFDIR);
1400 inode->i_uid = current_fsuid();
1401 if (inode->i_mode & S_ISGID)
1402 inode->i_gid = parent->i_gid;
1404 inode->i_gid = current_fsgid();
1407 d_instantiate(dentry, inode);
1412 cifs_posix_mkdir(struct inode *inode, struct dentry *dentry, umode_t mode, argument
1419 struct inode *newinode = NULL;
1449 cifs_fill_uniqueid(inode->i_sb, &fattr);
1450 newinode = cifs_iget(inode->i_sb, &fattr);
1469 rc = cifs_mkdir_qinfo(inode, dentry, mode, full_path, cifs_sb, tcon,
1474 int cifs_mkdir(struct inode *inode, struct dentry *direntry, umode_t mode) argument
1485 mode, inode);
1487 cifs_sb = CIFS_SB(inode->i_sb);
1503 rc = cifs_posix_mkdir(inode, direntry, mode, full_path, cifs_sb,
1524 rc = cifs_mkdir_qinfo(inode, direntry, mode, full_path, cifs_sb, tcon,
1531 CIFS_I(inode)->time = 0;
1538 int cifs_rmdir(struct inode *inode, struct dentry *direntry) argument
1549 cifs_dbg(FYI, "cifs_rmdir, inode = 0x%p\n", inode);
1559 cifs_sb = CIFS_SB(inode->i_sb);
1588 cifsInode = CIFS_I(inode);
1595 d_inode(direntry)->i_ctime = inode->i_ctime = inode->i_mtime =
1596 current_fs_time(inode->i_sb);
1664 cifs_rename2(struct inode *source_dir, struct dentry *source_dentry,
1665 struct inode *target_dir, struct dentry *target_dentry,
1781 cifs_inode_needs_reval(struct inode *inode) argument
1783 struct cifsInodeInfo *cifs_i = CIFS_I(inode);
1784 struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb);
1804 S_ISREG(inode->i_mode) && inode->i_nlink != 1)
1814 cifs_invalidate_mapping(struct inode *inode) argument
1818 if (inode->i_mapping && inode->i_mapping->nrpages != 0) {
1819 rc = invalidate_inode_pages2(inode->i_mapping);
1822 __func__, inode);
1825 cifs_fscache_reset_inode_cookie(inode);
1843 cifs_revalidate_mapping(struct inode *inode) argument
1846 unsigned long *flags = &CIFS_I(inode)->flags;
1854 rc = cifs_invalidate_mapping(inode);
1867 cifs_zap_mapping(struct inode *inode) argument
1869 set_bit(CIFS_INO_INVALID_MAPPING, &CIFS_I(inode)->flags);
1870 return cifs_revalidate_mapping(inode);
1876 struct inode *inode = file_inode(filp); local
1879 if (!cifs_inode_needs_reval(inode))
1894 struct inode *inode = d_inode(dentry); local
1898 if (inode == NULL)
1901 if (!cifs_inode_needs_reval(inode))
1915 full_path, inode, inode->i_count.counter,
1919 rc = cifs_get_inode_info_unix(&inode, full_path, sb, xid);
1921 rc = cifs_get_inode_info(&inode, full_path, NULL, sb,
1933 struct inode *inode = file_inode(filp); local
1939 return cifs_revalidate_mapping(inode);
1946 struct inode *inode = d_inode(dentry); local
1952 return cifs_revalidate_mapping(inode);
1960 struct inode *inode = d_inode(dentry); local
1967 if (!CIFS_CACHE_READ(CIFS_I(inode)) && inode->i_mapping &&
1968 inode->i_mapping->nrpages != 0) {
1969 rc = filemap_fdatawait(inode->i_mapping);
1971 mapping_set_error(inode->i_mapping, rc);
1980 generic_fillattr(inode, stat);
1982 stat->ino = CIFS_I(inode)->uniqueid;
2017 static void cifs_setsize(struct inode *inode, loff_t offset) argument
2019 spin_lock(&inode->i_lock);
2020 i_size_write(inode, offset);
2021 spin_unlock(&inode->i_lock);
2023 truncate_pagecache(inode, offset);
2027 cifs_set_file_size(struct inode *inode, struct iattr *attrs, argument
2032 struct cifsInodeInfo *cifsInode = CIFS_I(inode);
2033 struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb);
2090 cifs_setsize(inode, attrs->ia_size);
2091 cifs_truncate_page(inode->i_mapping, inode->i_size);
2103 struct inode *inode = d_inode(direntry); local
2104 struct cifsInodeInfo *cifsInode = CIFS_I(inode);
2105 struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb);
2119 rc = inode_change_ok(inode, attrs);
2140 rc = filemap_write_and_wait(inode->i_mapping);
2141 mapping_set_error(inode->i_mapping, rc);
2145 rc = cifs_set_file_size(inode, attrs, xid, full_path);
2216 attrs->ia_size != i_size_read(inode))
2217 truncate_setsize(inode, attrs->ia_size);
2219 setattr_copy(inode, attrs);
2220 mark_inode_dirty(inode);
2243 struct inode *inode = d_inode(direntry); local
2244 struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb);
2245 struct cifsInodeInfo *cifsInode = CIFS_I(inode);
2259 rc = inode_change_ok(inode, attrs);
2283 rc = filemap_write_and_wait(inode->i_mapping);
2284 mapping_set_error(inode->i_mapping, rc);
2288 rc = cifs_set_file_size(inode, attrs, xid, full_path);
2302 rc = id_mode_to_cifs_acl(inode, full_path, NO_CHANGE_64,
2324 rc = id_mode_to_cifs_acl(inode, full_path, mode,
2340 attrs->ia_mode = inode->i_mode & ~S_IWUGO;
2352 if (S_ISDIR(inode->i_mode))
2367 rc = cifs_set_file_info(inode, attrs, xid, full_path, dosattr);
2386 attrs->ia_size != i_size_read(inode))
2387 truncate_setsize(inode, attrs->ia_size);
2389 setattr_copy(inode, attrs);
2390 mark_inode_dirty(inode);
2401 struct inode *inode = d_inode(direntry); local
2402 struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb);
2414 void cifs_delete_inode(struct inode *inode)
2416 cifs_dbg(FYI, "In cifs_delete_inode, inode = 0x%p\n", inode);