1380 goto reencode_attrs;
1381 }
1382 }
1383 /*
1384 * Redzone check is done at the end of this section.
1385 * This particular section will encode a maximum of
1386 * 14 * BYTES_PER_XDR_UNIT of data.
1387 */
1388 if (ae &
1389 (FATTR4_TIME_ACCESS_MASK |
1390 FATTR4_TIME_ACCESS_SET_MASK |
1391 FATTR4_TIME_BACKUP_MASK |
1392 FATTR4_TIME_CREATE_MASK |
1393 FATTR4_TIME_DELTA_MASK |
1394 FATTR4_TIME_METADATA_MASK |
1395 FATTR4_TIME_MODIFY_MASK |
1396 FATTR4_TIME_MODIFY_SET_MASK |
1397 FATTR4_MOUNTED_ON_FILEID_MASK)) {
1398
1399 if (ae & FATTR4_TIME_ACCESS_MASK) {
1400 u_longlong_t sec =
1401 (u_longlong_t)va.va_atime.tv_sec;
1402 uint_t nsec =
1403 (uint_t)va.va_atime.tv_nsec;
1404 IXDR_PUT_HYPER(ptr, sec);
1405 IXDR_PUT_INT32(ptr, nsec);
1406 }
1407 if (ae & FATTR4_TIME_ACCESS_SET_MASK) {
1408 ASSERT(0);
1409 }
1410 if (ae & FATTR4_TIME_BACKUP_MASK) {
1411 ASSERT(0);
1412 }
1413 if (ae & FATTR4_TIME_CREATE_MASK) {
1414 ASSERT(0);
1415 }
1416 if (ae & FATTR4_TIME_DELTA_MASK) {
1417 u_longlong_t sec = 0;
1418 uint_t nsec = 1000;
1419 IXDR_PUT_HYPER(ptr, sec);
1420 IXDR_PUT_INT32(ptr, nsec);
1421 }
1422 if (ae & FATTR4_TIME_METADATA_MASK) {
1423 u_longlong_t sec =
1424 (u_longlong_t)va.va_ctime.tv_sec;
1425 uint_t nsec =
1426 (uint_t)va.va_ctime.tv_nsec;
1427 IXDR_PUT_HYPER(ptr, sec);
1428 IXDR_PUT_INT32(ptr, nsec);
1429 }
1430 if (ae & FATTR4_TIME_MODIFY_MASK) {
1431 u_longlong_t sec =
1432 (u_longlong_t)va.va_mtime.tv_sec;
1433 uint_t nsec =
1434 (uint_t)va.va_mtime.tv_nsec;
1435 IXDR_PUT_HYPER(ptr, sec);
1436 IXDR_PUT_INT32(ptr, nsec);
1437 }
1438 if (ae & FATTR4_TIME_MODIFY_SET_MASK) {
1439 ASSERT(0);
1440 }
1441 if (ae & FATTR4_MOUNTED_ON_FILEID_MASK) {
1442 IXDR_PUT_HYPER(ptr, dp->d_ino);
1443 }
1444 /* Check the redzone boundary */
1445 if (ptr > ptr_redzone) {
1446 if (nents || IS_MIN_ATTR_MASK(ar)) {
1447 no_space = TRUE;
1448 continue;
1449 }
1450 MINIMIZE_ATTR_MASK(ar);
1451 ae = ar;
1452 ptr = lastentry_ptr;
1453 goto reencode_attrs;
1454 }
1455 }
1456 }
|
1380 goto reencode_attrs;
1381 }
1382 }
1383 /*
1384 * Redzone check is done at the end of this section.
1385 * This particular section will encode a maximum of
1386 * 14 * BYTES_PER_XDR_UNIT of data.
1387 */
1388 if (ae &
1389 (FATTR4_TIME_ACCESS_MASK |
1390 FATTR4_TIME_ACCESS_SET_MASK |
1391 FATTR4_TIME_BACKUP_MASK |
1392 FATTR4_TIME_CREATE_MASK |
1393 FATTR4_TIME_DELTA_MASK |
1394 FATTR4_TIME_METADATA_MASK |
1395 FATTR4_TIME_MODIFY_MASK |
1396 FATTR4_TIME_MODIFY_SET_MASK |
1397 FATTR4_MOUNTED_ON_FILEID_MASK)) {
1398
1399 if (ae & FATTR4_TIME_ACCESS_MASK) {
1400 nfstime4 atime;
1401 (void) nfs4_time_vton(&va.va_atime,
1402 &atime);
1403 IXDR_PUT_HYPER(ptr, atime.seconds);
1404 IXDR_PUT_INT32(ptr, atime.nseconds);
1405 }
1406 if (ae & FATTR4_TIME_ACCESS_SET_MASK) {
1407 ASSERT(0);
1408 }
1409 if (ae & FATTR4_TIME_BACKUP_MASK) {
1410 ASSERT(0);
1411 }
1412 if (ae & FATTR4_TIME_CREATE_MASK) {
1413 ASSERT(0);
1414 }
1415 if (ae & FATTR4_TIME_DELTA_MASK) {
1416 u_longlong_t sec = 0;
1417 uint_t nsec = 1000;
1418 IXDR_PUT_HYPER(ptr, sec);
1419 IXDR_PUT_INT32(ptr, nsec);
1420 }
1421 if (ae & FATTR4_TIME_METADATA_MASK) {
1422 nfstime4 ctime;
1423 (void) nfs4_time_vton(&va.va_ctime,
1424 &ctime);
1425 IXDR_PUT_HYPER(ptr, ctime.seconds);
1426 IXDR_PUT_INT32(ptr, ctime.nseconds);
1427 }
1428 if (ae & FATTR4_TIME_MODIFY_MASK) {
1429 nfstime4 mtime;
1430 (void) nfs4_time_vton(&va.va_mtime,
1431 &mtime);
1432 IXDR_PUT_HYPER(ptr, mtime.seconds);
1433 IXDR_PUT_INT32(ptr, mtime.nseconds);
1434 }
1435 if (ae & FATTR4_TIME_MODIFY_SET_MASK) {
1436 ASSERT(0);
1437 }
1438 if (ae & FATTR4_MOUNTED_ON_FILEID_MASK) {
1439 IXDR_PUT_HYPER(ptr, dp->d_ino);
1440 }
1441 /* Check the redzone boundary */
1442 if (ptr > ptr_redzone) {
1443 if (nents || IS_MIN_ATTR_MASK(ar)) {
1444 no_space = TRUE;
1445 continue;
1446 }
1447 MINIMIZE_ATTR_MASK(ar);
1448 ae = ar;
1449 ptr = lastentry_ptr;
1450 goto reencode_attrs;
1451 }
1452 }
1453 }
|