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

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

    XMLWordPrintable

Details

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

    Description

      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.

      Attachments

        Issue Links

          Activity

            People

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

              Dates

                Created:
                Updated: