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

FLR-ECRO: fsync() of unmodified EC file blocks on unavailable OST

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Medium Medium
    • None
    • None
    • 3
    • 9223372036854775807

      fsync() of an EC file that was not modified (e.g. opened read-only, or RDONLY layout with no dirty pages) blocks until an unavailable data OST returns, because cl_sync_file_range() sends OST_SYNC to every stripe. See the LU-20212 test results.

      osc_io_fsync_end < cl_io_end < lov_io_end_wrapper < lov_io_fsync_end < cl_io_end < cl_io_loop < cl_sync_file_range < ll_fsync < vfs_fsync_range < do_fsync
      

      The same happens from writeback (ll_writepages()->cl_sync_file_range() in the flush worker). A stripe with no dirty or uncommitted pages on this client has nothing to sync, so the OST_SYNC for it could be skipped, making fsync() of an unmodified file a no-op that does not depend on OST availability.

            wc-triage WC Triage
            adilger Andreas Dilger
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated: