Lines Matching refs:fp

911 	rfs4_file_t *fp = dsp->rds_finfo;
928 struct rfs4_file_t *, fp);
934 mutex_enter(fp->rf_dinfo.rd_recall_lock);
941 fp->rf_dinfo.rd_recall_count--;
942 if (fp->rf_dinfo.rd_recall_count == 0)
943 cv_signal(fp->rf_dinfo.rd_recall_cv);
944 mutex_exit(fp->rf_dinfo.rd_recall_lock);
956 rfs4_file_t *fp;
964 rfs4_file_t *fp = map->fp;
971 rfs4_dbe_lock(fp->rf_dbe);
974 mutex_enter(fp->rf_dinfo.rd_recall_lock);
975 if (fp->rf_dinfo.rd_recall_count != 0) {
976 mutex_exit(fp->rf_dinfo.rd_recall_lock);
977 rfs4_dbe_rele_nolock(fp->rf_dbe);
978 rfs4_dbe_unlock(fp->rf_dbe);
983 mutex_exit(fp->rf_dinfo.rd_recall_lock);
989 for (dsp = list_head(&fp->rf_delegstatelist); dsp != NULL;
990 dsp = list_next(&fp->rf_delegstatelist, dsp)) {
1017 rfs4_dbe_unlock(fp->rf_dbe);
1019 mutex_enter(fp->rf_dinfo.rd_recall_lock);
1026 fp->rf_dinfo.rd_recall_count += recall_count;
1027 while (fp->rf_dinfo.rd_recall_count)
1028 cv_wait(fp->rf_dinfo.rd_recall_cv, fp->rf_dinfo.rd_recall_lock);
1030 mutex_exit(fp->rf_dinfo.rd_recall_lock);
1032 DTRACE_PROBE1(nfss__i__recall_done, rfs4_file_t *, fp);
1033 rfs4_file_rele(fp);
1041 rfs4_recall_file(rfs4_file_t *fp,
1047 rfs4_dbe_lock(fp->rf_dbe);
1048 if (fp->rf_dinfo.rd_dtype == OPEN_DELEGATE_NONE) {
1049 rfs4_dbe_unlock(fp->rf_dbe);
1052 rfs4_dbe_hold(fp->rf_dbe); /* hold for new thread */
1059 if (fp->rf_dinfo.rd_time_recalled == 0)
1060 fp->rf_dinfo.rd_time_recalled = gethrestime_sec();
1061 fp->rf_dinfo.rd_ever_recalled = TRUE; /* used for policy decision */
1064 fp->rf_dinfo.rd_conflicted_client = cp->rc_clientid;
1066 rfs4_dbe_unlock(fp->rf_dbe);
1069 args->fp = fp;
1078 rfs4_recall_deleg(rfs4_file_t *fp, bool_t trunc, rfs4_client_t *cp)
1082 if (fp->rf_dinfo.rd_time_recalled != 0) {
1083 elapsed1 = gethrestime_sec() - fp->rf_dinfo.rd_time_recalled;
1084 elapsed2 = gethrestime_sec() - fp->rf_dinfo.rd_time_lastwrite;
1088 rfs4_revoke_file(fp);
1098 rfs4_recall_file(fp, rfs4_do_cb_recall, trunc, cp);
1142 rfs4_check_delegation(rfs4_state_t *sp, rfs4_file_t *fp)
1144 open_delegation_type4 dtype = fp->rf_dinfo.rd_dtype;
1162 if (fp->rf_access_read > readcnt ||
1163 fp->rf_access_write > writecnt)
1257 rfs4_file_t *fp = sp->rs_finfo;
1262 ASSERT(rfs4_dbe_islocked(fp->rf_dbe));
1277 if (fp->rf_dinfo.rd_hold_grant > 0) {
1293 if (lm_vp_active(fp->rf_vp)) {
1326 if (fp->rf_dinfo.rd_time_rm_delayed > 0 &&
1328 fp->rf_dinfo.rd_time_rm_delayed + rfs4_lease_time)
1329 fp->rf_dinfo.rd_time_rm_delayed = 0;
1338 if (fp->rf_dinfo.rd_time_recalled != 0 ||
1339 fp->rf_dinfo.rd_time_rm_delayed != 0)
1343 dtype = rfs4_check_delegation(sp, fp);
1352 dtype = rfs4_delegation_policy(dtype, &fp->rf_dinfo,
1436 rfs4_check_delegated_byfp(int mode, rfs4_file_t *fp,
1446 rfs4_dbe_lock(fp->rf_dbe);
1447 if (fp->rf_dinfo.rd_dtype == OPEN_DELEGATE_NONE) {
1449 fp->rf_dinfo.rd_hold_grant++;
1450 rfs4_dbe_unlock(fp->rf_dbe);
1458 if (mode == FWRITE || fp->rf_dinfo.rd_dtype == OPEN_DELEGATE_WRITE) {
1460 dsp = list_head(&fp->rf_delegstatelist);
1462 rfs4_dbe_unlock(fp->rf_dbe);
1469 rfs4_dbe_unlock(fp->rf_dbe);
1474 rfs4_dbe_unlock(fp->rf_dbe);
1475 rfs4_recall_deleg(fp, trunc, NULL);
1478 rfs4_dbe_lock(fp->rf_dbe);
1479 fp->rf_dinfo.rd_time_rm_delayed = gethrestime_sec();
1480 rfs4_dbe_unlock(fp->rf_dbe);
1486 rfs4_dbe_lock(fp->rf_dbe);
1487 if (fp->rf_dinfo.rd_dtype != OPEN_DELEGATE_NONE) {
1488 fp->rf_dinfo.rd_time_rm_delayed = gethrestime_sec();
1489 rfs4_dbe_unlock(fp->rf_dbe);
1494 fp->rf_dinfo.rd_hold_grant++;
1495 rfs4_dbe_unlock(fp->rf_dbe);
1507 rfs4_file_t *fp;
1515 fp = rfs4_findfile(vp, NULL, &create);
1516 if (fp != NULL) {
1517 if (rfs4_check_delegated_byfp(mode, fp, trunc,
1521 rfs4_file_rele(fp);
1534 rfs4_clear_dont_grant(rfs4_file_t *fp)
1538 rfs4_dbe_lock(fp->rf_dbe);
1539 ASSERT(fp->rf_dinfo.rd_hold_grant > 0);
1540 fp->rf_dinfo.rd_hold_grant--;
1541 fp->rf_dinfo.rd_time_rm_delayed = 0;
1542 rfs4_dbe_unlock(fp->rf_dbe);
1554 rfs4_file_t *fp = sp->rs_finfo;
1563 ASSERT(rfs4_dbe_islocked(fp->rf_dbe));
1566 if (fp->rf_dinfo.rd_recall_count != 0 ||
1567 (fp->rf_dinfo.rd_dtype == OPEN_DELEGATE_READ &&
1573 rfs4_dbe_unlock(fp->rf_dbe);
1579 rfs4_dbe_lock(fp->rf_dbe);
1590 if (fp->rf_dinfo.rd_hold_grant > 0) {
1609 if (fp->rf_dinfo.rd_recall_count != 0 ||
1610 fp->rf_dinfo.rd_dtype == OPEN_DELEGATE_WRITE ||
1611 (fp->rf_dinfo.rd_dtype == OPEN_DELEGATE_READ &&
1617 vp = fp->rf_vp;
1647 ret = fem_install(vp, deleg_rdops, (void *)fp, OPUNIQ,
1656 (void *)fp);
1686 ret = fem_install(vp, deleg_wrops, (void *)fp, OPUNIQ,
1697 (void *)fp);
1717 list_insert_tail(&fp->rf_delegstatelist, dsp);
1719 dsp->rds_dtype = fp->rf_dinfo.rd_dtype = dtype;
1722 fp->rf_dinfo.rd_time_lastgrant = gethrestime_sec();
1725 fp->rf_dinfo.rd_conflicted_client = 0;
1726 fp->rf_dinfo.rd_ever_recalled = FALSE;
1729 fp->rf_dinfo.rd_rdgrants++;
1731 fp->rf_dinfo.rd_wrgrants++;
1742 rfs4_file_t *fp = dsp->rds_finfo;
1745 rfs4_dbe_lock(fp->rf_dbe);
1749 rfs4_dbe_unlock(fp->rf_dbe);
1754 list_remove(&fp->rf_delegstatelist, dsp);
1756 if (list_is_empty(&fp->rf_delegstatelist)) {
1757 dtypewas = fp->rf_dinfo.rd_dtype;
1758 fp->rf_dinfo.rd_dtype = OPEN_DELEGATE_NONE;
1759 rfs4_dbe_cv_broadcast(fp->rf_dbe);
1762 if (fp->rf_vp != NULL) {
1771 (void) fem_uninstall(fp->rf_vp, deleg_rdops,
1772 (void *)fp);
1773 vn_open_downgrade(fp->rf_vp, FREAD);
1775 (void) fem_uninstall(fp->rf_vp, deleg_wrops,
1776 (void *)fp);
1777 vn_open_downgrade(fp->rf_vp, FREAD|FWRITE);
1784 fp->rf_dinfo.rd_rdgrants--;
1787 fp->rf_dinfo.rd_wrgrants--;
1794 fp->rf_dinfo.rd_time_returned = gethrestime_sec();
1800 if ((fp->rf_dinfo.rd_rdgrants + fp->rf_dinfo.rd_wrgrants) == 0)
1801 fp->rf_dinfo.rd_time_recalled = 0;
1803 rfs4_dbe_unlock(fp->rf_dbe);
1824 rfs4_revoke_file(rfs4_file_t *fp)
1833 rfs4_dbe_lock(fp->rf_dbe);
1834 while (dsp = list_head(&fp->rf_delegstatelist)) {
1836 rfs4_dbe_unlock(fp->rf_dbe);
1839 rfs4_dbe_lock(fp->rf_dbe);
1841 rfs4_dbe_unlock(fp->rf_dbe);
1856 rfs4_file_t *fp = sp->rs_finfo;
1859 ASSERT(rfs4_dbe_islocked(fp->rf_dbe));
1860 for (dsp = list_head(&fp->rf_delegstatelist); dsp != NULL;
1861 dsp = list_next(&fp->rf_delegstatelist, dsp)) {
1889 rfs4_file_t *fp = arg;
1891 rfs4_dbe_hold(fp->rf_dbe);
1897 rfs4_file_t *fp = arg;
1899 rfs4_dbe_rele_nolock(fp->rf_dbe);