• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/fs/cifs/

Lines Matching refs:fattr

82 /* check inode attributes against fattr. If they don't match, tag the
86 cifs_revalidate_cache(struct inode *inode, struct cifs_fattr *fattr)
105 if (timespec_equal(&inode->i_mtime, &fattr->cf_mtime) &&
106 cifs_i->server_eof == fattr->cf_eof) {
119 cifs_fattr_to_inode(struct inode *inode, struct cifs_fattr *fattr)
125 cifs_revalidate_cache(inode, fattr);
127 inode->i_atime = fattr->cf_atime;
128 inode->i_mtime = fattr->cf_mtime;
129 inode->i_ctime = fattr->cf_ctime;
130 inode->i_rdev = fattr->cf_rdev;
131 inode->i_nlink = fattr->cf_nlink;
132 inode->i_uid = fattr->cf_uid;
133 inode->i_gid = fattr->cf_gid;
138 inode->i_mode = fattr->cf_mode;
140 cifs_i->cifsAttrs = fattr->cf_cifsattrs;
142 if (fattr->cf_flags & CIFS_FATTR_NEED_REVAL)
150 cifs_i->delete_pending = fattr->cf_flags & CIFS_FATTR_DELETE_PENDING;
152 cifs_i->server_eof = fattr->cf_eof;
158 if (is_size_safe_to_change(cifs_i, fattr->cf_eof)) {
159 i_size_write(inode, fattr->cf_eof);
166 inode->i_blocks = (512 - 1 + fattr->cf_bytes) >> 9;
170 cifs_set_ops(inode, fattr->cf_flags & CIFS_FATTR_DFS_REFERRAL);
174 cifs_fill_uniqueid(struct super_block *sb, struct cifs_fattr *fattr)
181 fattr->cf_uniqueid = iunique(sb, ROOT_I);
186 cifs_unix_basic_to_fattr(struct cifs_fattr *fattr, FILE_UNIX_BASIC_INFO *info,
189 memset(fattr, 0, sizeof(*fattr));
190 fattr->cf_uniqueid = le64_to_cpu(info->UniqueId);
191 fattr->cf_bytes = le64_to_cpu(info->NumOfBytes);
192 fattr->cf_eof = le64_to_cpu(info->EndOfFile);
194 fattr->cf_atime = cifs_NTtimeToUnix(info->LastAccessTime);
195 fattr->cf_mtime = cifs_NTtimeToUnix(info->LastModificationTime);
196 fattr->cf_ctime = cifs_NTtimeToUnix(info->LastStatusChange);
197 fattr->cf_mode = le64_to_cpu(info->Permissions);
203 fattr->cf_mode &= ~S_IFMT;
206 fattr->cf_mode |= S_IFREG;
207 fattr->cf_dtype = DT_REG;
210 fattr->cf_mode |= S_IFLNK;
211 fattr->cf_dtype = DT_LNK;
214 fattr->cf_mode |= S_IFDIR;
215 fattr->cf_dtype = DT_DIR;
218 fattr->cf_mode |= S_IFCHR;
219 fattr->cf_dtype = DT_CHR;
220 fattr->cf_rdev = MKDEV(le64_to_cpu(info->DevMajor),
224 fattr->cf_mode |= S_IFBLK;
225 fattr->cf_dtype = DT_BLK;
226 fattr->cf_rdev = MKDEV(le64_to_cpu(info->DevMajor),
230 fattr->cf_mode |= S_IFIFO;
231 fattr->cf_dtype = DT_FIFO;
234 fattr->cf_mode |= S_IFSOCK;
235 fattr->cf_dtype = DT_SOCK;
239 fattr->cf_mode |= S_IFREG;
240 fattr->cf_dtype = DT_REG;
246 fattr->cf_uid = cifs_sb->mnt_uid;
248 fattr->cf_uid = le64_to_cpu(info->Uid);
251 fattr->cf_gid = cifs_sb->mnt_gid;
253 fattr->cf_gid = le64_to_cpu(info->Gid);
255 fattr->cf_nlink = le64_to_cpu(info->Nlinks);
266 cifs_create_dfs_fattr(struct cifs_fattr *fattr, struct super_block *sb)
270 cFYI(1, "creating fake fattr for DFS referral");
272 memset(fattr, 0, sizeof(*fattr));
273 fattr->cf_mode = S_IFDIR | S_IXUGO | S_IRWXU;
274 fattr->cf_uid = cifs_sb->mnt_uid;
275 fattr->cf_gid = cifs_sb->mnt_gid;
276 fattr->cf_atime = CURRENT_TIME;
277 fattr->cf_ctime = CURRENT_TIME;
278 fattr->cf_mtime = CURRENT_TIME;
279 fattr->cf_nlink = 2;
280 fattr->cf_flags |= CIFS_FATTR_DFS_REFERRAL;
288 struct cifs_fattr fattr;
297 cifs_unix_basic_to_fattr(&fattr, &find_data, cifs_sb);
299 cifs_create_dfs_fattr(&fattr, inode->i_sb);
303 cifs_fattr_to_inode(inode, &fattr);
314 struct cifs_fattr fattr;
327 cifs_unix_basic_to_fattr(&fattr, &find_data, cifs_sb);
329 cifs_create_dfs_fattr(&fattr, sb);
337 cifs_fill_uniqueid(sb, &fattr);
338 *pinode = cifs_iget(sb, &fattr);
343 cifs_fattr_to_inode(*pinode, &fattr);
350 cifs_sfu_type(struct cifs_fattr *fattr, const unsigned char *path,
363 fattr->cf_mode &= ~S_IFMT;
365 if (fattr->cf_eof == 0) {
366 fattr->cf_mode |= S_IFIFO;
367 fattr->cf_dtype = DT_FIFO;
369 } else if (fattr->cf_eof < 8) {
370 fattr->cf_mode |= S_IFREG;
371 fattr->cf_dtype = DT_REG;
389 fattr->cf_mode |= S_IFBLK;
390 fattr->cf_dtype = DT_BLK;
397 fattr->cf_rdev = MKDEV(mjr, mnr);
401 fattr->cf_mode |= S_IFCHR;
402 fattr->cf_dtype = DT_CHR;
409 fattr->cf_rdev = MKDEV(mjr, mnr);
413 fattr->cf_mode |= S_IFLNK;
414 fattr->cf_dtype = DT_LNK;
416 fattr->cf_mode |= S_IFREG; /* file? */
417 fattr->cf_dtype = DT_REG;
421 fattr->cf_mode |= S_IFREG; /* then it is a file */
422 fattr->cf_dtype = DT_REG;
432 static int cifs_sfu_mode(struct cifs_fattr *fattr, const unsigned char *path,
448 fattr->cf_mode &= ~SFBITS_MASK;
450 fattr->cf_mode);
451 fattr->cf_mode = (mode & SFBITS_MASK) | fattr->cf_mode;
463 cifs_all_info_to_fattr(struct cifs_fattr *fattr, FILE_ALL_INFO *info,
466 memset(fattr, 0, sizeof(*fattr));
467 fattr->cf_cifsattrs = le32_to_cpu(info->Attributes);
469 fattr->cf_flags |= CIFS_FATTR_DELETE_PENDING;
472 fattr->cf_atime = cifs_NTtimeToUnix(info->LastAccessTime);
474 fattr->cf_atime = CURRENT_TIME;
476 fattr->cf_ctime = cifs_NTtimeToUnix(info->ChangeTime);
477 fattr->cf_mtime = cifs_NTtimeToUnix(info->LastWriteTime);
480 fattr->cf_ctime.tv_sec += cifs_sb->tcon->ses->server->timeAdj;
481 fattr->cf_mtime.tv_sec += cifs_sb->tcon->ses->server->timeAdj;
484 fattr->cf_eof = le64_to_cpu(info->EndOfFile);
485 fattr->cf_bytes = le64_to_cpu(info->AllocationSize);
487 if (fattr->cf_cifsattrs & ATTR_DIRECTORY) {
488 fattr->cf_mode = S_IFDIR | cifs_sb->mnt_dir_mode;
489 fattr->cf_dtype = DT_DIR;
491 fattr->cf_mode = S_IFREG | cifs_sb->mnt_file_mode;
492 fattr->cf_dtype = DT_REG;
495 if (fattr->cf_cifsattrs & ATTR_READONLY)
496 fattr->cf_mode &= ~(S_IWUGO);
499 fattr->cf_nlink = le32_to_cpu(info->NumberOfLinks);
501 fattr->cf_uid = cifs_sb->mnt_uid;
502 fattr->cf_gid = cifs_sb->mnt_gid;
510 struct cifs_fattr fattr;
523 cifs_create_dfs_fattr(&fattr, inode->i_sb);
532 cifs_all_info_to_fattr(&fattr, &find_data, cifs_sb, false);
533 fattr.cf_uniqueid = CIFS_I(inode)->uniqueid;
534 fattr.cf_flags |= CIFS_FATTR_NEED_REVAL;
535 cifs_fattr_to_inode(inode, &fattr);
550 struct cifs_fattr fattr;
587 cifs_all_info_to_fattr(&fattr, (FILE_ALL_INFO *) pfindData,
590 cifs_create_dfs_fattr(&fattr, sb);
618 full_path, &fattr.cf_uniqueid,
622 if (rc1 || !fattr.cf_uniqueid) {
624 fattr.cf_uniqueid = iunique(sb, ROOT_I);
628 fattr.cf_uniqueid = iunique(sb, ROOT_I);
631 fattr.cf_uniqueid = CIFS_I(*pinode)->uniqueid;
635 if (fattr.cf_cifsattrs & ATTR_SYSTEM &&
637 tmprc = cifs_sfu_type(&fattr, full_path, cifs_sb, xid);
646 cifs_acl_to_fattr(cifs_sb, &fattr, *pinode, full_path, pfid);
652 cifs_sfu_mode(&fattr, full_path, cifs_sb, xid);
655 *pinode = cifs_iget(sb, &fattr);
659 cifs_fattr_to_inode(*pinode, &fattr);
715 struct cifs_fattr *fattr = (struct cifs_fattr *) opaque;
718 if (CIFS_I(inode)->uniqueid != fattr->cf_uniqueid)
722 if ((inode->i_mode & S_IFMT) != (fattr->cf_mode & S_IFMT))
727 fattr->cf_flags |= CIFS_FATTR_INO_COLLISION;
735 struct cifs_fattr *fattr = (struct cifs_fattr *) opaque;
737 CIFS_I(inode)->uniqueid = fattr->cf_uniqueid;
764 cifs_iget(struct super_block *sb, struct cifs_fattr *fattr)
770 cFYI(1, "looking for uniqueid=%llu", fattr->cf_uniqueid);
773 hash = cifs_uniqueid_to_ino_t(fattr->cf_uniqueid);
775 inode = iget5_locked(sb, hash, cifs_find_inode, cifs_init_inode, fattr);
778 if (fattr->cf_flags & CIFS_FATTR_INO_COLLISION) {
779 fattr->cf_flags &= ~CIFS_FATTR_INO_COLLISION;
784 fattr->cf_uniqueid = iunique(sb, ROOT_I);
789 cifs_fattr_to_inode(inode, fattr);
1176 struct cifs_fattr fattr;
1229 cifs_unix_basic_to_fattr(&fattr, pInfo, cifs_sb);
1230 cifs_fill_uniqueid(inode->i_sb, &fattr);
1231 newinode = cifs_iget(inode->i_sb, &fattr);