Skip to contentSkip to conversation

Btrfs Direct I/O for .34 maybe

RFC PATCH In review jim owens 1 participant 1 message Jan 19, 2010 Btrfs file system

lore
Share & tools
lore

jim owens

author
#0 lore raw

cover Btrfs Direct I/O for .34 maybe

This is the completed code for direct I/O read. It handles all extent types, validates checksums, and does retries.

I have tested all the paths (on X86-64) but it needs testing with automation in a larger setup. If this design is acceptable, Eric Whitney will run those tests.

The code supports 512-byte-device access, which is one of the reasons for it being complex. But I believe people expect that so we should not take the easy way out by limiting it to btrfs block size access.

All completion/checksum/decompression processing occurs in 1 thread rather than being spread out. This is intentional because that way directIO scales with multiple users and does not eat all resources.

The code requires use_mm() to permit 2 worker threads to make calls to get_user_pages_fast(). One worker is the completion reaper. The other worker is for aio submit so we return control immediately to the application before any I/O is initiated. The INFO PATCH 02 is what I sent to Andrew Morton so that btrfs can be built as a module. I hope the only reason it was not put in 33 is he is waiting for a caller (my code) that needs it.

All of my previous patches except the one I retracted are required to use this code if anyone wants to try it.

I'm ready for comments, questions, insults, whatever.

jim