Lines Matching refs:mi

267 static void	failover_newserver(mntinfo_t *mi);
268 static void failover_thread(mntinfo_t *mi);
482 acl_clget(mntinfo_t *mi, servinfo_t *svp, cred_t *cr, CLIENT **newcl,
492 ci.cl_readsize = mi->mi_tsize;
500 if (!(mi->mi_flags & MI_HARD) && (mi->mi_flags & MI_DOWN))
503 ci.cl_retrans = mi->mi_retrans;
506 ci.cl_vers = mi->mi_vers;
507 ci.cl_flags = mi->mi_flags;
524 if (FS_OR_ZONE_GONE(mi->mi_vfsp)) {
530 if (!(mi->mi_flags & MI_HARD))
534 if (FAILOVER_MOUNT(mi))
543 nfs_clget(mntinfo_t *mi, servinfo_t *svp, cred_t *cr, CLIENT **newcl,
553 ci.cl_readsize = mi->mi_tsize;
561 if (!(mi->mi_flags & MI_HARD) && (mi->mi_flags & MI_DOWN))
564 ci.cl_retrans = mi->mi_retrans;
566 ci.cl_prog = mi->mi_prog;
567 ci.cl_vers = mi->mi_vers;
568 ci.cl_flags = mi->mi_flags;
585 if (FS_OR_ZONE_GONE(mi->mi_vfsp)) {
591 if (!(mi->mi_flags & MI_HARD))
595 if (FAILOVER_MOUNT(mi))
775 nfs_feedback(int flag, int which, mntinfo_t *mi)
780 mutex_enter(&mi->mi_lock);
782 if (mi->mi_timers[NFS_CALLTYPES].rt_rtxcur != 0 &&
783 mi->mi_timers[NFS_CALLTYPES].rt_rtxcur < REDUCE_NFS_TIME)
785 if (mi->mi_curread > MIN_NFS_TSIZE) {
786 mi->mi_curread /= 2;
787 if (mi->mi_curread < MIN_NFS_TSIZE)
788 mi->mi_curread = MIN_NFS_TSIZE;
792 if (mi->mi_curwrite > MIN_NFS_TSIZE) {
793 mi->mi_curwrite /= 2;
794 if (mi->mi_curwrite < MIN_NFS_TSIZE)
795 mi->mi_curwrite = MIN_NFS_TSIZE;
799 kind = mi->mi_timer_type[which];
801 mi->mi_timers[kind].rt_srtt >= INCREASE_NFS_TIME)
804 if (mi->mi_curread >= mi->mi_tsize)
806 mi->mi_curread += MIN_NFS_TSIZE;
807 if (mi->mi_curread > mi->mi_tsize/2)
808 mi->mi_curread = mi->mi_tsize;
810 if (mi->mi_curwrite >= mi->mi_stsize)
812 mi->mi_curwrite += MIN_NFS_TSIZE;
813 if (mi->mi_curwrite > mi->mi_stsize/2)
814 mi->mi_curwrite = mi->mi_stsize;
818 mutex_exit(&mi->mi_lock);
828 rfs2call(mntinfo_t *mi, rpcproc_t which, xdrproc_t xdrargs, caddr_t argsp,
837 rpcerror = rfscall(mi, which, xdrargs, argsp, xdrres, resp,
848 rpcerror = rfscall(mi, which, xdrargs, argsp, xdrres,
874 rfs3call(mntinfo_t *mi, rpcproc_t which, xdrproc_t xdrargs, caddr_t argsp,
883 rpcerror = rfscall(mi, which, xdrargs, argsp, xdrres, resp,
907 rpcerror = rfscall(mi, which, xdrargs, argsp,
924 #define INC_READERS(mi) { \
925 mi->mi_readers++; \
927 #define DEC_READERS(mi) { \
928 mi->mi_readers--; \
929 if (mi->mi_readers == 0) \
930 cv_broadcast(&mi->mi_failover_cv); \
934 rfscall(mntinfo_t *mi, rpcproc_t which, xdrproc_t xdrargs, caddr_t argsp,
959 "rfscall_start:which %d mi %p", which, mi);
965 mi->mi_reqs[which].value.ui64++;
973 if (FS_OR_ZONE_GONE(mi->mi_vfsp)) {
983 my_rsize = mi->mi_curread;
984 my_wsize = mi->mi_curwrite;
1002 if (FAILOVER_MOUNT(mi)) {
1003 mutex_enter(&mi->mi_lock);
1005 if (failover_wait(mi)) {
1006 mutex_exit(&mi->mi_lock);
1010 INC_READERS(mi);
1011 mutex_exit(&mi->mi_lock);
1017 svp = mi->mi_curr_serv;
1025 mutex_enter(&mi->mi_lock);
1026 DEC_READERS(mi);
1027 mutex_exit(&mi->mi_lock);
1034 if ((mi->mi_flags & MI_HARD) &&
1036 if (svp == mi->mi_curr_serv)
1037 failover_newserver(mi);
1061 svp = mi->mi_curr_serv;
1062 rpcerr.re_errno = nfs_clget(mi, svp, cr, &client, &ch, nfscl);
1064 if (FAILOVER_MOUNT(mi)) {
1065 mutex_enter(&mi->mi_lock);
1066 DEC_READERS(mi);
1067 mutex_exit(&mi->mi_lock);
1072 if (svp == mi->mi_curr_serv)
1073 failover_newserver(mi);
1082 timeo = (mi->mi_timeo * hz) / 10;
1084 mutex_enter(&mi->mi_lock);
1086 &(mi->mi_timers[mi->mi_timer_type[which]]),
1087 &(mi->mi_timers[NFS_CALLTYPES]),
1088 (minimum_timeo[mi->mi_call_type[which]]*hz)>>3,
1089 (void (*)())NULL, (caddr_t)mi, 0);
1090 mutex_exit(&mi->mi_lock);
1099 if (FS_OR_ZONE_GONE(mi->mi_vfsp)) {
1113 sigintr(&smask, (int)mi->mi_flags & MI_INT);
1114 if (!(mi->mi_flags & MI_INT))
1130 if (!(mi->mi_flags & MI_INT))
1139 if ((mi->mi_flags & MI_DYNAMIC) &&
1140 mi->mi_timer_type[which] != 0 &&
1141 (mi->mi_curread != my_rsize ||
1142 mi->mi_curwrite != my_wsize))
1143 (void) nfs_feedback(FEEDBACK_OK, which, mi);
1182 mutex_enter(&mi->mi_lock);
1183 mi->mi_noresponse++;
1184 mutex_exit(&mi->mi_lock);
1189 if (!(mi->mi_flags & MI_HARD)) {
1190 if (!(mi->mi_flags & MI_SEMISOFT) ||
1191 (mi->mi_ss_call_type[which] == 0))
1225 if (FAILOVER_MOUNT(mi) && failover_safe(fi)) {
1226 if (svp == mi->mi_curr_serv)
1227 failover_newserver(mi);
1242 mutex_enter(&mi->mi_lock);
1243 if (!(mi->mi_flags & MI_PRINTED)) {
1244 mi->mi_flags |= MI_PRINTED;
1245 mutex_exit(&mi->mi_lock);
1247 zprintf(zoneid, msg, mi->mi_vers,
1253 mutex_exit(&mi->mi_lock);
1256 if (!(mi->mi_flags & MI_NOPRINT))
1258 uprintf(msg, mi->mi_vers,
1274 if ((mi->mi_flags & MI_DYNAMIC) &&
1275 mi->mi_timer_type[which] != 0 &&
1276 (mi->mi_curread != my_rsize ||
1277 mi->mi_curwrite != my_wsize ||
1278 nfs_feedback(FEEDBACK_REXMIT1, which, mi))) {
1300 mutex_enter(&mi->mi_lock);
1301 mi->mi_flags |= MI_DOWN;
1302 mutex_exit(&mi->mi_lock);
1307 mi->mi_vers, mi->mi_rfsnames[which], bufp);
1309 if (!(mi->mi_flags & MI_NOPRINT)) {
1311 mi->mi_vers, mi->mi_rfsnames[which],
1319 mi->mi_rfsnames[which], svp->sv_hostname,
1322 if (!(mi->mi_flags & MI_NOPRINT)) {
1325 mi->mi_rfsnames[which],
1349 if (mi->mi_flags & (MI_DOWN | MI_PRINTED)) {
1350 mutex_enter(&mi->mi_lock);
1351 mi->mi_flags &= ~MI_DOWN;
1352 if (mi->mi_flags & MI_PRINTED) {
1353 mi->mi_flags &= ~MI_PRINTED;
1354 mutex_exit(&mi->mi_lock);
1356 if (!(mi->mi_vfsp->vfs_flag & VFS_UNMOUNTED))
1358 mi->mi_vers, svp->sv_hostname);
1360 if (!(mi->mi_vfsp->vfs_flag & VFS_UNMOUNTED))
1365 mutex_exit(&mi->mi_lock);
1369 if (!(mi->mi_flags & MI_NOPRINT))
1371 if (!(mi->mi_vfsp->vfs_flag & VFS_UNMOUNTED))
1373 mi->mi_vers, svp->sv_hostname);
1375 if (!(mi->mi_vfsp->vfs_flag & VFS_UNMOUNTED))
1403 acl2call(mntinfo_t *mi, rpcproc_t which, xdrproc_t xdrargs, caddr_t argsp,
1409 rpcerror = aclcall(mi, which, xdrargs, argsp, xdrres, resp,
1420 rpcerror = aclcall(mi, which, xdrargs, argsp, xdrres,
1439 acl3call(mntinfo_t *mi, rpcproc_t which, xdrproc_t xdrargs, caddr_t argsp,
1449 rpcerror = aclcall(mi, which, xdrargs, argsp, xdrres, resp,
1469 rpcerror = aclcall(mi, which, xdrargs, argsp,
1485 aclcall(mntinfo_t *mi, rpcproc_t which, xdrproc_t xdrargs, caddr_t argsp,
1511 "rfscall_start:which %d mi %p", which, mi);
1518 mi->mi_aclreqs[which].value.ui64++;
1522 if (FS_OR_ZONE_GONE(mi->mi_vfsp)) {
1533 my_rsize = mi->mi_curread;
1534 my_wsize = mi->mi_curwrite;
1553 if (FAILOVER_MOUNT(mi)) {
1554 mutex_enter(&mi->mi_lock);
1556 if (failover_wait(mi)) {
1557 mutex_exit(&mi->mi_lock);
1561 INC_READERS(mi);
1562 mutex_exit(&mi->mi_lock);
1568 svp = mi->mi_curr_serv;
1576 mutex_enter(&mi->mi_lock);
1577 DEC_READERS(mi);
1578 mutex_exit(&mi->mi_lock);
1586 if ((mi->mi_flags & MI_HARD) &&
1588 if (svp == mi->mi_curr_serv)
1589 failover_newserver(mi);
1612 svp = mi->mi_curr_serv;
1613 rpcerr.re_errno = acl_clget(mi, svp, cr, &client, &ch, nfscl);
1614 if (FAILOVER_MOUNT(mi)) {
1615 mutex_enter(&mi->mi_lock);
1616 DEC_READERS(mi);
1617 mutex_exit(&mi->mi_lock);
1622 if (svp == mi->mi_curr_serv)
1623 failover_newserver(mi);
1635 timeo = (mi->mi_timeo * hz) / 10;
1637 mutex_enter(&mi->mi_lock);
1639 &(mi->mi_timers[mi->mi_acl_timer_type[which]]),
1640 &(mi->mi_timers[NFS_CALLTYPES]),
1641 (minimum_timeo[mi->mi_acl_call_type[which]]*hz)>>3,
1642 (void (*)()) 0, (caddr_t)mi, 0);
1643 mutex_exit(&mi->mi_lock);
1652 if (FS_OR_ZONE_GONE(mi->mi_vfsp)) {
1666 sigintr(&smask, (int)mi->mi_flags & MI_INT);
1667 if (!(mi->mi_flags & MI_INT))
1683 if (!(mi->mi_flags & MI_INT))
1693 if ((mi->mi_flags & MI_DYNAMIC) &&
1694 mi->mi_timer_type[which] != 0 &&
1695 (mi->mi_curread != my_rsize ||
1696 mi->mi_curwrite != my_wsize))
1697 (void) nfs_feedback(FEEDBACK_OK, which, mi);
1719 mutex_enter(&mi->mi_lock);
1720 mi->mi_flags &= ~(MI_ACL | MI_EXTATTR);
1721 mutex_exit(&mi->mi_lock);
1729 mutex_enter(&mi->mi_lock);
1730 mi->mi_flags &= ~MI_EXTATTR;
1731 mutex_exit(&mi->mi_lock);
1770 mutex_enter(&mi->mi_lock);
1771 mi->mi_noresponse++;
1772 mutex_exit(&mi->mi_lock);
1777 if (!(mi->mi_flags & MI_HARD)) {
1778 if (!(mi->mi_flags & MI_SEMISOFT) ||
1779 (mi->mi_acl_ss_call_type[which] == 0))
1813 if (FAILOVER_MOUNT(mi) && failover_safe(fi)) {
1814 if (svp == mi->mi_curr_serv)
1815 failover_newserver(mi);
1822 mutex_enter(&mi->mi_lock);
1823 if (!(mi->mi_flags & MI_PRINTED)) {
1824 mi->mi_flags |= MI_PRINTED;
1825 mutex_exit(&mi->mi_lock);
1829 mi->mi_vers, svp->sv_hostname);
1836 mutex_exit(&mi->mi_lock);
1839 if (!(mi->mi_flags & MI_NOPRINT))
1843 mi->mi_vers, svp->sv_hostname);
1861 if ((mi->mi_flags & MI_DYNAMIC) &&
1862 mi->mi_acl_timer_type[which] != 0 &&
1863 (mi->mi_curread != my_rsize ||
1864 mi->mi_curwrite != my_wsize ||
1865 nfs_feedback(FEEDBACK_REXMIT1, which, mi))) {
1894 mutex_enter(&mi->mi_lock);
1895 mi->mi_flags |= MI_DOWN;
1896 mutex_exit(&mi->mi_lock);
1901 mi->mi_vers, mi->mi_aclnames[which], bufp);
1903 if (!(mi->mi_flags & MI_NOPRINT)) {
1905 mi->mi_vers, mi->mi_aclnames[which],
1913 mi->mi_aclnames[which], svp->sv_hostname,
1916 if (!(mi->mi_flags & MI_NOPRINT))
1919 mi->mi_aclnames[which],
1942 if (mi->mi_flags & (MI_DOWN | MI_PRINTED)) {
1943 mutex_enter(&mi->mi_lock);
1944 mi->mi_flags &= ~MI_DOWN;
1945 if (mi->mi_flags & MI_PRINTED) {
1946 mi->mi_flags &= ~MI_PRINTED;
1947 mutex_exit(&mi->mi_lock);
1950 mi->mi_vers, svp->sv_hostname);
1956 mutex_exit(&mi->mi_lock);
1960 if (!(mi->mi_flags & MI_NOPRINT))
1963 mi->mi_vers, svp->sv_hostname);
2466 mntinfo_t *mi;
2470 mi = VFTOMI(vfsp);
2556 rp->r_server = mi->mi_curr_serv;
2557 if (FAILOVER_MOUNT(mi)) {
4199 failover_newserver(mntinfo_t *mi)
4204 mutex_enter(&mi->mi_lock);
4205 if (mi->mi_flags & MI_BINDINPROG) {
4206 mutex_exit(&mi->mi_lock);
4209 mi->mi_flags |= MI_BINDINPROG;
4215 VFS_HOLD(mi->mi_vfsp);
4220 (void) zthread_create(NULL, 0, failover_thread, mi, 0, minclsyspri);
4222 mutex_exit(&mi->mi_lock);
4241 failover_thread(mntinfo_t *mi)
4272 CALLB_CPR_INIT(&cprinfo, &mi->mi_lock, callb_generic_cpr,
4275 mutex_enter(&mi->mi_lock);
4276 while (mi->mi_readers) {
4278 cv_wait(&mi->mi_failover_cv, &mi->mi_lock);
4279 CALLB_CPR_SAFE_END(&cprinfo, &mi->mi_lock);
4281 mutex_exit(&mi->mi_lock);
4293 for (svp = mi->mi_servers; svp; svp = svp->sv_next) {
4294 if (!oncethru && svp == mi->mi_curr_serv)
4303 if (FS_OR_ZONE_GONE(mi->mi_vfsp)) {
4313 if (!(mi->mi_flags & MI_INT))
4317 if (!(mi->mi_flags & MI_INT))
4322 if (svp == mi->mi_curr_serv) {
4326 mi->mi_vers, svp->sv_hostname);
4336 mi->mi_vers,
4337 mi->mi_curr_serv->sv_hostname,
4342 mi->mi_curr_serv->sv_hostname,
4352 srvnames = nfs_getsrvnames(mi, &srvnames_len);
4356 "still trying\n", mi->mi_vers, srvnames);
4363 mutex_enter(&mi->mi_lock);
4365 mutex_exit(&mi->mi_lock);
4367 mutex_enter(&mi->mi_lock);
4368 CALLB_CPR_SAFE_END(&cprinfo, &mi->mi_lock);
4369 mutex_exit(&mi->mi_lock);
4375 zprintf(zoneid, "NFS%d servers %s ok\n", mi->mi_vers, srvnames);
4381 if (svp != mi->mi_curr_serv) {
4382 (void) dnlc_purge_vfsp(mi->mi_vfsp, 0);
4383 index = rtablehash(&mi->mi_curr_serv->sv_fhandle);
4385 rp = rfind(&rtable[index], &mi->mi_curr_serv->sv_fhandle,
4386 mi->mi_vfsp);
4408 mutex_enter(&mi->mi_lock);
4409 mi->mi_flags &= ~MI_BINDINPROG;
4411 mi->mi_curr_serv = svp;
4412 mi->mi_failover++;
4417 cv_broadcast(&mi->mi_failover_cv);
4419 VFS_RELE(mi->mi_vfsp);
4432 failover_wait(mntinfo_t *mi)
4441 while (mi->mi_flags & MI_BINDINPROG) {
4447 sigintr(&smask, (int)mi->mi_flags & MI_INT);
4448 if (!cv_wait_sig(&mi->mi_failover_cv, &mi->mi_lock)) {
4480 mntinfo_t *mi;
4495 mi = VTOMI(vp);
4502 error = VFS_ROOT(mi->mi_vfsp, &rootvp);
4528 rp->r_server = mi->mi_curr_serv;
4541 mutex_enter(&mi->mi_remap_lock);
4546 * mi->mi_curr_serv and return if they are same.
4549 mutex_exit(&mi->mi_remap_lock);
4563 mutex_exit(&mi->mi_remap_lock);
4564 zcmn_err(mi->mi_zone->zone_id, CE_WARN,
4579 rp->r_server = mi->mi_curr_serv;
4595 mutex_exit(&mi->mi_remap_lock);
4602 mutex_enter(&mi->mi_lock);
4603 mi->mi_remap++;
4604 mutex_exit(&mi->mi_lock);
4648 mntinfo_t *mi;
4659 mi = VTOMI(root);
4660 xattr = mi->mi_flags & MI_EXTATTR;
4972 nfs_getsrvnames(mntinfo_t *mi, size_t *len)
4985 for (s = mi->mi_servers; s != NULL; s = s->sv_next)
4991 for (s = mi->mi_servers; s != NULL; s = s->sv_next) {