Print this page
7123 encode timestamps in rfs4_op_readdir()


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                 }