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()
447 if (fattr->valid & NFS_ATTR_FATTR_SIZE) in nfs_fhget()
448 inode->i_size = nfs_size_to_loff_t(fattr->size); in nfs_fhget()
452 if (fattr->valid & NFS_ATTR_FATTR_NLINK) in nfs_fhget()
453 set_nlink(inode, fattr->nlink); in nfs_fhget()
456 if (fattr->valid & NFS_ATTR_FATTR_OWNER) in nfs_fhget()
457 inode->i_uid = fattr->uid; in nfs_fhget()
460 if (fattr->valid & NFS_ATTR_FATTR_GROUP) in nfs_fhget()
461 inode->i_gid = fattr->gid; in nfs_fhget()
464 if (fattr->valid & NFS_ATTR_FATTR_BLOCKS_USED) in nfs_fhget()
465 inode->i_blocks = fattr->du.nfs2.blocks; in nfs_fhget()
466 if (fattr->valid & NFS_ATTR_FATTR_SPACE_USED) { in nfs_fhget()
470 inode->i_blocks = nfs_calc_block_size(fattr->du.nfs3.used); in nfs_fhget()
473 nfs_setsecurity(inode, fattr, label); in nfs_fhget()
483 nfs_refresh_inode(inode, fattr); in nfs_fhget()
505 struct nfs_fattr *fattr; in nfs_setattr() local
537 fattr = nfs_alloc_fattr(); in nfs_setattr()
538 if (fattr == NULL) in nfs_setattr()
545 error = NFS_PROTO(inode)->setattr(dentry, fattr, attr); in nfs_setattr()
547 error = nfs_refresh_inode(inode, fattr); in nfs_setattr()
548 nfs_free_fattr(fattr); in nfs_setattr()
594 struct nfs_fattr *fattr) in nfs_setattr_update_inode() argument
597 nfs_fattr_set_barrier(fattr); in nfs_setattr_update_inode()
600 NFS_I(inode)->attr_gencount = fattr->gencount; in nfs_setattr_update_inode()
618 nfs_update_inode(inode, fattr); in nfs_setattr_update_inode()
934 struct nfs_fattr *fattr = NULL; in __nfs_revalidate_inode() local
948 fattr = nfs_alloc_fattr(); in __nfs_revalidate_inode()
949 if (fattr == NULL) in __nfs_revalidate_inode()
960 status = NFS_PROTO(inode)->getattr(server, NFS_FH(inode), fattr, label); in __nfs_revalidate_inode()
973 status = nfs_refresh_inode(inode, fattr); in __nfs_revalidate_inode()
984 nfs_setsecurity(inode, fattr, label); in __nfs_revalidate_inode()
993 nfs_free_fattr(fattr); in __nfs_revalidate_inode()
1170 static unsigned long nfs_wcc_update_inode(struct inode *inode, struct nfs_fattr *fattr) in nfs_wcc_update_inode() argument
1175 if ((fattr->valid & NFS_ATTR_FATTR_PRECHANGE) in nfs_wcc_update_inode()
1176 && (fattr->valid & NFS_ATTR_FATTR_CHANGE) in nfs_wcc_update_inode()
1177 && inode->i_version == fattr->pre_change_attr) { in nfs_wcc_update_inode()
1178 inode->i_version = fattr->change_attr; in nfs_wcc_update_inode()
1184 if ((fattr->valid & NFS_ATTR_FATTR_PRECTIME) in nfs_wcc_update_inode()
1185 && (fattr->valid & NFS_ATTR_FATTR_CTIME) in nfs_wcc_update_inode()
1186 && timespec_equal(&inode->i_ctime, &fattr->pre_ctime)) { in nfs_wcc_update_inode()
1187 memcpy(&inode->i_ctime, &fattr->ctime, sizeof(inode->i_ctime)); in nfs_wcc_update_inode()
1191 if ((fattr->valid & NFS_ATTR_FATTR_PREMTIME) in nfs_wcc_update_inode()
1192 && (fattr->valid & NFS_ATTR_FATTR_MTIME) in nfs_wcc_update_inode()
1193 && timespec_equal(&inode->i_mtime, &fattr->pre_mtime)) { in nfs_wcc_update_inode()
1194 memcpy(&inode->i_mtime, &fattr->mtime, sizeof(inode->i_mtime)); in nfs_wcc_update_inode()
1199 if ((fattr->valid & NFS_ATTR_FATTR_PRESIZE) in nfs_wcc_update_inode()
1200 && (fattr->valid & NFS_ATTR_FATTR_SIZE) in nfs_wcc_update_inode()
1201 && i_size_read(inode) == nfs_size_to_loff_t(fattr->pre_size) in nfs_wcc_update_inode()
1203 i_size_write(inode, nfs_size_to_loff_t(fattr->size)); in nfs_wcc_update_inode()
1219 static int nfs_check_inode_attributes(struct inode *inode, struct nfs_fattr *fattr) in nfs_check_inode_attributes() argument
1229 if ((fattr->valid & NFS_ATTR_FATTR_FILEID) && nfsi->fileid != fattr->fileid) in nfs_check_inode_attributes()
1231 if ((fattr->valid & NFS_ATTR_FATTR_TYPE) && (inode->i_mode & S_IFMT) != (fattr->mode & S_IFMT)) in nfs_check_inode_attributes()
1234 if ((fattr->valid & NFS_ATTR_FATTR_CHANGE) != 0 && in nfs_check_inode_attributes()
1235 inode->i_version != fattr->change_attr) in nfs_check_inode_attributes()
1239 if ((fattr->valid & NFS_ATTR_FATTR_MTIME) && !timespec_equal(&inode->i_mtime, &fattr->mtime)) in nfs_check_inode_attributes()
1242 if (fattr->valid & NFS_ATTR_FATTR_SIZE) { in nfs_check_inode_attributes()
1244 new_isize = nfs_size_to_loff_t(fattr->size); in nfs_check_inode_attributes()
1252 …if ((fattr->valid & NFS_ATTR_FATTR_MODE) && (inode->i_mode & S_IALLUGO) != (fattr->mode & S_IALLUG… in nfs_check_inode_attributes()
1254 if ((fattr->valid & NFS_ATTR_FATTR_OWNER) && !uid_eq(inode->i_uid, fattr->uid)) in nfs_check_inode_attributes()
1256 if ((fattr->valid & NFS_ATTR_FATTR_GROUP) && !gid_eq(inode->i_gid, fattr->gid)) in nfs_check_inode_attributes()
1260 if ((fattr->valid & NFS_ATTR_FATTR_NLINK) && inode->i_nlink != fattr->nlink) in nfs_check_inode_attributes()
1263 if ((fattr->valid & NFS_ATTR_FATTR_ATIME) && !timespec_equal(&inode->i_atime, &fattr->atime)) in nfs_check_inode_attributes()
1269 nfsi->read_cache_jiffies = fattr->time_start; in nfs_check_inode_attributes()
1286 void nfs_fattr_init(struct nfs_fattr *fattr) in nfs_fattr_init() argument
1288 fattr->valid = 0; in nfs_fattr_init()
1289 fattr->time_start = jiffies; in nfs_fattr_init()
1290 fattr->gencount = nfs_inc_attr_generation_counter(); in nfs_fattr_init()
1291 fattr->owner_name = NULL; in nfs_fattr_init()
1292 fattr->group_name = NULL; in nfs_fattr_init()
1307 void nfs_fattr_set_barrier(struct nfs_fattr *fattr) in nfs_fattr_set_barrier() argument
1309 fattr->gencount = nfs_inc_attr_generation_counter(); in nfs_fattr_set_barrier()
1314 struct nfs_fattr *fattr; in nfs_alloc_fattr() local
1316 fattr = kmalloc(sizeof(*fattr), GFP_NOFS); in nfs_alloc_fattr()
1317 if (fattr != NULL) in nfs_alloc_fattr()
1318 nfs_fattr_init(fattr); in nfs_alloc_fattr()
1319 return fattr; in nfs_alloc_fattr()
1416 static int nfs_inode_attrs_need_update(const struct inode *inode, const struct nfs_fattr *fattr) in nfs_inode_attrs_need_update() argument
1420 return ((long)fattr->gencount - (long)nfsi->attr_gencount) > 0 || in nfs_inode_attrs_need_update()
1429 struct nfs_fattr *fattr) in nfs_inode_attrs_handle_layoutcommit() argument
1432 fattr->valid &= ~(NFS_ATTR_FATTR_CHANGE | in nfs_inode_attrs_handle_layoutcommit()
1438 static int nfs_refresh_inode_locked(struct inode *inode, struct nfs_fattr *fattr) in nfs_refresh_inode_locked() argument
1444 nfs_inode_attrs_handle_layoutcommit(inode, fattr); in nfs_refresh_inode_locked()
1446 if (nfs_inode_attrs_need_update(inode, fattr)) in nfs_refresh_inode_locked()
1447 ret = nfs_update_inode(inode, fattr); in nfs_refresh_inode_locked()
1449 ret = nfs_check_inode_attributes(inode, fattr); in nfs_refresh_inode_locked()
1465 int nfs_refresh_inode(struct inode *inode, struct nfs_fattr *fattr) in nfs_refresh_inode() argument
1469 if ((fattr->valid & NFS_ATTR_FATTR) == 0) in nfs_refresh_inode()
1472 status = nfs_refresh_inode_locked(inode, fattr); in nfs_refresh_inode()
1479 static int nfs_post_op_update_inode_locked(struct inode *inode, struct nfs_fattr *fattr) in nfs_post_op_update_inode_locked() argument
1493 if ((fattr->valid & NFS_ATTR_FATTR) == 0) in nfs_post_op_update_inode_locked()
1495 return nfs_refresh_inode_locked(inode, fattr); in nfs_post_op_update_inode_locked()
1512 int nfs_post_op_update_inode(struct inode *inode, struct nfs_fattr *fattr) in nfs_post_op_update_inode() argument
1517 nfs_fattr_set_barrier(fattr); in nfs_post_op_update_inode()
1518 status = nfs_post_op_update_inode_locked(inode, fattr); in nfs_post_op_update_inode()
1536 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
1541 if ((fattr->valid & NFS_ATTR_FATTR) == 0 || in nfs_post_op_update_inode_force_wcc_locked()
1542 !nfs_inode_attrs_need_update(inode, fattr)) { in nfs_post_op_update_inode_force_wcc_locked()
1543 fattr->valid &= ~(NFS_ATTR_FATTR_PRECHANGE in nfs_post_op_update_inode_force_wcc_locked()
1549 if ((fattr->valid & NFS_ATTR_FATTR_CHANGE) != 0 && in nfs_post_op_update_inode_force_wcc_locked()
1550 (fattr->valid & NFS_ATTR_FATTR_PRECHANGE) == 0) { in nfs_post_op_update_inode_force_wcc_locked()
1551 fattr->pre_change_attr = inode->i_version; in nfs_post_op_update_inode_force_wcc_locked()
1552 fattr->valid |= NFS_ATTR_FATTR_PRECHANGE; in nfs_post_op_update_inode_force_wcc_locked()
1554 if ((fattr->valid & NFS_ATTR_FATTR_CTIME) != 0 && in nfs_post_op_update_inode_force_wcc_locked()
1555 (fattr->valid & NFS_ATTR_FATTR_PRECTIME) == 0) { in nfs_post_op_update_inode_force_wcc_locked()
1556 memcpy(&fattr->pre_ctime, &inode->i_ctime, sizeof(fattr->pre_ctime)); in nfs_post_op_update_inode_force_wcc_locked()
1557 fattr->valid |= NFS_ATTR_FATTR_PRECTIME; in nfs_post_op_update_inode_force_wcc_locked()
1559 if ((fattr->valid & NFS_ATTR_FATTR_MTIME) != 0 && in nfs_post_op_update_inode_force_wcc_locked()
1560 (fattr->valid & NFS_ATTR_FATTR_PREMTIME) == 0) { in nfs_post_op_update_inode_force_wcc_locked()
1561 memcpy(&fattr->pre_mtime, &inode->i_mtime, sizeof(fattr->pre_mtime)); in nfs_post_op_update_inode_force_wcc_locked()
1562 fattr->valid |= NFS_ATTR_FATTR_PREMTIME; in nfs_post_op_update_inode_force_wcc_locked()
1564 if ((fattr->valid & NFS_ATTR_FATTR_SIZE) != 0 && in nfs_post_op_update_inode_force_wcc_locked()
1565 (fattr->valid & NFS_ATTR_FATTR_PRESIZE) == 0) { in nfs_post_op_update_inode_force_wcc_locked()
1566 fattr->pre_size = i_size_read(inode); in nfs_post_op_update_inode_force_wcc_locked()
1567 fattr->valid |= NFS_ATTR_FATTR_PRESIZE; in nfs_post_op_update_inode_force_wcc_locked()
1570 status = nfs_post_op_update_inode_locked(inode, fattr); in nfs_post_op_update_inode_force_wcc_locked()
1585 int nfs_post_op_update_inode_force_wcc(struct inode *inode, struct nfs_fattr *fattr) in nfs_post_op_update_inode_force_wcc() argument
1590 nfs_fattr_set_barrier(fattr); in nfs_post_op_update_inode_force_wcc()
1591 status = nfs_post_op_update_inode_force_wcc_locked(inode, fattr); in nfs_post_op_update_inode_force_wcc()
1599 struct nfs_fattr *fattr) in nfs_fileid_valid() argument
1603 if (fattr->valid & NFS_ATTR_FATTR_FILEID) in nfs_fileid_valid()
1604 ret1 = (nfsi->fileid == fattr->fileid); in nfs_fileid_valid()
1605 if (fattr->valid & NFS_ATTR_FATTR_MOUNTED_ON_FILEID) in nfs_fileid_valid()
1606 ret2 = (nfsi->fileid == fattr->mounted_on_fileid); in nfs_fileid_valid()
1622 static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr) in nfs_update_inode() argument
1635 atomic_read(&inode->i_count), fattr->valid); in nfs_update_inode()
1637 if (!nfs_fileid_valid(nfsi, fattr)) { in nfs_update_inode()
1642 (long long)fattr->fileid); in nfs_update_inode()
1649 if ((fattr->valid & NFS_ATTR_FATTR_TYPE) && (inode->i_mode & S_IFMT) != (fattr->mode & S_IFMT)) { in nfs_update_inode()
1654 __func__, inode->i_ino, inode->i_mode, fattr->mode); in nfs_update_inode()
1660 if (S_ISDIR(inode->i_mode) && (fattr->valid & NFS_ATTR_FATTR_FSID) && in nfs_update_inode()
1661 !nfs_fsid_equal(&server->fsid, &fattr->fsid) && in nfs_update_inode()
1663 server->fsid = fattr->fsid; in nfs_update_inode()
1668 nfsi->read_cache_jiffies = fattr->time_start; in nfs_update_inode()
1677 invalid |= nfs_wcc_update_inode(inode, fattr); in nfs_update_inode()
1680 if (fattr->valid & NFS_ATTR_FATTR_CHANGE) { in nfs_update_inode()
1681 if (inode->i_version != fattr->change_attr) { in nfs_update_inode()
1690 inode->i_version = fattr->change_attr; in nfs_update_inode()
1697 if (fattr->valid & NFS_ATTR_FATTR_MTIME) { in nfs_update_inode()
1698 memcpy(&inode->i_mtime, &fattr->mtime, sizeof(inode->i_mtime)); in nfs_update_inode()
1706 if (fattr->valid & NFS_ATTR_FATTR_CTIME) { in nfs_update_inode()
1707 memcpy(&inode->i_ctime, &fattr->ctime, sizeof(inode->i_ctime)); in nfs_update_inode()
1716 if (fattr->valid & NFS_ATTR_FATTR_SIZE) { in nfs_update_inode()
1717 new_isize = nfs_size_to_loff_t(fattr->size); in nfs_update_inode()
1742 if (fattr->valid & NFS_ATTR_FATTR_ATIME) in nfs_update_inode()
1743 memcpy(&inode->i_atime, &fattr->atime, sizeof(inode->i_atime)); in nfs_update_inode()
1751 if (fattr->valid & NFS_ATTR_FATTR_MODE) { in nfs_update_inode()
1752 if ((inode->i_mode & S_IALLUGO) != (fattr->mode & S_IALLUGO)) { in nfs_update_inode()
1754 newmode |= fattr->mode & S_IALLUGO; in nfs_update_inode()
1767 if (fattr->valid & NFS_ATTR_FATTR_OWNER) { in nfs_update_inode()
1768 if (!uid_eq(inode->i_uid, fattr->uid)) { in nfs_update_inode()
1770 inode->i_uid = fattr->uid; in nfs_update_inode()
1781 if (fattr->valid & NFS_ATTR_FATTR_GROUP) { in nfs_update_inode()
1782 if (!gid_eq(inode->i_gid, fattr->gid)) { in nfs_update_inode()
1784 inode->i_gid = fattr->gid; in nfs_update_inode()
1795 if (fattr->valid & NFS_ATTR_FATTR_NLINK) { in nfs_update_inode()
1796 if (inode->i_nlink != fattr->nlink) { in nfs_update_inode()
1800 set_nlink(inode, fattr->nlink); in nfs_update_inode()
1809 if (fattr->valid & NFS_ATTR_FATTR_SPACE_USED) { in nfs_update_inode()
1813 inode->i_blocks = nfs_calc_block_size(fattr->du.nfs3.used); in nfs_update_inode()
1814 } else if (fattr->valid & NFS_ATTR_FATTR_BLOCKS_USED) in nfs_update_inode()
1815 inode->i_blocks = fattr->du.nfs2.blocks; in nfs_update_inode()
1837 if ((long)fattr->gencount - (long)nfsi->attr_gencount > 0) in nfs_update_inode()
1838 nfsi->attr_gencount = fattr->gencount; in nfs_update_inode()