Uploaded image for project: 'Lustre'
  1. Lustre
  2. LU-6254

Fix OFD/OSD prefetch for osd-ldiskfs and osd-zfs

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Major Major
    • None
    • Lustre 2.8.0
    • 3
    • 17511

      The ladvise code from LU-4931 (http://review.whamcloud.com/12458) and the recent ZFS performance improvements for read have highlighted that there are some inconsistencies in osd_read_prep() and osd_bufs_get_read() between osd-ldiskfs and osd-zfs.

      It would be best for ladvise on ZFS if it were possible to just call dmu_prefetch() on the specified range and not have to actually set up the pages and drop them again immediately.

      On ldiskfs, it appears that osd_read_prep() seems somewhat broken since it is removing pages from cache just before they are read:

              for (i = 0; i < npages; i++) {
                      if (cache == 0)
                              generic_error_remove_page(inode->i_mapping,
                                                        lnb[i].lnb_page);
              }
      

      which means that prefetching the page into OSS cache will be mostly useless, if it is discarded during the read phase immediately before reading it. I can understand dropping pages from cache for writes, but I'd think for reads it makes sense to leave them in cache if they are about to be used, especially if they are being explicitly prefetched.

            bzzz Alex Zhuravlev
            adilger Andreas Dilger
            Votes:
            0 Vote for this issue
            Watchers:
            10 Start watching this issue

              Created:
              Updated: