Lines Matching defs:fattr

68 		    struct cifs_fattr *fattr)
88 if ((fattr->cf_cifsattrs & ATTR_REPARSE) ||
89 (fattr->cf_flags & CIFS_FATTR_NEED_REVAL))
109 fattr->cf_uniqueid = CIFS_I(inode)->uniqueid;
115 if (CIFS_I(inode)->uniqueid == fattr->cf_uniqueid) {
124 if (fattr->cf_cifsattrs & ATTR_REPARSE) {
125 if (likely(reparse_inode_match(inode, fattr))) {
126 fattr->cf_mode = inode->i_mode;
127 fattr->cf_rdev = inode->i_rdev;
128 fattr->cf_uid = inode->i_uid;
129 fattr->cf_gid = inode->i_gid;
130 fattr->cf_eof = CIFS_I(inode)->netfs.remote_i_size;
131 fattr->cf_symlink_target = NULL;
137 if (!rc && !cifs_fattr_to_inode(inode, fattr, true)) {
147 inode = cifs_iget(sb, fattr);
159 cifs_fill_common_info(struct cifs_fattr *fattr, struct cifs_sb_info *cifs_sb)
162 .reparse = { .tag = fattr->cf_cifstag, },
165 fattr->cf_uid = cifs_sb->ctx->linux_uid;
166 fattr->cf_gid = cifs_sb->ctx->linux_gid;
176 if ((fattr->cf_cifsattrs & ATTR_REPARSE) &&
177 cifs_reparse_point_to_fattr(cifs_sb, fattr, &data))
180 if (fattr->cf_cifsattrs & ATTR_DIRECTORY) {
181 fattr->cf_mode = S_IFDIR | cifs_sb->ctx->dir_mode;
182 fattr->cf_dtype = DT_DIR;
184 fattr->cf_mode = S_IFREG | cifs_sb->ctx->file_mode;
185 fattr->cf_dtype = DT_REG;
190 fattr->cf_flags |= CIFS_FATTR_UNKNOWN_NLINK;
192 if (fattr->cf_cifsattrs & ATTR_READONLY)
193 fattr->cf_mode &= ~S_IWUGO;
204 fattr->cf_flags |= CIFS_FATTR_NEED_REVAL;
207 fattr->cf_cifsattrs & ATTR_SYSTEM) {
208 if (fattr->cf_eof == 0) {
209 fattr->cf_mode &= ~S_IFMT;
210 fattr->cf_mode |= S_IFIFO;
211 fattr->cf_dtype = DT_FIFO;
218 fattr->cf_flags |= CIFS_FATTR_NEED_REVAL;
225 cifs_posix_to_fattr(struct cifs_fattr *fattr, struct smb2_posix_info *info,
232 memset(fattr, 0, sizeof(*fattr));
233 fattr->cf_uniqueid = le64_to_cpu(info->Inode);
234 fattr->cf_bytes = le64_to_cpu(info->AllocationSize);
235 fattr->cf_eof = le64_to_cpu(info->EndOfFile);
237 fattr->cf_atime = cifs_NTtimeToUnix(info->LastAccessTime);
238 fattr->cf_mtime = cifs_NTtimeToUnix(info->LastWriteTime);
239 fattr->cf_ctime = cifs_NTtimeToUnix(info->CreationTime);
241 fattr->cf_nlink = le32_to_cpu(info->HardLinks);
242 fattr->cf_cifsattrs = le32_to_cpu(info->DosAttributes);
249 fattr->cf_mode = le32_to_cpu(info->Mode) & ~S_IFMT;
251 cifs_dbg(FYI, "posix fattr: dev %d, reparse %d, mode %o\n",
256 if (fattr->cf_cifsattrs & ATTR_DIRECTORY) {
257 fattr->cf_mode |= S_IFDIR;
258 fattr->cf_dtype = DT_DIR;
265 fattr->cf_mode |= S_IFREG;
266 fattr->cf_dtype = DT_REG;
269 sid_to_id(cifs_sb, &parsed.owner, fattr, SIDOWNER);
270 sid_to_id(cifs_sb, &parsed.group, fattr, SIDGROUP);
273 static void __dir_info_to_fattr(struct cifs_fattr *fattr, const void *info)
277 memset(fattr, 0, sizeof(*fattr));
278 fattr->cf_cifsattrs = le32_to_cpu(fi->ExtFileAttributes);
279 fattr->cf_eof = le64_to_cpu(fi->EndOfFile);
280 fattr->cf_bytes = le64_to_cpu(fi->AllocationSize);
281 fattr->cf_createtime = le64_to_cpu(fi->CreationTime);
282 fattr->cf_atime = cifs_NTtimeToUnix(fi->LastAccessTime);
283 fattr->cf_ctime = cifs_NTtimeToUnix(fi->ChangeTime);
284 fattr->cf_mtime = cifs_NTtimeToUnix(fi->LastWriteTime);
288 cifs_dir_info_to_fattr(struct cifs_fattr *fattr, FILE_DIRECTORY_INFO *info,
291 __dir_info_to_fattr(fattr, info);
292 cifs_fill_common_info(fattr, cifs_sb);
295 static void cifs_fulldir_info_to_fattr(struct cifs_fattr *fattr,
301 __dir_info_to_fattr(fattr, info);
304 if (fattr->cf_cifsattrs & ATTR_REPARSE)
305 fattr->cf_cifstag = le32_to_cpu(di->EaSize);
306 cifs_fill_common_info(fattr, cifs_sb);
310 cifs_std_info_to_fattr(struct cifs_fattr *fattr, FIND_FILE_STANDARD_INFO *info,
315 memset(fattr, 0, sizeof(*fattr));
316 fattr->cf_atime = cnvrtDosUnixTm(info->LastAccessDate,
318 fattr->cf_ctime = cnvrtDosUnixTm(info->LastWriteDate,
320 fattr->cf_mtime = cnvrtDosUnixTm(info->LastWriteDate,
323 fattr->cf_cifsattrs = le16_to_cpu(info->Attributes);
324 fattr->cf_bytes = le32_to_cpu(info->AllocationSize);
325 fattr->cf_eof = le32_to_cpu(info->DataSize);
327 cifs_fill_common_info(fattr, cifs_sb);
826 dirent->fattr.cf_uniqueid,
827 dirent->fattr.cf_dtype);
862 struct cifs_fattr *fattr)
888 memcpy(&de->fattr, fattr, sizeof(struct cifs_fattr));
895 struct cifs_fattr *fattr,
899 ino_t ino = cifs_uniqueid_to_ino_t(fattr->cf_uniqueid);
901 rc = dir_emit(ctx, name, namelen, ino, fattr->cf_dtype);
908 fattr);
924 struct cifs_fattr fattr;
962 cifs_posix_to_fattr(&fattr,
967 cifs_unix_basic_to_fattr(&fattr,
970 if (S_ISLNK(fattr.cf_mode))
971 fattr.cf_flags |= CIFS_FATTR_NEED_REVAL;
974 cifs_std_info_to_fattr(&fattr,
980 cifs_fulldir_info_to_fattr(&fattr, find_entry, cifs_sb);
983 cifs_dir_info_to_fattr(&fattr,
990 fattr.cf_uniqueid = de.ino;
992 fattr.cf_uniqueid = iunique(sb, ROOT_I);
997 couldbe_mf_symlink(&fattr))
1003 fattr.cf_flags |= CIFS_FATTR_NEED_REVAL;
1005 cifs_prime_dcache(file_dentry(file), &name, &fattr);
1008 &fattr, cfid);