Lines Matching refs:fattr

69 nfs_fattr_to_ino_t(struct nfs_fattr *fattr)  in nfs_fattr_to_ino_t()  argument
71 return nfs_fileid_to_ino_t(fattr->fileid); in nfs_fattr_to_ino_t()
292 struct nfs_fattr *fattr; member
306 struct nfs_fattr *fattr = desc->fattr; in nfs_find_actor() local
308 if (NFS_FILEID(inode) != fattr->fileid) in nfs_find_actor()
310 if ((S_IFMT & inode->i_mode) != (S_IFMT & fattr->mode)) in nfs_find_actor()
323 struct nfs_fattr *fattr = desc->fattr; in nfs_init_locked() local
325 set_nfs_fileid(inode, fattr->fileid); in nfs_init_locked()
326 inode->i_mode = fattr->mode; in nfs_init_locked()
339 void nfs_setsecurity(struct inode *inode, struct nfs_fattr *fattr, in nfs_setsecurity() argument
347 if ((fattr->valid & NFS_ATTR_FATTR_V4_SECURITY_LABEL) && inode->i_security) { in nfs_setsecurity()
386 void nfs_setsecurity(struct inode *inode, struct nfs_fattr *fattr, in nfs_setsecurity() argument
395 nfs_ilookup(struct super_block *sb, struct nfs_fattr *fattr, struct nfs_fh *fh) in nfs_ilookup() argument
399 .fattr = fattr, in nfs_ilookup()
404 if (!(fattr->valid & NFS_ATTR_FATTR_FILEID) || in nfs_ilookup()
405 !(fattr->valid & NFS_ATTR_FATTR_TYPE)) in nfs_ilookup()
408 hash = nfs_fattr_to_ino_t(fattr); in nfs_ilookup()
420 nfs_fhget(struct super_block *sb, struct nfs_fh *fh, struct nfs_fattr *fattr, struct nfs4_label *la… in nfs_fhget() argument
424 .fattr = fattr in nfs_fhget()
429 nfs_attr_check_mountpoint(sb, fattr); in nfs_fhget()
431 if (nfs_attr_use_mounted_on_fileid(fattr)) in nfs_fhget()
432 fattr->fileid = fattr->mounted_on_fileid; in nfs_fhget()
433 else if ((fattr->valid & NFS_ATTR_FATTR_FILEID) == 0) in nfs_fhget()
435 if ((fattr->valid & NFS_ATTR_FATTR_TYPE) == 0) in nfs_fhget()
438 hash = nfs_fattr_to_ino_t(fattr); in nfs_fhget()
456 inode->i_mode = fattr->mode; in nfs_fhget()
458 if ((fattr->valid & NFS_ATTR_FATTR_MODE) == 0 in nfs_fhget()
473 if (fattr->valid & NFS_ATTR_FATTR_MOUNTPOINT || in nfs_fhget()
474 fattr->valid & NFS_ATTR_FATTR_V4_REFERRAL) { in nfs_fhget()
475 if (fattr->valid & NFS_ATTR_FATTR_V4_REFERRAL) in nfs_fhget()
486 init_special_inode(inode, inode->i_mode, fattr->rdev); in nfs_fhget()
501 nfsi->read_cache_jiffies = fattr->time_start; in nfs_fhget()
502 nfsi->attr_gencount = fattr->gencount; in nfs_fhget()
503 if (fattr->valid & NFS_ATTR_FATTR_ATIME) in nfs_fhget()
504 inode->i_atime = timespec_to_timespec64(fattr->atime); in nfs_fhget()
507 if (fattr->valid & NFS_ATTR_FATTR_MTIME) in nfs_fhget()
508 inode->i_mtime = timespec_to_timespec64(fattr->mtime); in nfs_fhget()
511 if (fattr->valid & NFS_ATTR_FATTR_CTIME) in nfs_fhget()
512 inode->i_ctime = timespec_to_timespec64(fattr->ctime); in nfs_fhget()
515 if (fattr->valid & NFS_ATTR_FATTR_CHANGE) in nfs_fhget()
516 inode_set_iversion_raw(inode, fattr->change_attr); in nfs_fhget()
519 if (fattr->valid & NFS_ATTR_FATTR_SIZE) in nfs_fhget()
520 inode->i_size = nfs_size_to_loff_t(fattr->size); in nfs_fhget()
523 if (fattr->valid & NFS_ATTR_FATTR_NLINK) in nfs_fhget()
524 set_nlink(inode, fattr->nlink); in nfs_fhget()
527 if (fattr->valid & NFS_ATTR_FATTR_OWNER) in nfs_fhget()
528 inode->i_uid = fattr->uid; in nfs_fhget()
531 if (fattr->valid & NFS_ATTR_FATTR_GROUP) in nfs_fhget()
532 inode->i_gid = fattr->gid; in nfs_fhget()
535 if (fattr->valid & NFS_ATTR_FATTR_BLOCKS_USED) in nfs_fhget()
536 inode->i_blocks = fattr->du.nfs2.blocks; in nfs_fhget()
537 if (fattr->valid & NFS_ATTR_FATTR_SPACE_USED) { in nfs_fhget()
541 inode->i_blocks = nfs_calc_block_size(fattr->du.nfs3.used); in nfs_fhget()
547 nfs_setsecurity(inode, fattr, label); in nfs_fhget()
557 int err = nfs_refresh_inode(inode, fattr); in nfs_fhget()
585 struct nfs_fattr *fattr; in nfs_setattr() local
616 fattr = nfs_alloc_fattr(); in nfs_setattr()
617 if (fattr == NULL) { in nfs_setattr()
622 error = NFS_PROTO(inode)->setattr(dentry, fattr, attr); in nfs_setattr()
624 error = nfs_refresh_inode(inode, fattr); in nfs_setattr()
625 nfs_free_fattr(fattr); in nfs_setattr()
673 struct nfs_fattr *fattr) in nfs_setattr_update_inode() argument
676 nfs_fattr_set_barrier(fattr); in nfs_setattr_update_inode()
679 NFS_I(inode)->attr_gencount = fattr->gencount; in nfs_setattr_update_inode()
696 if (fattr->valid & NFS_ATTR_FATTR_CTIME) in nfs_setattr_update_inode()
697 inode->i_ctime = timespec_to_timespec64(fattr->ctime); in nfs_setattr_update_inode()
707 if (fattr->valid & NFS_ATTR_FATTR_ATIME) in nfs_setattr_update_inode()
708 inode->i_atime = timespec_to_timespec64(fattr->atime); in nfs_setattr_update_inode()
714 if (fattr->valid & NFS_ATTR_FATTR_CTIME) in nfs_setattr_update_inode()
715 inode->i_ctime = timespec_to_timespec64(fattr->ctime); in nfs_setattr_update_inode()
723 if (fattr->valid & NFS_ATTR_FATTR_MTIME) in nfs_setattr_update_inode()
724 inode->i_mtime = timespec_to_timespec64(fattr->mtime); in nfs_setattr_update_inode()
730 if (fattr->valid & NFS_ATTR_FATTR_CTIME) in nfs_setattr_update_inode()
731 inode->i_ctime = timespec_to_timespec64(fattr->ctime); in nfs_setattr_update_inode()
736 if (fattr->valid) in nfs_setattr_update_inode()
737 nfs_update_inode(inode, fattr); in nfs_setattr_update_inode()
1113 struct nfs_fattr *fattr = NULL; in __nfs_revalidate_inode() local
1134 fattr = nfs_alloc_fattr(); in __nfs_revalidate_inode()
1135 if (fattr == NULL) in __nfs_revalidate_inode()
1146 status = NFS_PROTO(inode)->getattr(server, NFS_FH(inode), fattr, in __nfs_revalidate_inode()
1160 status = nfs_refresh_inode(inode, fattr); in __nfs_revalidate_inode()
1171 nfs_setsecurity(inode, fattr, label); in __nfs_revalidate_inode()
1180 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
1407 if ((fattr->valid & NFS_ATTR_FATTR_FILEID) && nfsi->fileid != fattr->fileid) in nfs_check_inode_attributes()
1409 if ((fattr->valid & NFS_ATTR_FATTR_TYPE) && (inode->i_mode & S_IFMT) != (fattr->mode & S_IFMT)) in nfs_check_inode_attributes()
1414 …if ((fattr->valid & NFS_ATTR_FATTR_CHANGE) != 0 && !inode_eq_iversion_raw(inode, fattr->change_att… in nfs_check_inode_attributes()
1419 if ((fattr->valid & NFS_ATTR_FATTR_MTIME) && !timespec_equal(&ts, &fattr->mtime)) in nfs_check_inode_attributes()
1423 if ((fattr->valid & NFS_ATTR_FATTR_CTIME) && !timespec_equal(&ts, &fattr->ctime)) in nfs_check_inode_attributes()
1426 if (fattr->valid & NFS_ATTR_FATTR_SIZE) { in nfs_check_inode_attributes()
1428 new_isize = nfs_size_to_loff_t(fattr->size); in nfs_check_inode_attributes()
1436 …if ((fattr->valid & NFS_ATTR_FATTR_MODE) && (inode->i_mode & S_IALLUGO) != (fattr->mode & S_IALLUG… in nfs_check_inode_attributes()
1440 if ((fattr->valid & NFS_ATTR_FATTR_OWNER) && !uid_eq(inode->i_uid, fattr->uid)) in nfs_check_inode_attributes()
1444 if ((fattr->valid & NFS_ATTR_FATTR_GROUP) && !gid_eq(inode->i_gid, fattr->gid)) in nfs_check_inode_attributes()
1450 if ((fattr->valid & NFS_ATTR_FATTR_NLINK) && inode->i_nlink != fattr->nlink) in nfs_check_inode_attributes()
1454 if ((fattr->valid & NFS_ATTR_FATTR_ATIME) && !timespec_equal(&ts, &fattr->atime)) in nfs_check_inode_attributes()
1460 nfsi->read_cache_jiffies = fattr->time_start; in nfs_check_inode_attributes()
1477 void nfs_fattr_init(struct nfs_fattr *fattr) in nfs_fattr_init() argument
1479 fattr->valid = 0; in nfs_fattr_init()
1480 fattr->time_start = jiffies; in nfs_fattr_init()
1481 fattr->gencount = nfs_inc_attr_generation_counter(); in nfs_fattr_init()
1482 fattr->owner_name = NULL; in nfs_fattr_init()
1483 fattr->group_name = NULL; in nfs_fattr_init()
1498 void nfs_fattr_set_barrier(struct nfs_fattr *fattr) in nfs_fattr_set_barrier() argument
1500 fattr->gencount = nfs_inc_attr_generation_counter(); in nfs_fattr_set_barrier()
1505 struct nfs_fattr *fattr; in nfs_alloc_fattr() local
1507 fattr = kmalloc(sizeof(*fattr), GFP_NOFS); in nfs_alloc_fattr()
1508 if (fattr != NULL) in nfs_alloc_fattr()
1509 nfs_fattr_init(fattr); in nfs_alloc_fattr()
1510 return fattr; in nfs_alloc_fattr()
1607 static int nfs_inode_attrs_need_update(const struct inode *inode, const struct nfs_fattr *fattr) in nfs_inode_attrs_need_update() argument
1611 return ((long)fattr->gencount - (long)nfsi->attr_gencount) > 0 || in nfs_inode_attrs_need_update()
1615 static int nfs_refresh_inode_locked(struct inode *inode, struct nfs_fattr *fattr) in nfs_refresh_inode_locked() argument
1621 if (nfs_inode_attrs_need_update(inode, fattr)) in nfs_refresh_inode_locked()
1622 ret = nfs_update_inode(inode, fattr); in nfs_refresh_inode_locked()
1624 ret = nfs_check_inode_attributes(inode, fattr); in nfs_refresh_inode_locked()
1640 int nfs_refresh_inode(struct inode *inode, struct nfs_fattr *fattr) in nfs_refresh_inode() argument
1644 if ((fattr->valid & NFS_ATTR_FATTR) == 0) in nfs_refresh_inode()
1647 status = nfs_refresh_inode_locked(inode, fattr); in nfs_refresh_inode()
1655 struct nfs_fattr *fattr, unsigned int invalid) in nfs_post_op_update_inode_locked() argument
1660 if ((fattr->valid & NFS_ATTR_FATTR) == 0) in nfs_post_op_update_inode_locked()
1662 return nfs_refresh_inode_locked(inode, fattr); in nfs_post_op_update_inode_locked()
1679 int nfs_post_op_update_inode(struct inode *inode, struct nfs_fattr *fattr) in nfs_post_op_update_inode() argument
1684 nfs_fattr_set_barrier(fattr); in nfs_post_op_update_inode()
1685 status = nfs_post_op_update_inode_locked(inode, fattr, in nfs_post_op_update_inode()
1706 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
1711 if ((fattr->valid & NFS_ATTR_FATTR) == 0 || in nfs_post_op_update_inode_force_wcc_locked()
1712 !nfs_inode_attrs_need_update(inode, fattr)) { in nfs_post_op_update_inode_force_wcc_locked()
1713 fattr->valid &= ~(NFS_ATTR_FATTR_PRECHANGE in nfs_post_op_update_inode_force_wcc_locked()
1719 if ((fattr->valid & NFS_ATTR_FATTR_CHANGE) != 0 && in nfs_post_op_update_inode_force_wcc_locked()
1720 (fattr->valid & NFS_ATTR_FATTR_PRECHANGE) == 0) { in nfs_post_op_update_inode_force_wcc_locked()
1721 fattr->pre_change_attr = inode_peek_iversion_raw(inode); in nfs_post_op_update_inode_force_wcc_locked()
1722 fattr->valid |= NFS_ATTR_FATTR_PRECHANGE; in nfs_post_op_update_inode_force_wcc_locked()
1724 if ((fattr->valid & NFS_ATTR_FATTR_CTIME) != 0 && in nfs_post_op_update_inode_force_wcc_locked()
1725 (fattr->valid & NFS_ATTR_FATTR_PRECTIME) == 0) { in nfs_post_op_update_inode_force_wcc_locked()
1726 fattr->pre_ctime = timespec64_to_timespec(inode->i_ctime); in nfs_post_op_update_inode_force_wcc_locked()
1727 fattr->valid |= NFS_ATTR_FATTR_PRECTIME; in nfs_post_op_update_inode_force_wcc_locked()
1729 if ((fattr->valid & NFS_ATTR_FATTR_MTIME) != 0 && in nfs_post_op_update_inode_force_wcc_locked()
1730 (fattr->valid & NFS_ATTR_FATTR_PREMTIME) == 0) { in nfs_post_op_update_inode_force_wcc_locked()
1731 fattr->pre_mtime = timespec64_to_timespec(inode->i_mtime); in nfs_post_op_update_inode_force_wcc_locked()
1732 fattr->valid |= NFS_ATTR_FATTR_PREMTIME; in nfs_post_op_update_inode_force_wcc_locked()
1734 if ((fattr->valid & NFS_ATTR_FATTR_SIZE) != 0 && in nfs_post_op_update_inode_force_wcc_locked()
1735 (fattr->valid & NFS_ATTR_FATTR_PRESIZE) == 0) { in nfs_post_op_update_inode_force_wcc_locked()
1736 fattr->pre_size = i_size_read(inode); in nfs_post_op_update_inode_force_wcc_locked()
1737 fattr->valid |= NFS_ATTR_FATTR_PRESIZE; in nfs_post_op_update_inode_force_wcc_locked()
1740 status = nfs_post_op_update_inode_locked(inode, fattr, in nfs_post_op_update_inode_force_wcc_locked()
1758 int nfs_post_op_update_inode_force_wcc(struct inode *inode, struct nfs_fattr *fattr) in nfs_post_op_update_inode_force_wcc() argument
1763 nfs_fattr_set_barrier(fattr); in nfs_post_op_update_inode_force_wcc()
1764 status = nfs_post_op_update_inode_force_wcc_locked(inode, fattr); in nfs_post_op_update_inode_force_wcc()
1772 struct nfs_fattr *fattr) in nfs_fileid_valid() argument
1776 if (fattr->valid & NFS_ATTR_FATTR_FILEID) in nfs_fileid_valid()
1777 ret1 = (nfsi->fileid == fattr->fileid); in nfs_fileid_valid()
1778 if (fattr->valid & NFS_ATTR_FATTR_MOUNTED_ON_FILEID) in nfs_fileid_valid()
1779 ret2 = (nfsi->fileid == fattr->mounted_on_fileid); in nfs_fileid_valid()
1795 static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr) in nfs_update_inode() argument
1811 atomic_read(&inode->i_count), fattr->valid); in nfs_update_inode()
1813 if (!nfs_fileid_valid(nfsi, fattr)) { in nfs_update_inode()
1818 (long long)fattr->fileid); in nfs_update_inode()
1825 if ((fattr->valid & NFS_ATTR_FATTR_TYPE) && (inode->i_mode & S_IFMT) != (fattr->mode & S_IFMT)) { in nfs_update_inode()
1830 __func__, inode->i_ino, inode->i_mode, fattr->mode); in nfs_update_inode()
1836 if (S_ISDIR(inode->i_mode) && (fattr->valid & NFS_ATTR_FATTR_FSID) && in nfs_update_inode()
1837 !nfs_fsid_equal(&server->fsid, &fattr->fsid) && in nfs_update_inode()
1839 server->fsid = fattr->fsid; in nfs_update_inode()
1847 nfsi->read_cache_jiffies = fattr->time_start; in nfs_update_inode()
1856 nfs_wcc_update_inode(inode, fattr); in nfs_update_inode()
1864 if (fattr->valid & NFS_ATTR_FATTR_CHANGE) { in nfs_update_inode()
1865 if (!inode_eq_iversion_raw(inode, fattr->change_attr)) { in nfs_update_inode()
1882 inode_set_iversion_raw(inode, fattr->change_attr); in nfs_update_inode()
1893 if (fattr->valid & NFS_ATTR_FATTR_MTIME) { in nfs_update_inode()
1894 inode->i_mtime = timespec_to_timespec64(fattr->mtime); in nfs_update_inode()
1902 if (fattr->valid & NFS_ATTR_FATTR_CTIME) { in nfs_update_inode()
1903 inode->i_ctime = timespec_to_timespec64(fattr->ctime); in nfs_update_inode()
1912 if (fattr->valid & NFS_ATTR_FATTR_SIZE) { in nfs_update_inode()
1913 new_isize = nfs_size_to_loff_t(fattr->size); in nfs_update_inode()
1940 if (fattr->valid & NFS_ATTR_FATTR_ATIME) in nfs_update_inode()
1941 inode->i_atime = timespec_to_timespec64(fattr->atime); in nfs_update_inode()
1949 if (fattr->valid & NFS_ATTR_FATTR_MODE) { in nfs_update_inode()
1950 if ((inode->i_mode & S_IALLUGO) != (fattr->mode & S_IALLUGO)) { in nfs_update_inode()
1952 newmode |= fattr->mode & S_IALLUGO; in nfs_update_inode()
1965 if (fattr->valid & NFS_ATTR_FATTR_OWNER) { in nfs_update_inode()
1966 if (!uid_eq(inode->i_uid, fattr->uid)) { in nfs_update_inode()
1969 inode->i_uid = fattr->uid; in nfs_update_inode()
1979 if (fattr->valid & NFS_ATTR_FATTR_GROUP) { in nfs_update_inode()
1980 if (!gid_eq(inode->i_gid, fattr->gid)) { in nfs_update_inode()
1983 inode->i_gid = fattr->gid; in nfs_update_inode()
1993 if (fattr->valid & NFS_ATTR_FATTR_NLINK) { in nfs_update_inode()
1994 if (inode->i_nlink != fattr->nlink) { in nfs_update_inode()
1997 set_nlink(inode, fattr->nlink); in nfs_update_inode()
2007 if (fattr->valid & NFS_ATTR_FATTR_SPACE_USED) { in nfs_update_inode()
2011 inode->i_blocks = nfs_calc_block_size(fattr->du.nfs3.used); in nfs_update_inode()
2012 } else if (fattr->valid & NFS_ATTR_FATTR_BLOCKS_USED) in nfs_update_inode()
2013 inode->i_blocks = fattr->du.nfs2.blocks; in nfs_update_inode()
2036 if ((long)fattr->gencount - (long)nfsi->attr_gencount > 0) in nfs_update_inode()
2037 nfsi->attr_gencount = fattr->gencount; in nfs_update_inode()