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()
306 struct nfs_fattr *fattr; member
320 struct nfs_fattr *fattr = desc->fattr; in nfs_find_actor() local
322 if (NFS_FILEID(inode) != fattr->fileid) in nfs_find_actor()
324 if (inode_wrong_type(inode, fattr->mode)) in nfs_find_actor()
337 struct nfs_fattr *fattr = desc->fattr; in nfs_init_locked() local
339 set_nfs_fileid(inode, fattr->fileid); in nfs_init_locked()
340 inode->i_mode = fattr->mode; in nfs_init_locked()
353 void nfs_setsecurity(struct inode *inode, struct nfs_fattr *fattr, in nfs_setsecurity() argument
361 if ((fattr->valid & NFS_ATTR_FATTR_V4_SECURITY_LABEL) && inode->i_security) { in nfs_setsecurity()
400 void nfs_setsecurity(struct inode *inode, struct nfs_fattr *fattr, in nfs_setsecurity() argument
409 nfs_ilookup(struct super_block *sb, struct nfs_fattr *fattr, struct nfs_fh *fh) in nfs_ilookup() argument
413 .fattr = fattr, in nfs_ilookup()
418 if (!(fattr->valid & NFS_ATTR_FATTR_FILEID) || in nfs_ilookup()
419 !(fattr->valid & NFS_ATTR_FATTR_TYPE)) in nfs_ilookup()
422 hash = nfs_fattr_to_ino_t(fattr); in nfs_ilookup()
434 nfs_fhget(struct super_block *sb, struct nfs_fh *fh, struct nfs_fattr *fattr, struct nfs4_label *la… in nfs_fhget() argument
438 .fattr = fattr in nfs_fhget()
444 nfs_attr_check_mountpoint(sb, fattr); in nfs_fhget()
446 if (nfs_attr_use_mounted_on_fileid(fattr)) in nfs_fhget()
447 fattr->fileid = fattr->mounted_on_fileid; in nfs_fhget()
448 else if ((fattr->valid & NFS_ATTR_FATTR_FILEID) == 0) in nfs_fhget()
450 if ((fattr->valid & NFS_ATTR_FATTR_TYPE) == 0) in nfs_fhget()
453 hash = nfs_fattr_to_ino_t(fattr); in nfs_fhget()
471 inode->i_mode = fattr->mode; in nfs_fhget()
473 if ((fattr->valid & NFS_ATTR_FATTR_MODE) == 0 in nfs_fhget()
488 if (fattr->valid & NFS_ATTR_FATTR_MOUNTPOINT || in nfs_fhget()
489 fattr->valid & NFS_ATTR_FATTR_V4_REFERRAL) { in nfs_fhget()
490 if (fattr->valid & NFS_ATTR_FATTR_V4_REFERRAL) in nfs_fhget()
501 init_special_inode(inode, inode->i_mode, fattr->rdev); in nfs_fhget()
516 nfsi->read_cache_jiffies = fattr->time_start; in nfs_fhget()
517 nfsi->attr_gencount = fattr->gencount; in nfs_fhget()
518 if (fattr->valid & NFS_ATTR_FATTR_ATIME) in nfs_fhget()
519 inode->i_atime = fattr->atime; in nfs_fhget()
522 if (fattr->valid & NFS_ATTR_FATTR_MTIME) in nfs_fhget()
523 inode->i_mtime = fattr->mtime; in nfs_fhget()
526 if (fattr->valid & NFS_ATTR_FATTR_CTIME) in nfs_fhget()
527 inode->i_ctime = fattr->ctime; in nfs_fhget()
530 if (fattr->valid & NFS_ATTR_FATTR_CHANGE) in nfs_fhget()
531 inode_set_iversion_raw(inode, fattr->change_attr); in nfs_fhget()
534 if (fattr->valid & NFS_ATTR_FATTR_SIZE) in nfs_fhget()
535 inode->i_size = nfs_size_to_loff_t(fattr->size); in nfs_fhget()
538 if (fattr->valid & NFS_ATTR_FATTR_NLINK) in nfs_fhget()
539 set_nlink(inode, fattr->nlink); in nfs_fhget()
542 if (fattr->valid & NFS_ATTR_FATTR_OWNER) in nfs_fhget()
543 inode->i_uid = fattr->uid; in nfs_fhget()
546 if (fattr->valid & NFS_ATTR_FATTR_GROUP) in nfs_fhget()
547 inode->i_gid = fattr->gid; in nfs_fhget()
552 if (fattr->valid & NFS_ATTR_FATTR_BLOCKS_USED) in nfs_fhget()
553 inode->i_blocks = fattr->du.nfs2.blocks; in nfs_fhget()
555 fattr->size != 0) in nfs_fhget()
557 if (fattr->valid & NFS_ATTR_FATTR_SPACE_USED) { in nfs_fhget()
561 inode->i_blocks = nfs_calc_block_size(fattr->du.nfs3.used); in nfs_fhget()
563 fattr->size != 0) in nfs_fhget()
566 nfs_setsecurity(inode, fattr, label); in nfs_fhget()
576 int err = nfs_refresh_inode(inode, fattr); in nfs_fhget()
605 struct nfs_fattr *fattr; in nfs_setattr() local
635 fattr = nfs_alloc_fattr(); in nfs_setattr()
636 if (fattr == NULL) { in nfs_setattr()
641 error = NFS_PROTO(inode)->setattr(dentry, fattr, attr); in nfs_setattr()
643 error = nfs_refresh_inode(inode, fattr); in nfs_setattr()
644 nfs_free_fattr(fattr); in nfs_setattr()
693 struct nfs_fattr *fattr) in nfs_setattr_update_inode() argument
696 nfs_fattr_set_barrier(fattr); in nfs_setattr_update_inode()
699 NFS_I(inode)->attr_gencount = fattr->gencount; in nfs_setattr_update_inode()
724 if (fattr->valid & NFS_ATTR_FATTR_CTIME) in nfs_setattr_update_inode()
725 inode->i_ctime = fattr->ctime; in nfs_setattr_update_inode()
735 if (fattr->valid & NFS_ATTR_FATTR_ATIME) in nfs_setattr_update_inode()
736 inode->i_atime = fattr->atime; in nfs_setattr_update_inode()
742 if (fattr->valid & NFS_ATTR_FATTR_CTIME) in nfs_setattr_update_inode()
743 inode->i_ctime = fattr->ctime; in nfs_setattr_update_inode()
751 if (fattr->valid & NFS_ATTR_FATTR_MTIME) in nfs_setattr_update_inode()
752 inode->i_mtime = fattr->mtime; in nfs_setattr_update_inode()
758 if (fattr->valid & NFS_ATTR_FATTR_CTIME) in nfs_setattr_update_inode()
759 inode->i_ctime = fattr->ctime; in nfs_setattr_update_inode()
764 if (fattr->valid) in nfs_setattr_update_inode()
765 nfs_update_inode(inode, fattr); in nfs_setattr_update_inode()
1179 struct nfs_fattr *fattr = NULL; in __nfs_revalidate_inode() local
1200 fattr = nfs_alloc_fattr(); in __nfs_revalidate_inode()
1201 if (fattr == NULL) in __nfs_revalidate_inode()
1212 status = NFS_PROTO(inode)->getattr(server, NFS_FH(inode), fattr, in __nfs_revalidate_inode()
1233 status = nfs_refresh_inode(inode, fattr); in __nfs_revalidate_inode()
1244 nfs_setsecurity(inode, fattr, label); in __nfs_revalidate_inode()
1253 nfs_free_fattr(fattr); in __nfs_revalidate_inode()
1423 static void nfs_wcc_update_inode(struct inode *inode, struct nfs_fattr *fattr) in nfs_wcc_update_inode() argument
1427 if ((fattr->valid & NFS_ATTR_FATTR_PRECHANGE) in nfs_wcc_update_inode()
1428 && (fattr->valid & NFS_ATTR_FATTR_CHANGE) in nfs_wcc_update_inode()
1429 && inode_eq_iversion_raw(inode, fattr->pre_change_attr)) { in nfs_wcc_update_inode()
1430 inode_set_iversion_raw(inode, fattr->change_attr); in nfs_wcc_update_inode()
1438 if ((fattr->valid & NFS_ATTR_FATTR_PRECTIME) in nfs_wcc_update_inode()
1439 && (fattr->valid & NFS_ATTR_FATTR_CTIME) in nfs_wcc_update_inode()
1440 && timespec64_equal(&ts, &fattr->pre_ctime)) { in nfs_wcc_update_inode()
1441 inode->i_ctime = fattr->ctime; in nfs_wcc_update_inode()
1445 if ((fattr->valid & NFS_ATTR_FATTR_PREMTIME) in nfs_wcc_update_inode()
1446 && (fattr->valid & NFS_ATTR_FATTR_MTIME) in nfs_wcc_update_inode()
1447 && timespec64_equal(&ts, &fattr->pre_mtime)) { in nfs_wcc_update_inode()
1448 inode->i_mtime = fattr->mtime; in nfs_wcc_update_inode()
1452 if ((fattr->valid & NFS_ATTR_FATTR_PRESIZE) in nfs_wcc_update_inode()
1453 && (fattr->valid & NFS_ATTR_FATTR_SIZE) in nfs_wcc_update_inode()
1454 && i_size_read(inode) == nfs_size_to_loff_t(fattr->pre_size) in nfs_wcc_update_inode()
1456 i_size_write(inode, nfs_size_to_loff_t(fattr->size)); in nfs_wcc_update_inode()
1469 static int nfs_check_inode_attributes(struct inode *inode, struct nfs_fattr *fattr) in nfs_check_inode_attributes() argument
1479 if (!(fattr->valid & NFS_ATTR_FATTR_FILEID)) { in nfs_check_inode_attributes()
1481 if (fattr->valid & NFS_ATTR_FATTR_MOUNTED_ON_FILEID) in nfs_check_inode_attributes()
1484 } else if (nfsi->fileid != fattr->fileid) { in nfs_check_inode_attributes()
1486 if ((fattr->valid & NFS_ATTR_FATTR_MOUNTED_ON_FILEID) && in nfs_check_inode_attributes()
1487 nfsi->fileid == fattr->mounted_on_fileid) in nfs_check_inode_attributes()
1491 if ((fattr->valid & NFS_ATTR_FATTR_TYPE) && inode_wrong_type(inode, fattr->mode)) in nfs_check_inode_attributes()
1497 …if ((fattr->valid & NFS_ATTR_FATTR_CHANGE) != 0 && !inode_eq_iversion_raw(inode, fattr->change_att… in nfs_check_inode_attributes()
1501 if ((fattr->valid & NFS_ATTR_FATTR_MTIME) && !timespec64_equal(&ts, &fattr->mtime)) in nfs_check_inode_attributes()
1505 if ((fattr->valid & NFS_ATTR_FATTR_CTIME) && !timespec64_equal(&ts, &fattr->ctime)) in nfs_check_inode_attributes()
1508 if (fattr->valid & NFS_ATTR_FATTR_SIZE) { in nfs_check_inode_attributes()
1510 new_isize = nfs_size_to_loff_t(fattr->size); in nfs_check_inode_attributes()
1517 …if ((fattr->valid & NFS_ATTR_FATTR_MODE) && (inode->i_mode & S_IALLUGO) != (fattr->mode & S_IALLUG… in nfs_check_inode_attributes()
1519 if ((fattr->valid & NFS_ATTR_FATTR_OWNER) && !uid_eq(inode->i_uid, fattr->uid)) in nfs_check_inode_attributes()
1521 if ((fattr->valid & NFS_ATTR_FATTR_GROUP) && !gid_eq(inode->i_gid, fattr->gid)) in nfs_check_inode_attributes()
1525 if ((fattr->valid & NFS_ATTR_FATTR_NLINK) && inode->i_nlink != fattr->nlink) in nfs_check_inode_attributes()
1529 if ((fattr->valid & NFS_ATTR_FATTR_ATIME) && !timespec64_equal(&ts, &fattr->atime)) in nfs_check_inode_attributes()
1535 nfsi->read_cache_jiffies = fattr->time_start; in nfs_check_inode_attributes()
1552 void nfs_fattr_init(struct nfs_fattr *fattr) in nfs_fattr_init() argument
1554 fattr->valid = 0; in nfs_fattr_init()
1555 fattr->time_start = jiffies; in nfs_fattr_init()
1556 fattr->gencount = nfs_inc_attr_generation_counter(); in nfs_fattr_init()
1557 fattr->owner_name = NULL; in nfs_fattr_init()
1558 fattr->group_name = NULL; in nfs_fattr_init()
1573 void nfs_fattr_set_barrier(struct nfs_fattr *fattr) in nfs_fattr_set_barrier() argument
1575 fattr->gencount = nfs_inc_attr_generation_counter(); in nfs_fattr_set_barrier()
1580 struct nfs_fattr *fattr; in nfs_alloc_fattr() local
1582 fattr = kmalloc(sizeof(*fattr), GFP_NOFS); in nfs_alloc_fattr()
1583 if (fattr != NULL) in nfs_alloc_fattr()
1584 nfs_fattr_init(fattr); in nfs_alloc_fattr()
1585 return fattr; in nfs_alloc_fattr()
1676 static int nfs_inode_attrs_cmp_generic(const struct nfs_fattr *fattr, in nfs_inode_attrs_cmp_generic() argument
1681 return (long)(fattr->gencount - attr_gencount) > 0 || in nfs_inode_attrs_cmp_generic()
1701 static int nfs_inode_attrs_cmp_monotonic(const struct nfs_fattr *fattr, in nfs_inode_attrs_cmp_monotonic() argument
1704 s64 diff = fattr->change_attr - inode_peek_iversion_raw(inode); in nfs_inode_attrs_cmp_monotonic()
1725 static int nfs_inode_attrs_cmp_strict_monotonic(const struct nfs_fattr *fattr, in nfs_inode_attrs_cmp_strict_monotonic() argument
1728 return nfs_inode_attrs_cmp_monotonic(fattr, inode) > 0 ? 1 : -1; in nfs_inode_attrs_cmp_strict_monotonic()
1741 static int nfs_inode_attrs_cmp(const struct nfs_fattr *fattr, in nfs_inode_attrs_cmp() argument
1744 if (nfs_inode_attrs_cmp_generic(fattr, inode) > 0) in nfs_inode_attrs_cmp()
1750 if (!(fattr->valid & NFS_ATTR_FATTR_CHANGE)) in nfs_inode_attrs_cmp()
1752 return nfs_inode_attrs_cmp_monotonic(fattr, inode); in nfs_inode_attrs_cmp()
1754 if (!(fattr->valid & NFS_ATTR_FATTR_CHANGE)) in nfs_inode_attrs_cmp()
1756 return nfs_inode_attrs_cmp_strict_monotonic(fattr, inode); in nfs_inode_attrs_cmp()
1771 static int nfs_inode_finish_partial_attr_update(const struct nfs_fattr *fattr, in nfs_inode_finish_partial_attr_update() argument
1783 (fattr->valid & NFS_ATTR_FATTR_CHANGE) != 0 && in nfs_inode_finish_partial_attr_update()
1784 nfs_inode_attrs_cmp_monotonic(fattr, inode) == 0) in nfs_inode_finish_partial_attr_update()
1790 struct nfs_fattr *fattr) in nfs_refresh_inode_locked() argument
1792 int attr_cmp = nfs_inode_attrs_cmp(fattr, inode); in nfs_refresh_inode_locked()
1797 if (attr_cmp > 0 || nfs_inode_finish_partial_attr_update(fattr, inode)) in nfs_refresh_inode_locked()
1798 ret = nfs_update_inode(inode, fattr); in nfs_refresh_inode_locked()
1800 ret = nfs_check_inode_attributes(inode, fattr); in nfs_refresh_inode_locked()
1816 int nfs_refresh_inode(struct inode *inode, struct nfs_fattr *fattr) in nfs_refresh_inode() argument
1820 if ((fattr->valid & NFS_ATTR_FATTR) == 0) in nfs_refresh_inode()
1823 status = nfs_refresh_inode_locked(inode, fattr); in nfs_refresh_inode()
1831 struct nfs_fattr *fattr, unsigned int invalid) in nfs_post_op_update_inode_locked() argument
1836 if ((fattr->valid & NFS_ATTR_FATTR) == 0) in nfs_post_op_update_inode_locked()
1838 return nfs_refresh_inode_locked(inode, fattr); in nfs_post_op_update_inode_locked()
1855 int nfs_post_op_update_inode(struct inode *inode, struct nfs_fattr *fattr) in nfs_post_op_update_inode() argument
1860 nfs_fattr_set_barrier(fattr); in nfs_post_op_update_inode()
1861 status = nfs_post_op_update_inode_locked(inode, fattr, in nfs_post_op_update_inode()
1882 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
1884 int attr_cmp = nfs_inode_attrs_cmp(fattr, inode); in nfs_post_op_update_inode_force_wcc_locked()
1890 if ((fattr->valid & NFS_ATTR_FATTR) == 0 || !attr_cmp) { in nfs_post_op_update_inode_force_wcc_locked()
1891 fattr->valid &= ~(NFS_ATTR_FATTR_PRECHANGE in nfs_post_op_update_inode_force_wcc_locked()
1897 if ((fattr->valid & NFS_ATTR_FATTR_CHANGE) != 0 && in nfs_post_op_update_inode_force_wcc_locked()
1898 (fattr->valid & NFS_ATTR_FATTR_PRECHANGE) == 0) { in nfs_post_op_update_inode_force_wcc_locked()
1899 fattr->pre_change_attr = inode_peek_iversion_raw(inode); in nfs_post_op_update_inode_force_wcc_locked()
1900 fattr->valid |= NFS_ATTR_FATTR_PRECHANGE; in nfs_post_op_update_inode_force_wcc_locked()
1902 if ((fattr->valid & NFS_ATTR_FATTR_CTIME) != 0 && in nfs_post_op_update_inode_force_wcc_locked()
1903 (fattr->valid & NFS_ATTR_FATTR_PRECTIME) == 0) { in nfs_post_op_update_inode_force_wcc_locked()
1904 fattr->pre_ctime = inode->i_ctime; in nfs_post_op_update_inode_force_wcc_locked()
1905 fattr->valid |= NFS_ATTR_FATTR_PRECTIME; in nfs_post_op_update_inode_force_wcc_locked()
1907 if ((fattr->valid & NFS_ATTR_FATTR_MTIME) != 0 && in nfs_post_op_update_inode_force_wcc_locked()
1908 (fattr->valid & NFS_ATTR_FATTR_PREMTIME) == 0) { in nfs_post_op_update_inode_force_wcc_locked()
1909 fattr->pre_mtime = inode->i_mtime; in nfs_post_op_update_inode_force_wcc_locked()
1910 fattr->valid |= NFS_ATTR_FATTR_PREMTIME; in nfs_post_op_update_inode_force_wcc_locked()
1912 if ((fattr->valid & NFS_ATTR_FATTR_SIZE) != 0 && in nfs_post_op_update_inode_force_wcc_locked()
1913 (fattr->valid & NFS_ATTR_FATTR_PRESIZE) == 0) { in nfs_post_op_update_inode_force_wcc_locked()
1914 fattr->pre_size = i_size_read(inode); in nfs_post_op_update_inode_force_wcc_locked()
1915 fattr->valid |= NFS_ATTR_FATTR_PRESIZE; in nfs_post_op_update_inode_force_wcc_locked()
1918 status = nfs_post_op_update_inode_locked(inode, fattr, in nfs_post_op_update_inode_force_wcc_locked()
1937 int nfs_post_op_update_inode_force_wcc(struct inode *inode, struct nfs_fattr *fattr) in nfs_post_op_update_inode_force_wcc() argument
1942 nfs_fattr_set_barrier(fattr); in nfs_post_op_update_inode_force_wcc()
1943 status = nfs_post_op_update_inode_force_wcc_locked(inode, fattr); in nfs_post_op_update_inode_force_wcc()
1962 static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr) in nfs_update_inode() argument
1979 atomic_read(&inode->i_count), fattr->valid); in nfs_update_inode()
1981 if (!(fattr->valid & NFS_ATTR_FATTR_FILEID)) { in nfs_update_inode()
1983 if (fattr->valid & NFS_ATTR_FATTR_MOUNTED_ON_FILEID) in nfs_update_inode()
1986 } else if (nfsi->fileid != fattr->fileid) { in nfs_update_inode()
1988 if ((fattr->valid & NFS_ATTR_FATTR_MOUNTED_ON_FILEID) && in nfs_update_inode()
1989 nfsi->fileid == fattr->mounted_on_fileid) in nfs_update_inode()
1995 (long long)fattr->fileid); in nfs_update_inode()
2002 if ((fattr->valid & NFS_ATTR_FATTR_TYPE) && inode_wrong_type(inode, fattr->mode)) { in nfs_update_inode()
2007 __func__, inode->i_ino, inode->i_mode, fattr->mode); in nfs_update_inode()
2012 if (S_ISDIR(inode->i_mode) && (fattr->valid & NFS_ATTR_FATTR_FSID) && in nfs_update_inode()
2013 !nfs_fsid_equal(&server->fsid, &fattr->fsid) && in nfs_update_inode()
2015 server->fsid = fattr->fsid; in nfs_update_inode()
2023 nfsi->read_cache_jiffies = fattr->time_start; in nfs_update_inode()
2032 nfs_wcc_update_inode(inode, fattr); in nfs_update_inode()
2044 if (fattr->valid & NFS_ATTR_FATTR_CHANGE) { in nfs_update_inode()
2045 if (!inode_eq_iversion_raw(inode, fattr->change_attr)) { in nfs_update_inode()
2068 inode_set_iversion_raw(inode, fattr->change_attr); in nfs_update_inode()
2078 if (fattr->valid & NFS_ATTR_FATTR_MTIME) in nfs_update_inode()
2079 inode->i_mtime = fattr->mtime; in nfs_update_inode()
2084 if (fattr->valid & NFS_ATTR_FATTR_CTIME) in nfs_update_inode()
2085 inode->i_ctime = fattr->ctime; in nfs_update_inode()
2091 if (fattr->valid & NFS_ATTR_FATTR_SIZE) { in nfs_update_inode()
2092 new_isize = nfs_size_to_loff_t(fattr->size); in nfs_update_inode()
2110 !(fattr->valid & (NFS_ATTR_FATTR_SPACE_USED | in nfs_update_inode()
2112 fattr->du.nfs3.used = 0; in nfs_update_inode()
2113 fattr->valid |= NFS_ATTR_FATTR_SPACE_USED; in nfs_update_inode()
2119 if (fattr->valid & NFS_ATTR_FATTR_ATIME) in nfs_update_inode()
2120 inode->i_atime = fattr->atime; in nfs_update_inode()
2125 if (fattr->valid & NFS_ATTR_FATTR_MODE) { in nfs_update_inode()
2126 if ((inode->i_mode & S_IALLUGO) != (fattr->mode & S_IALLUGO)) { in nfs_update_inode()
2128 newmode |= fattr->mode & S_IALLUGO; in nfs_update_inode()
2137 if (fattr->valid & NFS_ATTR_FATTR_OWNER) { in nfs_update_inode()
2138 if (!uid_eq(inode->i_uid, fattr->uid)) { in nfs_update_inode()
2141 inode->i_uid = fattr->uid; in nfs_update_inode()
2147 if (fattr->valid & NFS_ATTR_FATTR_GROUP) { in nfs_update_inode()
2148 if (!gid_eq(inode->i_gid, fattr->gid)) { in nfs_update_inode()
2151 inode->i_gid = fattr->gid; in nfs_update_inode()
2157 if (fattr->valid & NFS_ATTR_FATTR_NLINK) { in nfs_update_inode()
2158 if (inode->i_nlink != fattr->nlink) { in nfs_update_inode()
2161 set_nlink(inode, fattr->nlink); in nfs_update_inode()
2167 if (fattr->valid & NFS_ATTR_FATTR_SPACE_USED) { in nfs_update_inode()
2171 inode->i_blocks = nfs_calc_block_size(fattr->du.nfs3.used); in nfs_update_inode()
2176 if (fattr->valid & NFS_ATTR_FATTR_BLOCKS_USED) in nfs_update_inode()
2177 inode->i_blocks = fattr->du.nfs2.blocks; in nfs_update_inode()
2200 if ((long)(fattr->gencount - nfsi->attr_gencount) > 0) in nfs_update_inode()
2201 nfsi->attr_gencount = fattr->gencount; in nfs_update_inode()