Lines Matching refs:fattr

71 nfs_fattr_to_ino_t(struct nfs_fattr *fattr)  in nfs_fattr_to_ino_t()  argument
73 return nfs_fileid_to_ino_t(fattr->fileid); in nfs_fattr_to_ino_t()
295 struct nfs_fattr *fattr; member
309 struct nfs_fattr *fattr = desc->fattr; in nfs_find_actor() local
311 if (NFS_FILEID(inode) != fattr->fileid) in nfs_find_actor()
313 if ((S_IFMT & inode->i_mode) != (S_IFMT & fattr->mode)) in nfs_find_actor()
326 struct nfs_fattr *fattr = desc->fattr; in nfs_init_locked() local
328 set_nfs_fileid(inode, fattr->fileid); in nfs_init_locked()
329 inode->i_mode = fattr->mode; in nfs_init_locked()
342 void nfs_setsecurity(struct inode *inode, struct nfs_fattr *fattr, in nfs_setsecurity() argument
350 if ((fattr->valid & NFS_ATTR_FATTR_V4_SECURITY_LABEL) && inode->i_security) { in nfs_setsecurity()
389 void nfs_setsecurity(struct inode *inode, struct nfs_fattr *fattr, in nfs_setsecurity() argument
398 nfs_ilookup(struct super_block *sb, struct nfs_fattr *fattr, struct nfs_fh *fh) in nfs_ilookup() argument
402 .fattr = fattr, in nfs_ilookup()
407 if (!(fattr->valid & NFS_ATTR_FATTR_FILEID) || in nfs_ilookup()
408 !(fattr->valid & NFS_ATTR_FATTR_TYPE)) in nfs_ilookup()
411 hash = nfs_fattr_to_ino_t(fattr); in nfs_ilookup()
423 nfs_fhget(struct super_block *sb, struct nfs_fh *fh, struct nfs_fattr *fattr, struct nfs4_label *la… in nfs_fhget() argument
427 .fattr = fattr in nfs_fhget()
432 nfs_attr_check_mountpoint(sb, fattr); in nfs_fhget()
434 if (nfs_attr_use_mounted_on_fileid(fattr)) in nfs_fhget()
435 fattr->fileid = fattr->mounted_on_fileid; in nfs_fhget()
436 else if ((fattr->valid & NFS_ATTR_FATTR_FILEID) == 0) in nfs_fhget()
438 if ((fattr->valid & NFS_ATTR_FATTR_TYPE) == 0) in nfs_fhget()
441 hash = nfs_fattr_to_ino_t(fattr); in nfs_fhget()
459 inode->i_mode = fattr->mode; in nfs_fhget()
461 if ((fattr->valid & NFS_ATTR_FATTR_MODE) == 0 in nfs_fhget()
476 if (fattr->valid & NFS_ATTR_FATTR_MOUNTPOINT || in nfs_fhget()
477 fattr->valid & NFS_ATTR_FATTR_V4_REFERRAL) { in nfs_fhget()
478 if (fattr->valid & NFS_ATTR_FATTR_V4_REFERRAL) in nfs_fhget()
489 init_special_inode(inode, inode->i_mode, fattr->rdev); in nfs_fhget()
504 nfsi->read_cache_jiffies = fattr->time_start; in nfs_fhget()
505 nfsi->attr_gencount = fattr->gencount; in nfs_fhget()
506 if (fattr->valid & NFS_ATTR_FATTR_ATIME) in nfs_fhget()
507 inode->i_atime = timespec_to_timespec64(fattr->atime); in nfs_fhget()
510 if (fattr->valid & NFS_ATTR_FATTR_MTIME) in nfs_fhget()
511 inode->i_mtime = timespec_to_timespec64(fattr->mtime); in nfs_fhget()
514 if (fattr->valid & NFS_ATTR_FATTR_CTIME) in nfs_fhget()
515 inode->i_ctime = timespec_to_timespec64(fattr->ctime); in nfs_fhget()
518 if (fattr->valid & NFS_ATTR_FATTR_CHANGE) in nfs_fhget()
519 inode_set_iversion_raw(inode, fattr->change_attr); in nfs_fhget()
522 if (fattr->valid & NFS_ATTR_FATTR_SIZE) in nfs_fhget()
523 inode->i_size = nfs_size_to_loff_t(fattr->size); in nfs_fhget()
526 if (fattr->valid & NFS_ATTR_FATTR_NLINK) in nfs_fhget()
527 set_nlink(inode, fattr->nlink); in nfs_fhget()
530 if (fattr->valid & NFS_ATTR_FATTR_OWNER) in nfs_fhget()
531 inode->i_uid = fattr->uid; in nfs_fhget()
534 if (fattr->valid & NFS_ATTR_FATTR_GROUP) in nfs_fhget()
535 inode->i_gid = fattr->gid; in nfs_fhget()
538 if (fattr->valid & NFS_ATTR_FATTR_BLOCKS_USED) in nfs_fhget()
539 inode->i_blocks = fattr->du.nfs2.blocks; in nfs_fhget()
540 if (fattr->valid & NFS_ATTR_FATTR_SPACE_USED) { in nfs_fhget()
544 inode->i_blocks = nfs_calc_block_size(fattr->du.nfs3.used); in nfs_fhget()
550 nfs_setsecurity(inode, fattr, label); in nfs_fhget()
560 int err = nfs_refresh_inode(inode, fattr); in nfs_fhget()
588 struct nfs_fattr *fattr; in nfs_setattr() local
619 fattr = nfs_alloc_fattr(); in nfs_setattr()
620 if (fattr == NULL) { in nfs_setattr()
625 error = NFS_PROTO(inode)->setattr(dentry, fattr, attr); in nfs_setattr()
627 error = nfs_refresh_inode(inode, fattr); in nfs_setattr()
628 nfs_free_fattr(fattr); in nfs_setattr()
677 struct nfs_fattr *fattr) in nfs_setattr_update_inode() argument
680 nfs_fattr_set_barrier(fattr); in nfs_setattr_update_inode()
683 NFS_I(inode)->attr_gencount = fattr->gencount; in nfs_setattr_update_inode()
700 if (fattr->valid & NFS_ATTR_FATTR_CTIME) in nfs_setattr_update_inode()
701 inode->i_ctime = timespec_to_timespec64(fattr->ctime); in nfs_setattr_update_inode()
711 if (fattr->valid & NFS_ATTR_FATTR_ATIME) in nfs_setattr_update_inode()
712 inode->i_atime = timespec_to_timespec64(fattr->atime); in nfs_setattr_update_inode()
718 if (fattr->valid & NFS_ATTR_FATTR_CTIME) in nfs_setattr_update_inode()
719 inode->i_ctime = timespec_to_timespec64(fattr->ctime); in nfs_setattr_update_inode()
727 if (fattr->valid & NFS_ATTR_FATTR_MTIME) in nfs_setattr_update_inode()
728 inode->i_mtime = timespec_to_timespec64(fattr->mtime); in nfs_setattr_update_inode()
734 if (fattr->valid & NFS_ATTR_FATTR_CTIME) in nfs_setattr_update_inode()
735 inode->i_ctime = timespec_to_timespec64(fattr->ctime); in nfs_setattr_update_inode()
740 if (fattr->valid) in nfs_setattr_update_inode()
741 nfs_update_inode(inode, fattr); in nfs_setattr_update_inode()
1120 struct nfs_fattr *fattr = NULL; in __nfs_revalidate_inode() local
1141 fattr = nfs_alloc_fattr(); in __nfs_revalidate_inode()
1142 if (fattr == NULL) in __nfs_revalidate_inode()
1153 status = NFS_PROTO(inode)->getattr(server, NFS_FH(inode), fattr, in __nfs_revalidate_inode()
1167 status = nfs_refresh_inode(inode, fattr); in __nfs_revalidate_inode()
1178 nfs_setsecurity(inode, fattr, label); in __nfs_revalidate_inode()
1187 nfs_free_fattr(fattr); in __nfs_revalidate_inode()
1352 static void nfs_wcc_update_inode(struct inode *inode, struct nfs_fattr *fattr) in nfs_wcc_update_inode() argument
1356 if ((fattr->valid & NFS_ATTR_FATTR_PRECHANGE) in nfs_wcc_update_inode()
1357 && (fattr->valid & NFS_ATTR_FATTR_CHANGE) in nfs_wcc_update_inode()
1358 && inode_eq_iversion_raw(inode, fattr->pre_change_attr)) { in nfs_wcc_update_inode()
1359 inode_set_iversion_raw(inode, fattr->change_attr); in nfs_wcc_update_inode()
1365 if ((fattr->valid & NFS_ATTR_FATTR_PRECTIME) in nfs_wcc_update_inode()
1366 && (fattr->valid & NFS_ATTR_FATTR_CTIME) in nfs_wcc_update_inode()
1367 && timespec_equal(&ts, &fattr->pre_ctime)) { in nfs_wcc_update_inode()
1368 inode->i_ctime = timespec_to_timespec64(fattr->ctime); in nfs_wcc_update_inode()
1372 if ((fattr->valid & NFS_ATTR_FATTR_PREMTIME) in nfs_wcc_update_inode()
1373 && (fattr->valid & NFS_ATTR_FATTR_MTIME) in nfs_wcc_update_inode()
1374 && timespec_equal(&ts, &fattr->pre_mtime)) { in nfs_wcc_update_inode()
1375 inode->i_mtime = timespec_to_timespec64(fattr->mtime); in nfs_wcc_update_inode()
1379 if ((fattr->valid & NFS_ATTR_FATTR_PRESIZE) in nfs_wcc_update_inode()
1380 && (fattr->valid & NFS_ATTR_FATTR_SIZE) in nfs_wcc_update_inode()
1381 && i_size_read(inode) == nfs_size_to_loff_t(fattr->pre_size) in nfs_wcc_update_inode()
1383 i_size_write(inode, nfs_size_to_loff_t(fattr->size)); in nfs_wcc_update_inode()
1396 static int nfs_check_inode_attributes(struct inode *inode, struct nfs_fattr *fattr) in nfs_check_inode_attributes() argument
1406 if (!(fattr->valid & NFS_ATTR_FATTR_FILEID)) { in nfs_check_inode_attributes()
1408 if (fattr->valid & NFS_ATTR_FATTR_MOUNTED_ON_FILEID) in nfs_check_inode_attributes()
1411 } else if (nfsi->fileid != fattr->fileid) { in nfs_check_inode_attributes()
1413 if ((fattr->valid & NFS_ATTR_FATTR_MOUNTED_ON_FILEID) && in nfs_check_inode_attributes()
1414 nfsi->fileid == fattr->mounted_on_fileid) in nfs_check_inode_attributes()
1418 if ((fattr->valid & NFS_ATTR_FATTR_TYPE) && (inode->i_mode & S_IFMT) != (fattr->mode & S_IFMT)) in nfs_check_inode_attributes()
1424 …if ((fattr->valid & NFS_ATTR_FATTR_CHANGE) != 0 && !inode_eq_iversion_raw(inode, fattr->change_att… in nfs_check_inode_attributes()
1429 if ((fattr->valid & NFS_ATTR_FATTR_MTIME) && !timespec_equal(&ts, &fattr->mtime)) in nfs_check_inode_attributes()
1433 if ((fattr->valid & NFS_ATTR_FATTR_CTIME) && !timespec_equal(&ts, &fattr->ctime)) in nfs_check_inode_attributes()
1436 if (fattr->valid & NFS_ATTR_FATTR_SIZE) { in nfs_check_inode_attributes()
1438 new_isize = nfs_size_to_loff_t(fattr->size); in nfs_check_inode_attributes()
1446 …if ((fattr->valid & NFS_ATTR_FATTR_MODE) && (inode->i_mode & S_IALLUGO) != (fattr->mode & S_IALLUG… in nfs_check_inode_attributes()
1450 if ((fattr->valid & NFS_ATTR_FATTR_OWNER) && !uid_eq(inode->i_uid, fattr->uid)) in nfs_check_inode_attributes()
1454 if ((fattr->valid & NFS_ATTR_FATTR_GROUP) && !gid_eq(inode->i_gid, fattr->gid)) in nfs_check_inode_attributes()
1460 if ((fattr->valid & NFS_ATTR_FATTR_NLINK) && inode->i_nlink != fattr->nlink) in nfs_check_inode_attributes()
1464 if ((fattr->valid & NFS_ATTR_FATTR_ATIME) && !timespec_equal(&ts, &fattr->atime)) in nfs_check_inode_attributes()
1470 nfsi->read_cache_jiffies = fattr->time_start; in nfs_check_inode_attributes()
1487 void nfs_fattr_init(struct nfs_fattr *fattr) in nfs_fattr_init() argument
1489 fattr->valid = 0; in nfs_fattr_init()
1490 fattr->time_start = jiffies; in nfs_fattr_init()
1491 fattr->gencount = nfs_inc_attr_generation_counter(); in nfs_fattr_init()
1492 fattr->owner_name = NULL; in nfs_fattr_init()
1493 fattr->group_name = NULL; in nfs_fattr_init()
1508 void nfs_fattr_set_barrier(struct nfs_fattr *fattr) in nfs_fattr_set_barrier() argument
1510 fattr->gencount = nfs_inc_attr_generation_counter(); in nfs_fattr_set_barrier()
1515 struct nfs_fattr *fattr; in nfs_alloc_fattr() local
1517 fattr = kmalloc(sizeof(*fattr), GFP_NOFS); in nfs_alloc_fattr()
1518 if (fattr != NULL) in nfs_alloc_fattr()
1519 nfs_fattr_init(fattr); in nfs_alloc_fattr()
1520 return fattr; in nfs_alloc_fattr()
1617 static int nfs_inode_attrs_need_update(const struct inode *inode, const struct nfs_fattr *fattr) in nfs_inode_attrs_need_update() argument
1621 return ((long)fattr->gencount - (long)nfsi->attr_gencount) > 0 || in nfs_inode_attrs_need_update()
1625 static int nfs_refresh_inode_locked(struct inode *inode, struct nfs_fattr *fattr) in nfs_refresh_inode_locked() argument
1631 if (nfs_inode_attrs_need_update(inode, fattr)) in nfs_refresh_inode_locked()
1632 ret = nfs_update_inode(inode, fattr); in nfs_refresh_inode_locked()
1634 ret = nfs_check_inode_attributes(inode, fattr); in nfs_refresh_inode_locked()
1650 int nfs_refresh_inode(struct inode *inode, struct nfs_fattr *fattr) in nfs_refresh_inode() argument
1654 if ((fattr->valid & NFS_ATTR_FATTR) == 0) in nfs_refresh_inode()
1657 status = nfs_refresh_inode_locked(inode, fattr); in nfs_refresh_inode()
1665 struct nfs_fattr *fattr, unsigned int invalid) in nfs_post_op_update_inode_locked() argument
1670 if ((fattr->valid & NFS_ATTR_FATTR) == 0) in nfs_post_op_update_inode_locked()
1672 return nfs_refresh_inode_locked(inode, fattr); in nfs_post_op_update_inode_locked()
1689 int nfs_post_op_update_inode(struct inode *inode, struct nfs_fattr *fattr) in nfs_post_op_update_inode() argument
1694 nfs_fattr_set_barrier(fattr); in nfs_post_op_update_inode()
1695 status = nfs_post_op_update_inode_locked(inode, fattr, in nfs_post_op_update_inode()
1716 int nfs_post_op_update_inode_force_wcc_locked(struct inode *inode, struct nfs_fattr *fattr) in nfs_post_op_update_inode_force_wcc_locked() argument
1721 if ((fattr->valid & NFS_ATTR_FATTR) == 0 || in nfs_post_op_update_inode_force_wcc_locked()
1722 !nfs_inode_attrs_need_update(inode, fattr)) { in nfs_post_op_update_inode_force_wcc_locked()
1723 fattr->valid &= ~(NFS_ATTR_FATTR_PRECHANGE in nfs_post_op_update_inode_force_wcc_locked()
1729 if ((fattr->valid & NFS_ATTR_FATTR_CHANGE) != 0 && in nfs_post_op_update_inode_force_wcc_locked()
1730 (fattr->valid & NFS_ATTR_FATTR_PRECHANGE) == 0) { in nfs_post_op_update_inode_force_wcc_locked()
1731 fattr->pre_change_attr = inode_peek_iversion_raw(inode); in nfs_post_op_update_inode_force_wcc_locked()
1732 fattr->valid |= NFS_ATTR_FATTR_PRECHANGE; in nfs_post_op_update_inode_force_wcc_locked()
1734 if ((fattr->valid & NFS_ATTR_FATTR_CTIME) != 0 && in nfs_post_op_update_inode_force_wcc_locked()
1735 (fattr->valid & NFS_ATTR_FATTR_PRECTIME) == 0) { in nfs_post_op_update_inode_force_wcc_locked()
1736 fattr->pre_ctime = timespec64_to_timespec(inode->i_ctime); in nfs_post_op_update_inode_force_wcc_locked()
1737 fattr->valid |= NFS_ATTR_FATTR_PRECTIME; in nfs_post_op_update_inode_force_wcc_locked()
1739 if ((fattr->valid & NFS_ATTR_FATTR_MTIME) != 0 && in nfs_post_op_update_inode_force_wcc_locked()
1740 (fattr->valid & NFS_ATTR_FATTR_PREMTIME) == 0) { in nfs_post_op_update_inode_force_wcc_locked()
1741 fattr->pre_mtime = timespec64_to_timespec(inode->i_mtime); in nfs_post_op_update_inode_force_wcc_locked()
1742 fattr->valid |= NFS_ATTR_FATTR_PREMTIME; in nfs_post_op_update_inode_force_wcc_locked()
1744 if ((fattr->valid & NFS_ATTR_FATTR_SIZE) != 0 && in nfs_post_op_update_inode_force_wcc_locked()
1745 (fattr->valid & NFS_ATTR_FATTR_PRESIZE) == 0) { in nfs_post_op_update_inode_force_wcc_locked()
1746 fattr->pre_size = i_size_read(inode); in nfs_post_op_update_inode_force_wcc_locked()
1747 fattr->valid |= NFS_ATTR_FATTR_PRESIZE; in nfs_post_op_update_inode_force_wcc_locked()
1750 status = nfs_post_op_update_inode_locked(inode, fattr, in nfs_post_op_update_inode_force_wcc_locked()
1768 int nfs_post_op_update_inode_force_wcc(struct inode *inode, struct nfs_fattr *fattr) in nfs_post_op_update_inode_force_wcc() argument
1773 nfs_fattr_set_barrier(fattr); in nfs_post_op_update_inode_force_wcc()
1774 status = nfs_post_op_update_inode_force_wcc_locked(inode, fattr); in nfs_post_op_update_inode_force_wcc()
1793 static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr) in nfs_update_inode() argument
1809 atomic_read(&inode->i_count), fattr->valid); in nfs_update_inode()
1811 if (!(fattr->valid & NFS_ATTR_FATTR_FILEID)) { in nfs_update_inode()
1813 if (fattr->valid & NFS_ATTR_FATTR_MOUNTED_ON_FILEID) in nfs_update_inode()
1816 } else if (nfsi->fileid != fattr->fileid) { in nfs_update_inode()
1818 if ((fattr->valid & NFS_ATTR_FATTR_MOUNTED_ON_FILEID) && in nfs_update_inode()
1819 nfsi->fileid == fattr->mounted_on_fileid) in nfs_update_inode()
1825 (long long)fattr->fileid); in nfs_update_inode()
1832 if ((fattr->valid & NFS_ATTR_FATTR_TYPE) && (inode->i_mode & S_IFMT) != (fattr->mode & S_IFMT)) { in nfs_update_inode()
1837 __func__, inode->i_ino, inode->i_mode, fattr->mode); in nfs_update_inode()
1843 if (S_ISDIR(inode->i_mode) && (fattr->valid & NFS_ATTR_FATTR_FSID) && in nfs_update_inode()
1844 !nfs_fsid_equal(&server->fsid, &fattr->fsid) && in nfs_update_inode()
1846 server->fsid = fattr->fsid; in nfs_update_inode()
1854 nfsi->read_cache_jiffies = fattr->time_start; in nfs_update_inode()
1863 nfs_wcc_update_inode(inode, fattr); in nfs_update_inode()
1871 if (fattr->valid & NFS_ATTR_FATTR_CHANGE) { in nfs_update_inode()
1872 if (!inode_eq_iversion_raw(inode, fattr->change_attr)) { in nfs_update_inode()
1890 inode_set_iversion_raw(inode, fattr->change_attr); in nfs_update_inode()
1901 if (fattr->valid & NFS_ATTR_FATTR_MTIME) { in nfs_update_inode()
1902 inode->i_mtime = timespec_to_timespec64(fattr->mtime); in nfs_update_inode()
1910 if (fattr->valid & NFS_ATTR_FATTR_CTIME) { in nfs_update_inode()
1911 inode->i_ctime = timespec_to_timespec64(fattr->ctime); in nfs_update_inode()
1920 if (fattr->valid & NFS_ATTR_FATTR_SIZE) { in nfs_update_inode()
1921 new_isize = nfs_size_to_loff_t(fattr->size); in nfs_update_inode()
1948 if (fattr->valid & NFS_ATTR_FATTR_ATIME) in nfs_update_inode()
1949 inode->i_atime = timespec_to_timespec64(fattr->atime); in nfs_update_inode()
1957 if (fattr->valid & NFS_ATTR_FATTR_MODE) { in nfs_update_inode()
1958 if ((inode->i_mode & S_IALLUGO) != (fattr->mode & S_IALLUGO)) { in nfs_update_inode()
1960 newmode |= fattr->mode & S_IALLUGO; in nfs_update_inode()
1973 if (fattr->valid & NFS_ATTR_FATTR_OWNER) { in nfs_update_inode()
1974 if (!uid_eq(inode->i_uid, fattr->uid)) { in nfs_update_inode()
1977 inode->i_uid = fattr->uid; in nfs_update_inode()
1987 if (fattr->valid & NFS_ATTR_FATTR_GROUP) { in nfs_update_inode()
1988 if (!gid_eq(inode->i_gid, fattr->gid)) { in nfs_update_inode()
1991 inode->i_gid = fattr->gid; in nfs_update_inode()
2001 if (fattr->valid & NFS_ATTR_FATTR_NLINK) { in nfs_update_inode()
2002 if (inode->i_nlink != fattr->nlink) { in nfs_update_inode()
2005 set_nlink(inode, fattr->nlink); in nfs_update_inode()
2015 if (fattr->valid & NFS_ATTR_FATTR_SPACE_USED) { in nfs_update_inode()
2019 inode->i_blocks = nfs_calc_block_size(fattr->du.nfs3.used); in nfs_update_inode()
2020 } else if (fattr->valid & NFS_ATTR_FATTR_BLOCKS_USED) in nfs_update_inode()
2021 inode->i_blocks = fattr->du.nfs2.blocks; in nfs_update_inode()
2044 if ((long)fattr->gencount - (long)nfsi->attr_gencount > 0) in nfs_update_inode()
2045 nfsi->attr_gencount = fattr->gencount; in nfs_update_inode()