Lines Matching refs:inode

31 static void cifs_set_ops(struct inode *inode)  in cifs_set_ops()  argument
33 struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb); in cifs_set_ops()
35 switch (inode->i_mode & S_IFMT) { in cifs_set_ops()
37 inode->i_op = &cifs_file_inode_ops; in cifs_set_ops()
40 inode->i_fop = &cifs_file_direct_nobrl_ops; in cifs_set_ops()
42 inode->i_fop = &cifs_file_direct_ops; in cifs_set_ops()
45 inode->i_fop = &cifs_file_strict_nobrl_ops; in cifs_set_ops()
47 inode->i_fop = &cifs_file_strict_ops; in cifs_set_ops()
49 inode->i_fop = &cifs_file_nobrl_ops; in cifs_set_ops()
51 inode->i_fop = &cifs_file_ops; in cifs_set_ops()
57 inode->i_data.a_ops = &cifs_addr_ops_smallbuf; in cifs_set_ops()
59 inode->i_data.a_ops = &cifs_addr_ops; in cifs_set_ops()
62 if (IS_AUTOMOUNT(inode)) { in cifs_set_ops()
63 inode->i_op = &cifs_namespace_inode_operations; in cifs_set_ops()
65 inode->i_op = &cifs_dir_inode_ops; in cifs_set_ops()
66 inode->i_fop = &cifs_dir_ops; in cifs_set_ops()
70 inode->i_op = &cifs_symlink_inode_ops; in cifs_set_ops()
73 init_special_inode(inode, inode->i_mode, inode->i_rdev); in cifs_set_ops()
82 cifs_revalidate_cache(struct inode *inode, struct cifs_fattr *fattr) in cifs_revalidate_cache() argument
85 struct cifsInodeInfo *cifs_i = CIFS_I(inode); in cifs_revalidate_cache()
91 if (inode->i_state & I_NEW) { in cifs_revalidate_cache()
105 fattr->cf_mtime = timestamp_truncate(fattr->cf_mtime, inode); in cifs_revalidate_cache()
106 mtime = inode_get_mtime(inode); in cifs_revalidate_cache()
118 cifs_fscache_fill_coherency(&cifs_i->netfs.inode, &cd); in cifs_revalidate_cache()
119 fscache_invalidate(cifs_inode_cookie(inode), &cd, i_size_read(inode), 0); in cifs_revalidate_cache()
127 cifs_nlink_fattr_to_inode(struct inode *inode, struct cifs_fattr *fattr) in cifs_nlink_fattr_to_inode() argument
136 if (inode->i_state & I_NEW) { in cifs_nlink_fattr_to_inode()
138 set_nlink(inode, 2); in cifs_nlink_fattr_to_inode()
140 set_nlink(inode, 1); in cifs_nlink_fattr_to_inode()
146 set_nlink(inode, fattr->cf_nlink); in cifs_nlink_fattr_to_inode()
151 cifs_fattr_to_inode(struct inode *inode, struct cifs_fattr *fattr, in cifs_fattr_to_inode() argument
154 struct cifsInodeInfo *cifs_i = CIFS_I(inode); in cifs_fattr_to_inode()
155 struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb); in cifs_fattr_to_inode()
157 if (!(inode->i_state & I_NEW) && in cifs_fattr_to_inode()
158 unlikely(inode_wrong_type(inode, fattr->cf_mode))) { in cifs_fattr_to_inode()
159 CIFS_I(inode)->time = 0; /* force reval */ in cifs_fattr_to_inode()
163 cifs_revalidate_cache(inode, fattr); in cifs_fattr_to_inode()
165 spin_lock(&inode->i_lock); in cifs_fattr_to_inode()
166 fattr->cf_mtime = timestamp_truncate(fattr->cf_mtime, inode); in cifs_fattr_to_inode()
167 fattr->cf_atime = timestamp_truncate(fattr->cf_atime, inode); in cifs_fattr_to_inode()
168 fattr->cf_ctime = timestamp_truncate(fattr->cf_ctime, inode); in cifs_fattr_to_inode()
171 inode_set_atime_to_ts(inode, fattr->cf_mtime); in cifs_fattr_to_inode()
173 inode_set_atime_to_ts(inode, fattr->cf_atime); in cifs_fattr_to_inode()
174 inode_set_mtime_to_ts(inode, fattr->cf_mtime); in cifs_fattr_to_inode()
175 inode_set_ctime_to_ts(inode, fattr->cf_ctime); in cifs_fattr_to_inode()
176 inode->i_rdev = fattr->cf_rdev; in cifs_fattr_to_inode()
177 cifs_nlink_fattr_to_inode(inode, fattr); in cifs_fattr_to_inode()
178 inode->i_uid = fattr->cf_uid; in cifs_fattr_to_inode()
179 inode->i_gid = fattr->cf_gid; in cifs_fattr_to_inode()
182 if (inode->i_state & I_NEW || in cifs_fattr_to_inode()
184 inode->i_mode = fattr->cf_mode; in cifs_fattr_to_inode()
205 i_size_write(inode, fattr->cf_eof); in cifs_fattr_to_inode()
212 inode->i_blocks = (512 - 1 + fattr->cf_bytes) >> 9; in cifs_fattr_to_inode()
220 spin_unlock(&inode->i_lock); in cifs_fattr_to_inode()
223 inode->i_flags |= S_AUTOMOUNT; in cifs_fattr_to_inode()
224 if (inode->i_state & I_NEW) in cifs_fattr_to_inode()
225 cifs_set_ops(inode); in cifs_fattr_to_inode()
353 struct inode **inode) in update_inode_info() argument
358 if (!*inode) { in update_inode_info()
359 *inode = cifs_iget(sb, fattr); in update_inode_info()
360 if (!*inode) in update_inode_info()
369 CIFS_I(*inode)->uniqueid != fattr->cf_uniqueid)) { in update_inode_info()
370 CIFS_I(*inode)->time = 0; /* force reval */ in update_inode_info()
373 return cifs_fattr_to_inode(*inode, fattr, false); in update_inode_info()
384 struct inode *inode = file_inode(filp); in cifs_get_file_info_unix() local
385 struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb); in cifs_get_file_info_unix()
403 cifs_create_junction_fattr(&fattr, inode->i_sb); in cifs_get_file_info_unix()
407 rc = cifs_fattr_to_inode(inode, &fattr, false); in cifs_get_file_info_unix()
417 struct inode **pinode, in cifs_get_unix_fattr()
470 int cifs_get_inode_info_unix(struct inode **pinode, in cifs_get_inode_info_unix()
490 struct inode **pinode, in cifs_get_unix_fattr()
496 int cifs_get_inode_info_unix(struct inode **pinode, in cifs_get_inode_info_unix()
814 struct inode *inode = file_inode(filp); in cifs_get_file_info() local
842 cifs_open_info_to_fattr(&fattr, &data, inode->i_sb); in cifs_get_file_info()
844 cifs_mark_open_handles_for_deleted_file(inode, path); in cifs_get_file_info()
847 cifs_create_junction_fattr(&fattr, inode->i_sb); in cifs_get_file_info()
857 CIFS_I(inode)->time = 0; in cifs_get_file_info()
867 fattr.cf_uniqueid = CIFS_I(inode)->uniqueid; in cifs_get_file_info()
870 rc = cifs_fattr_to_inode(inode, &fattr, false); in cifs_get_file_info()
946 struct inode **inode, const char *full_path, in cifs_set_fattr_ino() argument
954 if (*inode) in cifs_set_fattr_ino()
955 fattr->cf_uniqueid = CIFS_I(*inode)->uniqueid; in cifs_set_fattr_ino()
965 rc = server->ops->get_srv_inum(xid, *inode ? NULL : tcon, cifs_sb, full_path, in cifs_set_fattr_ino()
972 if (*inode) in cifs_set_fattr_ino()
973 fattr->cf_uniqueid = CIFS_I(*inode)->uniqueid; in cifs_set_fattr_ino()
984 if (*inode) { in cifs_set_fattr_ino()
986 fattr->cf_uniqueid = CIFS_I(*inode)->uniqueid; in cifs_set_fattr_ino()
995 static inline bool is_inode_cache_good(struct inode *ino) in is_inode_cache_good()
1063 struct inode **inode, in cifs_get_fattr() argument
1108 if (!rc && *inode && in cifs_get_fattr()
1110 cifs_mark_open_handles_for_deleted_file(*inode, full_path); in cifs_get_fattr()
1165 cifs_set_fattr_ino(xid, tcon, sb, inode, full_path, data, fattr); in cifs_get_fattr()
1183 rc = cifs_acl_to_fattr(cifs_sb, fattr, *inode, in cifs_get_fattr()
1193 rc = cifs_acl_to_fattr(cifs_sb, fattr, *inode, in cifs_get_fattr()
1221 int cifs_get_inode_info(struct inode **inode, in cifs_get_inode_info() argument
1230 if (is_inode_cache_good(*inode)) { in cifs_get_inode_info()
1235 rc = cifs_get_fattr(data, sb, xid, fid, &fattr, inode, full_path); in cifs_get_inode_info()
1239 rc = update_inode_info(sb, &fattr, inode); in cifs_get_inode_info()
1320 int smb311_posix_get_inode_info(struct inode **inode, in smb311_posix_get_inode_info() argument
1329 if (is_inode_cache_good(*inode)) { in smb311_posix_get_inode_info()
1338 rc = update_inode_info(sb, &fattr, inode); in smb311_posix_get_inode_info()
1340 cifs_mark_open_handles_for_deleted_file(*inode, full_path); in smb311_posix_get_inode_info()
1351 cifs_find_inode(struct inode *inode, void *opaque) in cifs_find_inode() argument
1358 if (CIFS_I(inode)->uniqueid != fattr->cf_uniqueid) in cifs_find_inode()
1362 if (CIFS_I(inode)->createtime != fattr->cf_createtime) in cifs_find_inode()
1366 if (inode_wrong_type(inode, fattr->cf_mode)) in cifs_find_inode()
1370 if (S_ISDIR(inode->i_mode) && !hlist_empty(&inode->i_dentry)) in cifs_find_inode()
1377 cifs_init_inode(struct inode *inode, void *opaque) in cifs_init_inode() argument
1381 CIFS_I(inode)->uniqueid = fattr->cf_uniqueid; in cifs_init_inode()
1382 CIFS_I(inode)->createtime = fattr->cf_createtime; in cifs_init_inode()
1392 inode_has_hashed_dentries(struct inode *inode) in inode_has_hashed_dentries() argument
1396 spin_lock(&inode->i_lock); in inode_has_hashed_dentries()
1397 hlist_for_each_entry(dentry, &inode->i_dentry, d_u.d_alias) { in inode_has_hashed_dentries()
1399 spin_unlock(&inode->i_lock); in inode_has_hashed_dentries()
1403 spin_unlock(&inode->i_lock); in inode_has_hashed_dentries()
1408 struct inode *
1412 struct inode *inode; in cifs_iget() local
1420 inode = iget5_locked(sb, hash, cifs_find_inode, cifs_init_inode, fattr); in cifs_iget()
1421 if (inode) { in cifs_iget()
1426 if (inode_has_hashed_dentries(inode)) { in cifs_iget()
1428 iput(inode); in cifs_iget()
1435 cifs_fattr_to_inode(inode, fattr, false); in cifs_iget()
1437 inode->i_flags |= S_NOATIME | S_NOCMTIME; in cifs_iget()
1438 if (inode->i_state & I_NEW) { in cifs_iget()
1439 inode->i_ino = hash; in cifs_iget()
1440 cifs_fscache_get_inode_cookie(inode); in cifs_iget()
1441 unlock_new_inode(inode); in cifs_iget()
1445 return inode; in cifs_iget()
1449 struct inode *cifs_root_iget(struct super_block *sb) in cifs_root_iget()
1454 struct inode *inode = NULL; in cifs_root_iget() local
1476 rc = cifs_get_unix_fattr(path, sb, &fattr, &inode, xid); in cifs_root_iget()
1488 rc = cifs_get_fattr(NULL, sb, xid, NULL, &fattr, &inode, path); in cifs_root_iget()
1496 inode = cifs_iget(sb, &fattr); in cifs_root_iget()
1499 if (!inode) { in cifs_root_iget()
1500 inode = ERR_PTR(rc); in cifs_root_iget()
1505 cifs_mark_open_handles_for_deleted_file(inode, path); in cifs_root_iget()
1509 spin_lock(&inode->i_lock); in cifs_root_iget()
1510 inode->i_mode |= S_IFDIR; in cifs_root_iget()
1511 set_nlink(inode, 2); in cifs_root_iget()
1512 inode->i_op = &cifs_ipc_inode_ops; in cifs_root_iget()
1513 inode->i_fop = &simple_dir_operations; in cifs_root_iget()
1514 inode->i_uid = cifs_sb->ctx->linux_uid; in cifs_root_iget()
1515 inode->i_gid = cifs_sb->ctx->linux_gid; in cifs_root_iget()
1516 spin_unlock(&inode->i_lock); in cifs_root_iget()
1518 iget_failed(inode); in cifs_root_iget()
1519 inode = ERR_PTR(rc); in cifs_root_iget()
1526 return inode; in cifs_root_iget()
1530 cifs_set_file_info(struct inode *inode, struct iattr *attrs, unsigned int xid, in cifs_set_file_info() argument
1534 struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb); in cifs_set_file_info()
1577 return server->ops->set_file_info(inode, full_path, &info_buf, xid); in cifs_set_file_info()
1594 struct inode *inode = d_inode(dentry); in cifs_rename_pending_delete() local
1595 struct cifsInodeInfo *cifsInode = CIFS_I(inode); in cifs_rename_pending_delete()
1596 struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb); in cifs_rename_pending_delete()
1716 cifs_drop_nlink(struct inode *inode) in cifs_drop_nlink() argument
1718 spin_lock(&inode->i_lock); in cifs_drop_nlink()
1719 if (inode->i_nlink > 0) in cifs_drop_nlink()
1720 drop_nlink(inode); in cifs_drop_nlink()
1721 spin_unlock(&inode->i_lock); in cifs_drop_nlink()
1731 int cifs_unlink(struct inode *dir, struct dentry *dentry) in cifs_unlink()
1737 struct inode *inode = d_inode(dentry); in cifs_unlink() local
1797 if (inode) { in cifs_unlink()
1798 cifs_mark_open_handles_for_deleted_file(inode, full_path); in cifs_unlink()
1799 cifs_drop_nlink(inode); in cifs_unlink()
1808 cifs_mark_open_handles_for_deleted_file(inode, full_path); in cifs_unlink()
1809 cifs_drop_nlink(inode); in cifs_unlink()
1812 } else if ((rc == -EACCES) && (dosattr == 0) && inode) { in cifs_unlink()
1820 cifs_inode = CIFS_I(inode); in cifs_unlink()
1829 rc = cifs_set_file_info(inode, attrs, xid, full_path, dosattr); in cifs_unlink()
1838 cifs_set_file_info(inode, attrs, xid, full_path, origattr); in cifs_unlink()
1841 if (inode) { in cifs_unlink()
1842 cifs_inode = CIFS_I(inode); in cifs_unlink()
1845 inode_set_ctime_current(inode); in cifs_unlink()
1859 cifs_mkdir_qinfo(struct inode *parent, struct dentry *dentry, umode_t mode,
1864 struct inode *inode = NULL; local
1867 rc = smb311_posix_get_inode_info(&inode, full_path,
1871 rc = cifs_get_inode_info_unix(&inode, full_path, parent->i_sb,
1875 rc = cifs_get_inode_info(&inode, full_path, NULL, parent->i_sb,
1882 if (!S_ISDIR(inode->i_mode)) {
1888 iput(inode);
1897 if (inode->i_nlink < 2)
1898 set_nlink(inode, 2);
1933 server->ops->mkdir_setinfo(inode, full_path, cifs_sb,
1936 inode->i_mode = (mode | S_IFDIR);
1939 inode->i_uid = current_fsuid();
1940 if (inode->i_mode & S_ISGID)
1941 inode->i_gid = parent->i_gid;
1943 inode->i_gid = current_fsgid();
1946 d_instantiate(dentry, inode);
1952 cifs_posix_mkdir(struct inode *inode, struct dentry *dentry, umode_t mode, argument
1959 struct inode *newinode = NULL;
1989 cifs_fill_uniqueid(inode->i_sb, &fattr);
1990 newinode = cifs_iget(inode->i_sb, &fattr);
2009 rc = cifs_mkdir_qinfo(inode, dentry, mode, full_path, cifs_sb, tcon,
2015 int cifs_mkdir(struct mnt_idmap *idmap, struct inode *inode, argument
2028 mode, inode);
2030 cifs_sb = CIFS_SB(inode->i_sb);
2050 rc = server->ops->posix_mkdir(xid, inode, mode, tcon, full_path,
2059 rc = cifs_posix_mkdir(inode, direntry, mode, full_path, cifs_sb,
2072 rc = server->ops->mkdir(xid, inode, mode, tcon, full_path, cifs_sb);
2080 rc = cifs_mkdir_qinfo(inode, direntry, mode, full_path, cifs_sb, tcon,
2087 CIFS_I(inode)->time = 0;
2094 int cifs_rmdir(struct inode *inode, struct dentry *direntry) argument
2106 cifs_dbg(FYI, "cifs_rmdir, inode = 0x%p\n", inode);
2116 cifs_sb = CIFS_SB(inode->i_sb);
2156 cifsInode = CIFS_I(inode);
2164 inode_set_mtime_to_ts(inode, inode_set_ctime_current(inode));
2245 cifs_rename2(struct mnt_idmap *idmap, struct inode *source_dir,
2246 struct dentry *source_dentry, struct inode *target_dir,
2383 struct inode *inode = d_inode(dentry); local
2384 struct cifsInodeInfo *cifs_i = CIFS_I(inode);
2385 struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb);
2412 if (S_ISDIR(inode->i_mode)) {
2428 S_ISREG(inode->i_mode) && inode->i_nlink != 1)
2438 cifs_invalidate_mapping(struct inode *inode) argument
2442 if (inode->i_mapping && inode->i_mapping->nrpages != 0) {
2443 rc = invalidate_inode_pages2(inode->i_mapping);
2446 __func__, inode, rc);
2468 cifs_revalidate_mapping(struct inode *inode) argument
2471 unsigned long *flags = &CIFS_I(inode)->flags;
2472 struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb);
2475 if (IS_SWAPFILE(inode))
2488 rc = cifs_invalidate_mapping(inode);
2502 cifs_zap_mapping(struct inode *inode) argument
2504 set_bit(CIFS_INO_INVALID_MAPPING, &CIFS_I(inode)->flags);
2505 return cifs_revalidate_mapping(inode);
2533 struct inode *inode = d_inode(dentry); local
2539 if (inode == NULL)
2555 full_path, inode, inode->i_count.counter,
2560 rc = smb311_posix_get_inode_info(&inode, full_path,
2563 rc = cifs_get_inode_info_unix(&inode, full_path, sb, xid);
2565 rc = cifs_get_inode_info(&inode, full_path, NULL, sb,
2580 struct inode *inode = file_inode(filp); local
2586 return cifs_revalidate_mapping(inode);
2593 struct inode *inode = d_inode(dentry); local
2599 return cifs_revalidate_mapping(inode);
2608 struct inode *inode = d_inode(dentry); local
2611 if (unlikely(cifs_forced_shutdown(CIFS_SB(inode->i_sb))))
2619 !CIFS_CACHE_READ(CIFS_I(inode)) &&
2620 inode->i_mapping && inode->i_mapping->nrpages != 0) {
2621 rc = filemap_fdatawait(inode->i_mapping);
2623 mapping_set_error(inode->i_mapping, rc);
2629 CIFS_I(inode)->time = 0; /* force revalidate */
2637 (CIFS_I(inode)->time == 0)) {
2643 generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat);
2645 stat->ino = CIFS_I(inode)->uniqueid;
2648 if (CIFS_I(inode)->createtime) {
2651 cifs_NTtimeToUnix(cpu_to_le64(CIFS_I(inode)->createtime));
2655 if (CIFS_I(inode)->cifsAttrs & FILE_ATTRIBUTE_COMPRESSED)
2657 if (CIFS_I(inode)->cifsAttrs & FILE_ATTRIBUTE_ENCRYPTED)
2676 int cifs_fiemap(struct inode *inode, struct fiemap_extent_info *fei, u64 start, argument
2679 struct cifsInodeInfo *cifs_i = CIFS_I(inode);
2680 struct cifs_sb_info *cifs_sb = CIFS_SB(cifs_i->netfs.inode.i_sb);
2693 if (!CIFS_CACHE_READ(CIFS_I(inode)) && inode->i_mapping &&
2694 inode->i_mapping->nrpages != 0) {
2695 rc = filemap_fdatawait(inode->i_mapping);
2697 mapping_set_error(inode->i_mapping, rc);
2733 void cifs_setsize(struct inode *inode, loff_t offset) argument
2735 struct cifsInodeInfo *cifs_i = CIFS_I(inode);
2737 spin_lock(&inode->i_lock);
2738 i_size_write(inode, offset);
2739 spin_unlock(&inode->i_lock);
2743 truncate_pagecache(inode, offset);
2747 cifs_set_file_size(struct inode *inode, struct iattr *attrs, argument
2752 struct cifsInodeInfo *cifsInode = CIFS_I(inode);
2753 struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb);
2810 cifs_setsize(inode, attrs->ia_size);
2818 inode->i_blocks = (512 - 1 + attrs->ia_size) >> 9;
2825 attrs->ia_ctime = attrs->ia_mtime = current_time(inode);
2828 cifs_truncate_page(inode->i_mapping, inode->i_size);
2842 struct inode *inode = d_inode(direntry); local
2843 struct cifsInodeInfo *cifsInode = CIFS_I(inode);
2844 struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb);
2879 rc = filemap_write_and_wait(inode->i_mapping);
2885 mapping_set_error(inode->i_mapping, rc);
2889 rc = cifs_set_file_size(inode, attrs, xid, full_path, direntry);
2960 attrs->ia_size != i_size_read(inode)) {
2961 truncate_setsize(inode, attrs->ia_size);
2962 fscache_resize_cookie(cifs_inode_cookie(inode), attrs->ia_size);
2965 setattr_copy(&nop_mnt_idmap, inode, attrs);
2966 mark_inode_dirty(inode);
2990 struct inode *inode = d_inode(direntry); local
2991 struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb);
2992 struct cifsInodeInfo *cifsInode = CIFS_I(inode);
3029 rc = filemap_write_and_wait(inode->i_mapping);
3034 mapping_set_error(inode->i_mapping, rc);
3055 rc = cifs_set_file_size(inode, attrs, xid, full_path, direntry);
3070 rc = id_mode_to_cifs_acl(inode, full_path, &mode,
3091 rc = id_mode_to_cifs_acl(inode, full_path, &mode,
3113 attrs->ia_mode = inode->i_mode & ~S_IWUGO;
3125 if (S_ISDIR(inode->i_mode))
3140 rc = cifs_set_file_info(inode, attrs, xid, full_path, dosattr);
3159 attrs->ia_size != i_size_read(inode)) {
3160 truncate_setsize(inode, attrs->ia_size);
3161 fscache_resize_cookie(cifs_inode_cookie(inode), attrs->ia_size);
3164 setattr_copy(&nop_mnt_idmap, inode, attrs);
3165 mark_inode_dirty(inode);