Lines Matching refs:fattr

66 				       struct cifs_fattr *fattr)
71 CIFS_I(inode)->reparse_tag == fattr->cf_cifstag &&
72 timespec64_equal(&ctime, &fattr->cf_ctime);
84 struct cifs_fattr *fattr)
104 if ((fattr->cf_cifsattrs & ATTR_REPARSE) ||
105 (fattr->cf_flags & CIFS_FATTR_NEED_REVAL))
125 fattr->cf_uniqueid = CIFS_I(inode)->uniqueid;
131 if (CIFS_I(inode)->uniqueid == fattr->cf_uniqueid) {
141 if (fattr->cf_cifsattrs & ATTR_REPARSE) {
142 if (likely(reparse_inode_match(inode, fattr))) {
143 fattr->cf_mode = inode->i_mode;
144 fattr->cf_eof = CIFS_I(inode)->server_eof;
145 fattr->cf_symlink_target = NULL;
151 if (!rc && !cifs_fattr_to_inode(inode, fattr, true)) {
161 inode = cifs_iget(sb, fattr);
173 cifs_fill_common_info(struct cifs_fattr *fattr, struct cifs_sb_info *cifs_sb)
176 .reparse = { .tag = fattr->cf_cifstag, },
179 fattr->cf_uid = cifs_sb->ctx->linux_uid;
180 fattr->cf_gid = cifs_sb->ctx->linux_gid;
190 if ((fattr->cf_cifsattrs & ATTR_REPARSE) &&
191 cifs_reparse_point_to_fattr(cifs_sb, fattr, &data))
194 if (fattr->cf_cifsattrs & ATTR_DIRECTORY) {
195 fattr->cf_mode = S_IFDIR | cifs_sb->ctx->dir_mode;
196 fattr->cf_dtype = DT_DIR;
198 fattr->cf_mode = S_IFREG | cifs_sb->ctx->file_mode;
199 fattr->cf_dtype = DT_REG;
204 fattr->cf_flags |= CIFS_FATTR_UNKNOWN_NLINK;
206 if (fattr->cf_cifsattrs & ATTR_READONLY)
207 fattr->cf_mode &= ~S_IWUGO;
218 fattr->cf_flags |= CIFS_FATTR_NEED_REVAL;
221 fattr->cf_cifsattrs & ATTR_SYSTEM) {
222 if (fattr->cf_eof == 0) {
223 fattr->cf_mode &= ~S_IFMT;
224 fattr->cf_mode |= S_IFIFO;
225 fattr->cf_dtype = DT_FIFO;
232 fattr->cf_flags |= CIFS_FATTR_NEED_REVAL;
239 cifs_posix_to_fattr(struct cifs_fattr *fattr, struct smb2_posix_info *info,
246 memset(fattr, 0, sizeof(*fattr));
247 fattr->cf_uniqueid = le64_to_cpu(info->Inode);
248 fattr->cf_bytes = le64_to_cpu(info->AllocationSize);
249 fattr->cf_eof = le64_to_cpu(info->EndOfFile);
251 fattr->cf_atime = cifs_NTtimeToUnix(info->LastAccessTime);
252 fattr->cf_mtime = cifs_NTtimeToUnix(info->LastWriteTime);
253 fattr->cf_ctime = cifs_NTtimeToUnix(info->CreationTime);
255 fattr->cf_nlink = le32_to_cpu(info->HardLinks);
256 fattr->cf_cifsattrs = le32_to_cpu(info->DosAttributes);
263 fattr->cf_mode = le32_to_cpu(info->Mode) & ~S_IFMT;
265 cifs_dbg(FYI, "posix fattr: dev %d, reparse %d, mode %o\n",
270 if (fattr->cf_cifsattrs & ATTR_DIRECTORY) {
271 fattr->cf_mode |= S_IFDIR;
272 fattr->cf_dtype = DT_DIR;
279 fattr->cf_mode |= S_IFREG;
280 fattr->cf_dtype = DT_REG;
283 sid_to_id(cifs_sb, &parsed.owner, fattr, SIDOWNER);
284 sid_to_id(cifs_sb, &parsed.group, fattr, SIDGROUP);
287 static void __dir_info_to_fattr(struct cifs_fattr *fattr, const void *info)
291 memset(fattr, 0, sizeof(*fattr));
292 fattr->cf_cifsattrs = le32_to_cpu(fi->ExtFileAttributes);
293 fattr->cf_eof = le64_to_cpu(fi->EndOfFile);
294 fattr->cf_bytes = le64_to_cpu(fi->AllocationSize);
295 fattr->cf_createtime = le64_to_cpu(fi->CreationTime);
296 fattr->cf_atime = cifs_NTtimeToUnix(fi->LastAccessTime);
297 fattr->cf_ctime = cifs_NTtimeToUnix(fi->ChangeTime);
298 fattr->cf_mtime = cifs_NTtimeToUnix(fi->LastWriteTime);
302 cifs_dir_info_to_fattr(struct cifs_fattr *fattr, FILE_DIRECTORY_INFO *info,
305 __dir_info_to_fattr(fattr, info);
306 cifs_fill_common_info(fattr, cifs_sb);
309 static void cifs_fulldir_info_to_fattr(struct cifs_fattr *fattr,
315 __dir_info_to_fattr(fattr, info);
318 if (fattr->cf_cifsattrs & ATTR_REPARSE)
319 fattr->cf_cifstag = le32_to_cpu(di->EaSize);
320 cifs_fill_common_info(fattr, cifs_sb);
324 cifs_std_info_to_fattr(struct cifs_fattr *fattr, FIND_FILE_STANDARD_INFO *info,
329 memset(fattr, 0, sizeof(*fattr));
330 fattr->cf_atime = cnvrtDosUnixTm(info->LastAccessDate,
332 fattr->cf_ctime = cnvrtDosUnixTm(info->LastWriteDate,
334 fattr->cf_mtime = cnvrtDosUnixTm(info->LastWriteDate,
337 fattr->cf_cifsattrs = le16_to_cpu(info->Attributes);
338 fattr->cf_bytes = le32_to_cpu(info->AllocationSize);
339 fattr->cf_eof = le32_to_cpu(info->DataSize);
341 cifs_fill_common_info(fattr, cifs_sb);
840 dirent->fattr.cf_uniqueid,
841 dirent->fattr.cf_dtype);
876 struct cifs_fattr *fattr)
902 memcpy(&de->fattr, fattr, sizeof(struct cifs_fattr));
909 struct cifs_fattr *fattr,
913 ino_t ino = cifs_uniqueid_to_ino_t(fattr->cf_uniqueid);
915 rc = dir_emit(ctx, name, namelen, ino, fattr->cf_dtype);
922 fattr);
938 struct cifs_fattr fattr;
976 cifs_posix_to_fattr(&fattr,
981 cifs_unix_basic_to_fattr(&fattr,
984 if (S_ISLNK(fattr.cf_mode))
985 fattr.cf_flags |= CIFS_FATTR_NEED_REVAL;
988 cifs_std_info_to_fattr(&fattr,
994 cifs_fulldir_info_to_fattr(&fattr, find_entry, cifs_sb);
997 cifs_dir_info_to_fattr(&fattr,
1004 fattr.cf_uniqueid = de.ino;
1006 fattr.cf_uniqueid = iunique(sb, ROOT_I);
1011 couldbe_mf_symlink(&fattr))
1017 fattr.cf_flags |= CIFS_FATTR_NEED_REVAL;
1019 cifs_prime_dcache(file_dentry(file), &name, &fattr);
1022 &fattr, cfid);