Lines Matching refs:fattr
70 nfs_fattr_to_ino_t(struct nfs_fattr *fattr) in nfs_fattr_to_ino_t() argument
72 return nfs_fileid_to_ino_t(fattr->fileid); in nfs_fattr_to_ino_t()
321 struct nfs_fattr *fattr; member
335 struct nfs_fattr *fattr = desc->fattr; in nfs_find_actor() local
337 if (NFS_FILEID(inode) != fattr->fileid) in nfs_find_actor()
339 if (inode_wrong_type(inode, fattr->mode)) in nfs_find_actor()
352 struct nfs_fattr *fattr = desc->fattr; in nfs_init_locked() local
354 set_nfs_fileid(inode, fattr->fileid); in nfs_init_locked()
355 inode->i_mode = fattr->mode; in nfs_init_locked()
368 void nfs_setsecurity(struct inode *inode, struct nfs_fattr *fattr, in nfs_setsecurity() argument
376 if ((fattr->valid & NFS_ATTR_FATTR_V4_SECURITY_LABEL) && inode->i_security) { in nfs_setsecurity()
415 void nfs_setsecurity(struct inode *inode, struct nfs_fattr *fattr, in nfs_setsecurity() argument
424 nfs_ilookup(struct super_block *sb, struct nfs_fattr *fattr, struct nfs_fh *fh) in nfs_ilookup() argument
428 .fattr = fattr, in nfs_ilookup()
433 if (!(fattr->valid & NFS_ATTR_FATTR_FILEID) || in nfs_ilookup()
434 !(fattr->valid & NFS_ATTR_FATTR_TYPE)) in nfs_ilookup()
437 hash = nfs_fattr_to_ino_t(fattr); in nfs_ilookup()
449 nfs_fhget(struct super_block *sb, struct nfs_fh *fh, struct nfs_fattr *fattr, struct nfs4_label *la… in nfs_fhget() argument
453 .fattr = fattr in nfs_fhget()
458 nfs_attr_check_mountpoint(sb, fattr); in nfs_fhget()
460 if (nfs_attr_use_mounted_on_fileid(fattr)) in nfs_fhget()
461 fattr->fileid = fattr->mounted_on_fileid; in nfs_fhget()
462 else if ((fattr->valid & NFS_ATTR_FATTR_FILEID) == 0) in nfs_fhget()
464 if ((fattr->valid & NFS_ATTR_FATTR_TYPE) == 0) in nfs_fhget()
467 hash = nfs_fattr_to_ino_t(fattr); in nfs_fhget()
485 inode->i_mode = fattr->mode; in nfs_fhget()
487 if ((fattr->valid & NFS_ATTR_FATTR_MODE) == 0 in nfs_fhget()
502 if (fattr->valid & NFS_ATTR_FATTR_MOUNTPOINT || in nfs_fhget()
503 fattr->valid & NFS_ATTR_FATTR_V4_REFERRAL) { in nfs_fhget()
504 if (fattr->valid & NFS_ATTR_FATTR_V4_REFERRAL) in nfs_fhget()
515 init_special_inode(inode, inode->i_mode, fattr->rdev); in nfs_fhget()
530 nfsi->read_cache_jiffies = fattr->time_start; in nfs_fhget()
531 nfsi->attr_gencount = fattr->gencount; in nfs_fhget()
532 if (fattr->valid & NFS_ATTR_FATTR_ATIME) in nfs_fhget()
533 inode->i_atime = fattr->atime; in nfs_fhget()
536 if (fattr->valid & NFS_ATTR_FATTR_MTIME) in nfs_fhget()
537 inode->i_mtime = fattr->mtime; in nfs_fhget()
540 if (fattr->valid & NFS_ATTR_FATTR_CTIME) in nfs_fhget()
541 inode->i_ctime = fattr->ctime; in nfs_fhget()
544 if (fattr->valid & NFS_ATTR_FATTR_CHANGE) in nfs_fhget()
545 inode_set_iversion_raw(inode, fattr->change_attr); in nfs_fhget()
548 if (fattr->valid & NFS_ATTR_FATTR_SIZE) in nfs_fhget()
549 inode->i_size = nfs_size_to_loff_t(fattr->size); in nfs_fhget()
552 if (fattr->valid & NFS_ATTR_FATTR_NLINK) in nfs_fhget()
553 set_nlink(inode, fattr->nlink); in nfs_fhget()
556 if (fattr->valid & NFS_ATTR_FATTR_OWNER) in nfs_fhget()
557 inode->i_uid = fattr->uid; in nfs_fhget()
560 if (fattr->valid & NFS_ATTR_FATTR_GROUP) in nfs_fhget()
561 inode->i_gid = fattr->gid; in nfs_fhget()
566 if (fattr->valid & NFS_ATTR_FATTR_BLOCKS_USED) in nfs_fhget()
567 inode->i_blocks = fattr->du.nfs2.blocks; in nfs_fhget()
568 if (fattr->valid & NFS_ATTR_FATTR_SPACE_USED) { in nfs_fhget()
572 inode->i_blocks = nfs_calc_block_size(fattr->du.nfs3.used); in nfs_fhget()
578 nfs_setsecurity(inode, fattr, label); in nfs_fhget()
588 int err = nfs_refresh_inode(inode, fattr); in nfs_fhget()
616 struct nfs_fattr *fattr; in nfs_setattr() local
647 fattr = nfs_alloc_fattr(); in nfs_setattr()
648 if (fattr == NULL) { in nfs_setattr()
653 error = NFS_PROTO(inode)->setattr(dentry, fattr, attr); in nfs_setattr()
655 error = nfs_refresh_inode(inode, fattr); in nfs_setattr()
656 nfs_free_fattr(fattr); in nfs_setattr()
705 struct nfs_fattr *fattr) in nfs_setattr_update_inode() argument
708 nfs_fattr_set_barrier(fattr); in nfs_setattr_update_inode()
711 NFS_I(inode)->attr_gencount = fattr->gencount; in nfs_setattr_update_inode()
728 if (fattr->valid & NFS_ATTR_FATTR_CTIME) in nfs_setattr_update_inode()
729 inode->i_ctime = fattr->ctime; in nfs_setattr_update_inode()
739 if (fattr->valid & NFS_ATTR_FATTR_ATIME) in nfs_setattr_update_inode()
740 inode->i_atime = fattr->atime; in nfs_setattr_update_inode()
746 if (fattr->valid & NFS_ATTR_FATTR_CTIME) in nfs_setattr_update_inode()
747 inode->i_ctime = fattr->ctime; in nfs_setattr_update_inode()
755 if (fattr->valid & NFS_ATTR_FATTR_MTIME) in nfs_setattr_update_inode()
756 inode->i_mtime = fattr->mtime; in nfs_setattr_update_inode()
762 if (fattr->valid & NFS_ATTR_FATTR_CTIME) in nfs_setattr_update_inode()
763 inode->i_ctime = fattr->ctime; in nfs_setattr_update_inode()
768 if (fattr->valid) in nfs_setattr_update_inode()
769 nfs_update_inode(inode, fattr); in nfs_setattr_update_inode()
1152 struct nfs_fattr *fattr = NULL; in __nfs_revalidate_inode() local
1173 fattr = nfs_alloc_fattr(); in __nfs_revalidate_inode()
1174 if (fattr == NULL) in __nfs_revalidate_inode()
1185 status = NFS_PROTO(inode)->getattr(server, NFS_FH(inode), fattr, in __nfs_revalidate_inode()
1206 status = nfs_refresh_inode(inode, fattr); in __nfs_revalidate_inode()
1217 nfs_setsecurity(inode, fattr, label); in __nfs_revalidate_inode()
1226 nfs_free_fattr(fattr); in __nfs_revalidate_inode()
1391 static void nfs_wcc_update_inode(struct inode *inode, struct nfs_fattr *fattr) in nfs_wcc_update_inode() argument
1395 if ((fattr->valid & NFS_ATTR_FATTR_PRECHANGE) in nfs_wcc_update_inode()
1396 && (fattr->valid & NFS_ATTR_FATTR_CHANGE) in nfs_wcc_update_inode()
1397 && inode_eq_iversion_raw(inode, fattr->pre_change_attr)) { in nfs_wcc_update_inode()
1398 inode_set_iversion_raw(inode, fattr->change_attr); in nfs_wcc_update_inode()
1406 if ((fattr->valid & NFS_ATTR_FATTR_PRECTIME) in nfs_wcc_update_inode()
1407 && (fattr->valid & NFS_ATTR_FATTR_CTIME) in nfs_wcc_update_inode()
1408 && timespec64_equal(&ts, &fattr->pre_ctime)) { in nfs_wcc_update_inode()
1409 inode->i_ctime = fattr->ctime; in nfs_wcc_update_inode()
1413 if ((fattr->valid & NFS_ATTR_FATTR_PREMTIME) in nfs_wcc_update_inode()
1414 && (fattr->valid & NFS_ATTR_FATTR_MTIME) in nfs_wcc_update_inode()
1415 && timespec64_equal(&ts, &fattr->pre_mtime)) { in nfs_wcc_update_inode()
1416 inode->i_mtime = fattr->mtime; in nfs_wcc_update_inode()
1420 if ((fattr->valid & NFS_ATTR_FATTR_PRESIZE) in nfs_wcc_update_inode()
1421 && (fattr->valid & NFS_ATTR_FATTR_SIZE) in nfs_wcc_update_inode()
1422 && i_size_read(inode) == nfs_size_to_loff_t(fattr->pre_size) in nfs_wcc_update_inode()
1424 i_size_write(inode, nfs_size_to_loff_t(fattr->size)); in nfs_wcc_update_inode()
1437 static int nfs_check_inode_attributes(struct inode *inode, struct nfs_fattr *fattr) in nfs_check_inode_attributes() argument
1447 if (!(fattr->valid & NFS_ATTR_FATTR_FILEID)) { in nfs_check_inode_attributes()
1449 if (fattr->valid & NFS_ATTR_FATTR_MOUNTED_ON_FILEID) in nfs_check_inode_attributes()
1452 } else if (nfsi->fileid != fattr->fileid) { in nfs_check_inode_attributes()
1454 if ((fattr->valid & NFS_ATTR_FATTR_MOUNTED_ON_FILEID) && in nfs_check_inode_attributes()
1455 nfsi->fileid == fattr->mounted_on_fileid) in nfs_check_inode_attributes()
1459 if ((fattr->valid & NFS_ATTR_FATTR_TYPE) && inode_wrong_type(inode, fattr->mode)) in nfs_check_inode_attributes()
1465 …if ((fattr->valid & NFS_ATTR_FATTR_CHANGE) != 0 && !inode_eq_iversion_raw(inode, fattr->change_att… in nfs_check_inode_attributes()
1470 if ((fattr->valid & NFS_ATTR_FATTR_MTIME) && !timespec64_equal(&ts, &fattr->mtime)) in nfs_check_inode_attributes()
1474 if ((fattr->valid & NFS_ATTR_FATTR_CTIME) && !timespec64_equal(&ts, &fattr->ctime)) in nfs_check_inode_attributes()
1477 if (fattr->valid & NFS_ATTR_FATTR_SIZE) { in nfs_check_inode_attributes()
1479 new_isize = nfs_size_to_loff_t(fattr->size); in nfs_check_inode_attributes()
1487 …if ((fattr->valid & NFS_ATTR_FATTR_MODE) && (inode->i_mode & S_IALLUGO) != (fattr->mode & S_IALLUG… in nfs_check_inode_attributes()
1491 if ((fattr->valid & NFS_ATTR_FATTR_OWNER) && !uid_eq(inode->i_uid, fattr->uid)) in nfs_check_inode_attributes()
1495 if ((fattr->valid & NFS_ATTR_FATTR_GROUP) && !gid_eq(inode->i_gid, fattr->gid)) in nfs_check_inode_attributes()
1501 if ((fattr->valid & NFS_ATTR_FATTR_NLINK) && inode->i_nlink != fattr->nlink) in nfs_check_inode_attributes()
1505 if ((fattr->valid & NFS_ATTR_FATTR_ATIME) && !timespec64_equal(&ts, &fattr->atime)) in nfs_check_inode_attributes()
1511 nfsi->read_cache_jiffies = fattr->time_start; in nfs_check_inode_attributes()
1528 void nfs_fattr_init(struct nfs_fattr *fattr) in nfs_fattr_init() argument
1530 fattr->valid = 0; in nfs_fattr_init()
1531 fattr->time_start = jiffies; in nfs_fattr_init()
1532 fattr->gencount = nfs_inc_attr_generation_counter(); in nfs_fattr_init()
1533 fattr->owner_name = NULL; in nfs_fattr_init()
1534 fattr->group_name = NULL; in nfs_fattr_init()
1549 void nfs_fattr_set_barrier(struct nfs_fattr *fattr) in nfs_fattr_set_barrier() argument
1551 fattr->gencount = nfs_inc_attr_generation_counter(); in nfs_fattr_set_barrier()
1556 struct nfs_fattr *fattr; in nfs_alloc_fattr() local
1558 fattr = kmalloc(sizeof(*fattr), GFP_NOFS); in nfs_alloc_fattr()
1559 if (fattr != NULL) in nfs_alloc_fattr()
1560 nfs_fattr_init(fattr); in nfs_alloc_fattr()
1561 return fattr; in nfs_alloc_fattr()
1658 static int nfs_inode_attrs_need_update(const struct inode *inode, const struct nfs_fattr *fattr) in nfs_inode_attrs_need_update() argument
1662 return (long)(fattr->gencount - attr_gencount) > 0 || in nfs_inode_attrs_need_update()
1666 static int nfs_refresh_inode_locked(struct inode *inode, struct nfs_fattr *fattr) in nfs_refresh_inode_locked() argument
1672 if (nfs_inode_attrs_need_update(inode, fattr)) in nfs_refresh_inode_locked()
1673 ret = nfs_update_inode(inode, fattr); in nfs_refresh_inode_locked()
1675 ret = nfs_check_inode_attributes(inode, fattr); in nfs_refresh_inode_locked()
1691 int nfs_refresh_inode(struct inode *inode, struct nfs_fattr *fattr) in nfs_refresh_inode() argument
1695 if ((fattr->valid & NFS_ATTR_FATTR) == 0) in nfs_refresh_inode()
1698 status = nfs_refresh_inode_locked(inode, fattr); in nfs_refresh_inode()
1706 struct nfs_fattr *fattr, unsigned int invalid) in nfs_post_op_update_inode_locked() argument
1711 if ((fattr->valid & NFS_ATTR_FATTR) == 0) in nfs_post_op_update_inode_locked()
1713 return nfs_refresh_inode_locked(inode, fattr); in nfs_post_op_update_inode_locked()
1730 int nfs_post_op_update_inode(struct inode *inode, struct nfs_fattr *fattr) in nfs_post_op_update_inode() argument
1735 nfs_fattr_set_barrier(fattr); in nfs_post_op_update_inode()
1736 status = nfs_post_op_update_inode_locked(inode, fattr, in nfs_post_op_update_inode()
1757 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
1762 if ((fattr->valid & NFS_ATTR_FATTR) == 0 || in nfs_post_op_update_inode_force_wcc_locked()
1763 !nfs_inode_attrs_need_update(inode, fattr)) { in nfs_post_op_update_inode_force_wcc_locked()
1764 fattr->valid &= ~(NFS_ATTR_FATTR_PRECHANGE in nfs_post_op_update_inode_force_wcc_locked()
1770 if ((fattr->valid & NFS_ATTR_FATTR_CHANGE) != 0 && in nfs_post_op_update_inode_force_wcc_locked()
1771 (fattr->valid & NFS_ATTR_FATTR_PRECHANGE) == 0) { in nfs_post_op_update_inode_force_wcc_locked()
1772 fattr->pre_change_attr = inode_peek_iversion_raw(inode); in nfs_post_op_update_inode_force_wcc_locked()
1773 fattr->valid |= NFS_ATTR_FATTR_PRECHANGE; in nfs_post_op_update_inode_force_wcc_locked()
1775 if ((fattr->valid & NFS_ATTR_FATTR_CTIME) != 0 && in nfs_post_op_update_inode_force_wcc_locked()
1776 (fattr->valid & NFS_ATTR_FATTR_PRECTIME) == 0) { in nfs_post_op_update_inode_force_wcc_locked()
1777 fattr->pre_ctime = inode->i_ctime; in nfs_post_op_update_inode_force_wcc_locked()
1778 fattr->valid |= NFS_ATTR_FATTR_PRECTIME; in nfs_post_op_update_inode_force_wcc_locked()
1780 if ((fattr->valid & NFS_ATTR_FATTR_MTIME) != 0 && in nfs_post_op_update_inode_force_wcc_locked()
1781 (fattr->valid & NFS_ATTR_FATTR_PREMTIME) == 0) { in nfs_post_op_update_inode_force_wcc_locked()
1782 fattr->pre_mtime = inode->i_mtime; in nfs_post_op_update_inode_force_wcc_locked()
1783 fattr->valid |= NFS_ATTR_FATTR_PREMTIME; in nfs_post_op_update_inode_force_wcc_locked()
1785 if ((fattr->valid & NFS_ATTR_FATTR_SIZE) != 0 && in nfs_post_op_update_inode_force_wcc_locked()
1786 (fattr->valid & NFS_ATTR_FATTR_PRESIZE) == 0) { in nfs_post_op_update_inode_force_wcc_locked()
1787 fattr->pre_size = i_size_read(inode); in nfs_post_op_update_inode_force_wcc_locked()
1788 fattr->valid |= NFS_ATTR_FATTR_PRESIZE; in nfs_post_op_update_inode_force_wcc_locked()
1791 status = nfs_post_op_update_inode_locked(inode, fattr, in nfs_post_op_update_inode_force_wcc_locked()
1810 int nfs_post_op_update_inode_force_wcc(struct inode *inode, struct nfs_fattr *fattr) in nfs_post_op_update_inode_force_wcc() argument
1815 nfs_fattr_set_barrier(fattr); in nfs_post_op_update_inode_force_wcc()
1816 status = nfs_post_op_update_inode_force_wcc_locked(inode, fattr); in nfs_post_op_update_inode_force_wcc()
1835 static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr) in nfs_update_inode() argument
1851 atomic_read(&inode->i_count), fattr->valid); in nfs_update_inode()
1853 if (!(fattr->valid & NFS_ATTR_FATTR_FILEID)) { in nfs_update_inode()
1855 if (fattr->valid & NFS_ATTR_FATTR_MOUNTED_ON_FILEID) in nfs_update_inode()
1858 } else if (nfsi->fileid != fattr->fileid) { in nfs_update_inode()
1860 if ((fattr->valid & NFS_ATTR_FATTR_MOUNTED_ON_FILEID) && in nfs_update_inode()
1861 nfsi->fileid == fattr->mounted_on_fileid) in nfs_update_inode()
1867 (long long)fattr->fileid); in nfs_update_inode()
1874 if ((fattr->valid & NFS_ATTR_FATTR_TYPE) && inode_wrong_type(inode, fattr->mode)) { in nfs_update_inode()
1879 __func__, inode->i_ino, inode->i_mode, fattr->mode); in nfs_update_inode()
1885 if (S_ISDIR(inode->i_mode) && (fattr->valid & NFS_ATTR_FATTR_FSID) && in nfs_update_inode()
1886 !nfs_fsid_equal(&server->fsid, &fattr->fsid) && in nfs_update_inode()
1888 server->fsid = fattr->fsid; in nfs_update_inode()
1896 nfsi->read_cache_jiffies = fattr->time_start; in nfs_update_inode()
1906 nfs_wcc_update_inode(inode, fattr); in nfs_update_inode()
1914 if (fattr->valid & NFS_ATTR_FATTR_CHANGE) { in nfs_update_inode()
1915 if (!inode_eq_iversion_raw(inode, fattr->change_attr)) { in nfs_update_inode()
1934 inode_set_iversion_raw(inode, fattr->change_attr); in nfs_update_inode()
1945 if (fattr->valid & NFS_ATTR_FATTR_MTIME) { in nfs_update_inode()
1946 inode->i_mtime = fattr->mtime; in nfs_update_inode()
1954 if (fattr->valid & NFS_ATTR_FATTR_CTIME) { in nfs_update_inode()
1955 inode->i_ctime = fattr->ctime; in nfs_update_inode()
1964 if (fattr->valid & NFS_ATTR_FATTR_SIZE) { in nfs_update_inode()
1965 new_isize = nfs_size_to_loff_t(fattr->size); in nfs_update_inode()
1992 if (fattr->valid & NFS_ATTR_FATTR_ATIME) in nfs_update_inode()
1993 inode->i_atime = fattr->atime; in nfs_update_inode()
2001 if (fattr->valid & NFS_ATTR_FATTR_MODE) { in nfs_update_inode()
2002 if ((inode->i_mode & S_IALLUGO) != (fattr->mode & S_IALLUGO)) { in nfs_update_inode()
2004 newmode |= fattr->mode & S_IALLUGO; in nfs_update_inode()
2017 if (fattr->valid & NFS_ATTR_FATTR_OWNER) { in nfs_update_inode()
2018 if (!uid_eq(inode->i_uid, fattr->uid)) { in nfs_update_inode()
2021 inode->i_uid = fattr->uid; in nfs_update_inode()
2031 if (fattr->valid & NFS_ATTR_FATTR_GROUP) { in nfs_update_inode()
2032 if (!gid_eq(inode->i_gid, fattr->gid)) { in nfs_update_inode()
2035 inode->i_gid = fattr->gid; in nfs_update_inode()
2045 if (fattr->valid & NFS_ATTR_FATTR_NLINK) { in nfs_update_inode()
2046 if (inode->i_nlink != fattr->nlink) { in nfs_update_inode()
2049 set_nlink(inode, fattr->nlink); in nfs_update_inode()
2059 if (fattr->valid & NFS_ATTR_FATTR_SPACE_USED) { in nfs_update_inode()
2063 inode->i_blocks = nfs_calc_block_size(fattr->du.nfs3.used); in nfs_update_inode()
2064 } else if (fattr->valid & NFS_ATTR_FATTR_BLOCKS_USED) in nfs_update_inode()
2065 inode->i_blocks = fattr->du.nfs2.blocks; in nfs_update_inode()
2092 if ((long)(fattr->gencount - nfsi->attr_gencount) > 0) in nfs_update_inode()
2093 nfsi->attr_gencount = fattr->gencount; in nfs_update_inode()