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()
245 struct nfs_fattr *fattr; member
259 struct nfs_fattr *fattr = desc->fattr; in nfs_find_actor() local
261 if (NFS_FILEID(inode) != fattr->fileid) in nfs_find_actor()
263 if ((S_IFMT & inode->i_mode) != (S_IFMT & fattr->mode)) in nfs_find_actor()
276 struct nfs_fattr *fattr = desc->fattr; in nfs_init_locked() local
278 set_nfs_fileid(inode, fattr->fileid); in nfs_init_locked()
291 void nfs_setsecurity(struct inode *inode, struct nfs_fattr *fattr, in nfs_setsecurity() argument
299 if ((fattr->valid & NFS_ATTR_FATTR_V4_SECURITY_LABEL) && inode->i_security) { in nfs_setsecurity()
338 void nfs_setsecurity(struct inode *inode, struct nfs_fattr *fattr, in nfs_setsecurity() argument
350 nfs_fhget(struct super_block *sb, struct nfs_fh *fh, struct nfs_fattr *fattr, struct nfs4_label *la… in nfs_fhget() argument
354 .fattr = fattr in nfs_fhget()
359 nfs_attr_check_mountpoint(sb, fattr); in nfs_fhget()
361 if (nfs_attr_use_mounted_on_fileid(fattr)) in nfs_fhget()
362 fattr->fileid = fattr->mounted_on_fileid; in nfs_fhget()
363 else if ((fattr->valid & NFS_ATTR_FATTR_FILEID) == 0) in nfs_fhget()
365 if ((fattr->valid & NFS_ATTR_FATTR_TYPE) == 0) in nfs_fhget()
368 hash = nfs_fattr_to_ino_t(fattr); in nfs_fhget()
386 inode->i_mode = fattr->mode; in nfs_fhget()
387 if ((fattr->valid & NFS_ATTR_FATTR_MODE) == 0 in nfs_fhget()
402 if (fattr->valid & NFS_ATTR_FATTR_MOUNTPOINT || in nfs_fhget()
403 fattr->valid & NFS_ATTR_FATTR_V4_REFERRAL) { in nfs_fhget()
404 if (fattr->valid & NFS_ATTR_FATTR_V4_REFERRAL) in nfs_fhget()
414 init_special_inode(inode, inode->i_mode, fattr->rdev); in nfs_fhget()
429 nfsi->read_cache_jiffies = fattr->time_start; in nfs_fhget()
430 nfsi->attr_gencount = fattr->gencount; in nfs_fhget()
431 if (fattr->valid & NFS_ATTR_FATTR_ATIME) in nfs_fhget()
432 inode->i_atime = fattr->atime; in nfs_fhget()
435 if (fattr->valid & NFS_ATTR_FATTR_MTIME) in nfs_fhget()
436 inode->i_mtime = fattr->mtime; in nfs_fhget()
439 if (fattr->valid & NFS_ATTR_FATTR_CTIME) in nfs_fhget()
440 inode->i_ctime = fattr->ctime; in nfs_fhget()
443 if (fattr->valid & NFS_ATTR_FATTR_CHANGE) in nfs_fhget()
444 inode->i_version = fattr->change_attr; in nfs_fhget()
448 if (fattr->valid & NFS_ATTR_FATTR_SIZE) in nfs_fhget()
449 inode->i_size = nfs_size_to_loff_t(fattr->size); in nfs_fhget()
453 if (fattr->valid & NFS_ATTR_FATTR_NLINK) in nfs_fhget()
454 set_nlink(inode, fattr->nlink); in nfs_fhget()
457 if (fattr->valid & NFS_ATTR_FATTR_OWNER) in nfs_fhget()
458 inode->i_uid = fattr->uid; in nfs_fhget()
461 if (fattr->valid & NFS_ATTR_FATTR_GROUP) in nfs_fhget()
462 inode->i_gid = fattr->gid; in nfs_fhget()
465 if (fattr->valid & NFS_ATTR_FATTR_BLOCKS_USED) in nfs_fhget()
466 inode->i_blocks = fattr->du.nfs2.blocks; in nfs_fhget()
467 if (fattr->valid & NFS_ATTR_FATTR_SPACE_USED) { in nfs_fhget()
471 inode->i_blocks = nfs_calc_block_size(fattr->du.nfs3.used); in nfs_fhget()
474 nfs_setsecurity(inode, fattr, label); in nfs_fhget()
484 nfs_refresh_inode(inode, fattr); in nfs_fhget()
506 struct nfs_fattr *fattr; in nfs_setattr() local
537 fattr = nfs_alloc_fattr(); in nfs_setattr()
538 if (fattr == NULL) { in nfs_setattr()
548 error = NFS_PROTO(inode)->setattr(dentry, fattr, attr); in nfs_setattr()
550 error = nfs_refresh_inode(inode, fattr); in nfs_setattr()
551 nfs_free_fattr(fattr); in nfs_setattr()
597 struct nfs_fattr *fattr) in nfs_setattr_update_inode() argument
600 nfs_fattr_set_barrier(fattr); in nfs_setattr_update_inode()
603 NFS_I(inode)->attr_gencount = fattr->gencount; in nfs_setattr_update_inode()
621 if (fattr->valid) in nfs_setattr_update_inode()
622 nfs_update_inode(inode, fattr); in nfs_setattr_update_inode()
948 struct nfs_fattr *fattr = NULL; in __nfs_revalidate_inode() local
962 fattr = nfs_alloc_fattr(); in __nfs_revalidate_inode()
963 if (fattr == NULL) in __nfs_revalidate_inode()
974 status = NFS_PROTO(inode)->getattr(server, NFS_FH(inode), fattr, label); in __nfs_revalidate_inode()
987 status = nfs_refresh_inode(inode, fattr); in __nfs_revalidate_inode()
998 nfs_setsecurity(inode, fattr, label); in __nfs_revalidate_inode()
1007 nfs_free_fattr(fattr); in __nfs_revalidate_inode()
1184 static unsigned long nfs_wcc_update_inode(struct inode *inode, struct nfs_fattr *fattr) in nfs_wcc_update_inode() argument
1189 if ((fattr->valid & NFS_ATTR_FATTR_PRECHANGE) in nfs_wcc_update_inode()
1190 && (fattr->valid & NFS_ATTR_FATTR_CHANGE) in nfs_wcc_update_inode()
1191 && inode->i_version == fattr->pre_change_attr) { in nfs_wcc_update_inode()
1192 inode->i_version = fattr->change_attr; in nfs_wcc_update_inode()
1198 if ((fattr->valid & NFS_ATTR_FATTR_PRECTIME) in nfs_wcc_update_inode()
1199 && (fattr->valid & NFS_ATTR_FATTR_CTIME) in nfs_wcc_update_inode()
1200 && timespec_equal(&inode->i_ctime, &fattr->pre_ctime)) { in nfs_wcc_update_inode()
1201 memcpy(&inode->i_ctime, &fattr->ctime, sizeof(inode->i_ctime)); in nfs_wcc_update_inode()
1205 if ((fattr->valid & NFS_ATTR_FATTR_PREMTIME) in nfs_wcc_update_inode()
1206 && (fattr->valid & NFS_ATTR_FATTR_MTIME) in nfs_wcc_update_inode()
1207 && timespec_equal(&inode->i_mtime, &fattr->pre_mtime)) { in nfs_wcc_update_inode()
1208 memcpy(&inode->i_mtime, &fattr->mtime, sizeof(inode->i_mtime)); in nfs_wcc_update_inode()
1213 if ((fattr->valid & NFS_ATTR_FATTR_PRESIZE) in nfs_wcc_update_inode()
1214 && (fattr->valid & NFS_ATTR_FATTR_SIZE) in nfs_wcc_update_inode()
1215 && i_size_read(inode) == nfs_size_to_loff_t(fattr->pre_size) in nfs_wcc_update_inode()
1217 i_size_write(inode, nfs_size_to_loff_t(fattr->size)); in nfs_wcc_update_inode()
1233 static int nfs_check_inode_attributes(struct inode *inode, struct nfs_fattr *fattr) in nfs_check_inode_attributes() argument
1243 if ((fattr->valid & NFS_ATTR_FATTR_FILEID) && nfsi->fileid != fattr->fileid) in nfs_check_inode_attributes()
1245 if ((fattr->valid & NFS_ATTR_FATTR_TYPE) && (inode->i_mode & S_IFMT) != (fattr->mode & S_IFMT)) in nfs_check_inode_attributes()
1248 if ((fattr->valid & NFS_ATTR_FATTR_CHANGE) != 0 && in nfs_check_inode_attributes()
1249 inode->i_version != fattr->change_attr) in nfs_check_inode_attributes()
1253 if ((fattr->valid & NFS_ATTR_FATTR_MTIME) && !timespec_equal(&inode->i_mtime, &fattr->mtime)) in nfs_check_inode_attributes()
1256 if (fattr->valid & NFS_ATTR_FATTR_SIZE) { in nfs_check_inode_attributes()
1258 new_isize = nfs_size_to_loff_t(fattr->size); in nfs_check_inode_attributes()
1266 …if ((fattr->valid & NFS_ATTR_FATTR_MODE) && (inode->i_mode & S_IALLUGO) != (fattr->mode & S_IALLUG… in nfs_check_inode_attributes()
1268 if ((fattr->valid & NFS_ATTR_FATTR_OWNER) && !uid_eq(inode->i_uid, fattr->uid)) in nfs_check_inode_attributes()
1270 if ((fattr->valid & NFS_ATTR_FATTR_GROUP) && !gid_eq(inode->i_gid, fattr->gid)) in nfs_check_inode_attributes()
1274 if ((fattr->valid & NFS_ATTR_FATTR_NLINK) && inode->i_nlink != fattr->nlink) in nfs_check_inode_attributes()
1277 if ((fattr->valid & NFS_ATTR_FATTR_ATIME) && !timespec_equal(&inode->i_atime, &fattr->atime)) in nfs_check_inode_attributes()
1283 nfsi->read_cache_jiffies = fattr->time_start; in nfs_check_inode_attributes()
1300 void nfs_fattr_init(struct nfs_fattr *fattr) in nfs_fattr_init() argument
1302 fattr->valid = 0; in nfs_fattr_init()
1303 fattr->time_start = jiffies; in nfs_fattr_init()
1304 fattr->gencount = nfs_inc_attr_generation_counter(); in nfs_fattr_init()
1305 fattr->owner_name = NULL; in nfs_fattr_init()
1306 fattr->group_name = NULL; in nfs_fattr_init()
1321 void nfs_fattr_set_barrier(struct nfs_fattr *fattr) in nfs_fattr_set_barrier() argument
1323 fattr->gencount = nfs_inc_attr_generation_counter(); in nfs_fattr_set_barrier()
1328 struct nfs_fattr *fattr; in nfs_alloc_fattr() local
1330 fattr = kmalloc(sizeof(*fattr), GFP_NOFS); in nfs_alloc_fattr()
1331 if (fattr != NULL) in nfs_alloc_fattr()
1332 nfs_fattr_init(fattr); in nfs_alloc_fattr()
1333 return fattr; in nfs_alloc_fattr()
1430 static int nfs_inode_attrs_need_update(const struct inode *inode, const struct nfs_fattr *fattr) in nfs_inode_attrs_need_update() argument
1434 return ((long)fattr->gencount - (long)nfsi->attr_gencount) > 0 || in nfs_inode_attrs_need_update()
1443 struct nfs_fattr *fattr) in nfs_inode_attrs_handle_layoutcommit() argument
1446 fattr->valid &= ~(NFS_ATTR_FATTR_CHANGE | in nfs_inode_attrs_handle_layoutcommit()
1452 static int nfs_refresh_inode_locked(struct inode *inode, struct nfs_fattr *fattr) in nfs_refresh_inode_locked() argument
1458 nfs_inode_attrs_handle_layoutcommit(inode, fattr); in nfs_refresh_inode_locked()
1460 if (nfs_inode_attrs_need_update(inode, fattr)) in nfs_refresh_inode_locked()
1461 ret = nfs_update_inode(inode, fattr); in nfs_refresh_inode_locked()
1463 ret = nfs_check_inode_attributes(inode, fattr); in nfs_refresh_inode_locked()
1479 int nfs_refresh_inode(struct inode *inode, struct nfs_fattr *fattr) in nfs_refresh_inode() argument
1483 if ((fattr->valid & NFS_ATTR_FATTR) == 0) in nfs_refresh_inode()
1486 status = nfs_refresh_inode_locked(inode, fattr); in nfs_refresh_inode()
1493 static int nfs_post_op_update_inode_locked(struct inode *inode, struct nfs_fattr *fattr) in nfs_post_op_update_inode_locked() argument
1507 if ((fattr->valid & NFS_ATTR_FATTR) == 0) in nfs_post_op_update_inode_locked()
1509 return nfs_refresh_inode_locked(inode, fattr); in nfs_post_op_update_inode_locked()
1526 int nfs_post_op_update_inode(struct inode *inode, struct nfs_fattr *fattr) in nfs_post_op_update_inode() argument
1531 nfs_fattr_set_barrier(fattr); in nfs_post_op_update_inode()
1532 status = nfs_post_op_update_inode_locked(inode, fattr); in nfs_post_op_update_inode()
1550 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
1555 if ((fattr->valid & NFS_ATTR_FATTR) == 0 || in nfs_post_op_update_inode_force_wcc_locked()
1556 !nfs_inode_attrs_need_update(inode, fattr)) { in nfs_post_op_update_inode_force_wcc_locked()
1557 fattr->valid &= ~(NFS_ATTR_FATTR_PRECHANGE in nfs_post_op_update_inode_force_wcc_locked()
1563 if ((fattr->valid & NFS_ATTR_FATTR_CHANGE) != 0 && in nfs_post_op_update_inode_force_wcc_locked()
1564 (fattr->valid & NFS_ATTR_FATTR_PRECHANGE) == 0) { in nfs_post_op_update_inode_force_wcc_locked()
1565 fattr->pre_change_attr = inode->i_version; in nfs_post_op_update_inode_force_wcc_locked()
1566 fattr->valid |= NFS_ATTR_FATTR_PRECHANGE; in nfs_post_op_update_inode_force_wcc_locked()
1568 if ((fattr->valid & NFS_ATTR_FATTR_CTIME) != 0 && in nfs_post_op_update_inode_force_wcc_locked()
1569 (fattr->valid & NFS_ATTR_FATTR_PRECTIME) == 0) { in nfs_post_op_update_inode_force_wcc_locked()
1570 memcpy(&fattr->pre_ctime, &inode->i_ctime, sizeof(fattr->pre_ctime)); in nfs_post_op_update_inode_force_wcc_locked()
1571 fattr->valid |= NFS_ATTR_FATTR_PRECTIME; in nfs_post_op_update_inode_force_wcc_locked()
1573 if ((fattr->valid & NFS_ATTR_FATTR_MTIME) != 0 && in nfs_post_op_update_inode_force_wcc_locked()
1574 (fattr->valid & NFS_ATTR_FATTR_PREMTIME) == 0) { in nfs_post_op_update_inode_force_wcc_locked()
1575 memcpy(&fattr->pre_mtime, &inode->i_mtime, sizeof(fattr->pre_mtime)); in nfs_post_op_update_inode_force_wcc_locked()
1576 fattr->valid |= NFS_ATTR_FATTR_PREMTIME; in nfs_post_op_update_inode_force_wcc_locked()
1578 if ((fattr->valid & NFS_ATTR_FATTR_SIZE) != 0 && in nfs_post_op_update_inode_force_wcc_locked()
1579 (fattr->valid & NFS_ATTR_FATTR_PRESIZE) == 0) { in nfs_post_op_update_inode_force_wcc_locked()
1580 fattr->pre_size = i_size_read(inode); in nfs_post_op_update_inode_force_wcc_locked()
1581 fattr->valid |= NFS_ATTR_FATTR_PRESIZE; in nfs_post_op_update_inode_force_wcc_locked()
1584 status = nfs_post_op_update_inode_locked(inode, fattr); in nfs_post_op_update_inode_force_wcc_locked()
1599 int nfs_post_op_update_inode_force_wcc(struct inode *inode, struct nfs_fattr *fattr) in nfs_post_op_update_inode_force_wcc() argument
1604 nfs_fattr_set_barrier(fattr); in nfs_post_op_update_inode_force_wcc()
1605 status = nfs_post_op_update_inode_force_wcc_locked(inode, fattr); in nfs_post_op_update_inode_force_wcc()
1613 struct nfs_fattr *fattr) in nfs_fileid_valid() argument
1617 if (fattr->valid & NFS_ATTR_FATTR_FILEID) in nfs_fileid_valid()
1618 ret1 = (nfsi->fileid == fattr->fileid); in nfs_fileid_valid()
1619 if (fattr->valid & NFS_ATTR_FATTR_MOUNTED_ON_FILEID) in nfs_fileid_valid()
1620 ret2 = (nfsi->fileid == fattr->mounted_on_fileid); in nfs_fileid_valid()
1636 static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr) in nfs_update_inode() argument
1649 atomic_read(&inode->i_count), fattr->valid); in nfs_update_inode()
1651 if (!nfs_fileid_valid(nfsi, fattr)) { in nfs_update_inode()
1656 (long long)fattr->fileid); in nfs_update_inode()
1663 if ((fattr->valid & NFS_ATTR_FATTR_TYPE) && (inode->i_mode & S_IFMT) != (fattr->mode & S_IFMT)) { in nfs_update_inode()
1668 __func__, inode->i_ino, inode->i_mode, fattr->mode); in nfs_update_inode()
1674 if (S_ISDIR(inode->i_mode) && (fattr->valid & NFS_ATTR_FATTR_FSID) && in nfs_update_inode()
1675 !nfs_fsid_equal(&server->fsid, &fattr->fsid) && in nfs_update_inode()
1677 server->fsid = fattr->fsid; in nfs_update_inode()
1682 nfsi->read_cache_jiffies = fattr->time_start; in nfs_update_inode()
1691 invalid |= nfs_wcc_update_inode(inode, fattr); in nfs_update_inode()
1694 if (fattr->valid & NFS_ATTR_FATTR_CHANGE) { in nfs_update_inode()
1695 if (inode->i_version != fattr->change_attr) { in nfs_update_inode()
1704 inode->i_version = fattr->change_attr; in nfs_update_inode()
1711 if (fattr->valid & NFS_ATTR_FATTR_MTIME) { in nfs_update_inode()
1712 memcpy(&inode->i_mtime, &fattr->mtime, sizeof(inode->i_mtime)); in nfs_update_inode()
1720 if (fattr->valid & NFS_ATTR_FATTR_CTIME) { in nfs_update_inode()
1721 memcpy(&inode->i_ctime, &fattr->ctime, sizeof(inode->i_ctime)); in nfs_update_inode()
1730 if (fattr->valid & NFS_ATTR_FATTR_SIZE) { in nfs_update_inode()
1731 new_isize = nfs_size_to_loff_t(fattr->size); in nfs_update_inode()
1756 if (fattr->valid & NFS_ATTR_FATTR_ATIME) in nfs_update_inode()
1757 memcpy(&inode->i_atime, &fattr->atime, sizeof(inode->i_atime)); in nfs_update_inode()
1765 if (fattr->valid & NFS_ATTR_FATTR_MODE) { in nfs_update_inode()
1766 if ((inode->i_mode & S_IALLUGO) != (fattr->mode & S_IALLUGO)) { in nfs_update_inode()
1768 newmode |= fattr->mode & S_IALLUGO; in nfs_update_inode()
1781 if (fattr->valid & NFS_ATTR_FATTR_OWNER) { in nfs_update_inode()
1782 if (!uid_eq(inode->i_uid, fattr->uid)) { in nfs_update_inode()
1784 inode->i_uid = fattr->uid; in nfs_update_inode()
1795 if (fattr->valid & NFS_ATTR_FATTR_GROUP) { in nfs_update_inode()
1796 if (!gid_eq(inode->i_gid, fattr->gid)) { in nfs_update_inode()
1798 inode->i_gid = fattr->gid; in nfs_update_inode()
1809 if (fattr->valid & NFS_ATTR_FATTR_NLINK) { in nfs_update_inode()
1810 if (inode->i_nlink != fattr->nlink) { in nfs_update_inode()
1814 set_nlink(inode, fattr->nlink); in nfs_update_inode()
1823 if (fattr->valid & NFS_ATTR_FATTR_SPACE_USED) { in nfs_update_inode()
1827 inode->i_blocks = nfs_calc_block_size(fattr->du.nfs3.used); in nfs_update_inode()
1828 } else if (fattr->valid & NFS_ATTR_FATTR_BLOCKS_USED) in nfs_update_inode()
1829 inode->i_blocks = fattr->du.nfs2.blocks; in nfs_update_inode()
1851 if ((long)fattr->gencount - (long)nfsi->attr_gencount > 0) in nfs_update_inode()
1852 nfsi->attr_gencount = fattr->gencount; in nfs_update_inode()