Print this page
*** NO COMMENTS ***

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/fs/zfs/zfs_ioctl.c
          +++ new/usr/src/uts/common/fs/zfs/zfs_ioctl.c
↓ open down ↓ 1935 lines elided ↑ open up ↑
1936 1936          p = zc->zc_name + strlen(zc->zc_name);
1937 1937  
1938 1938          /*
1939 1939           * Pre-fetch the datasets.  dmu_objset_prefetch() always returns 0
1940 1940           * but is not declared void because its called by dmu_objset_find().
1941 1941           */
1942 1942          if (zc->zc_cookie == 0) {
1943 1943                  uint64_t cookie = 0;
1944 1944                  int len = sizeof (zc->zc_name) - (p - zc->zc_name);
1945 1945  
1946      -                while (dmu_dir_list_next(os, len, p, NULL, &cookie) == 0)
1947      -                        (void) dmu_objset_prefetch(p, NULL);
     1946 +                while (dmu_dir_list_next(os, len, p, NULL, &cookie) == 0) {
     1947 +                        if (!dataset_name_hidden(zc->zc_name))
     1948 +                                (void) dmu_objset_prefetch(zc->zc_name, NULL);
     1949 +                }
1948 1950          }
1949 1951  
1950 1952          do {
1951 1953                  error = dmu_dir_list_next(os,
1952 1954                      sizeof (zc->zc_name) - (p - zc->zc_name), p,
1953 1955                      NULL, &zc->zc_cookie);
1954 1956                  if (error == ENOENT)
1955 1957                          error = ESRCH;
1956 1958          } while (error == 0 && dataset_name_hidden(zc->zc_name) &&
1957 1959              !(zc->zc_iflags & FKIOCTL));
↓ open down ↓ 3165 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX