[rds-devel] Re: send-with-invalidate
Or Gerlitz
ogerlitz at voltaire.com
Thu Jan 10 07:17:26 PST 2008
Olaf Kirch wrote:
> However, some applications may want to create long-lived MRs, so
> we probably shouldn't disable the GET_MR call completely.
Many times, for example in the storage world, long lived MRs are somehow
more natural in the --target-- side, eg you preallocate and pin set of
big chunks of memory that would serve incoming I/O request for that
connection.
In the RDS scheme, only the client side can cache the registration (i.e
call get_mr but never call free_mr. I think we have to have at least
symmetric, it would also make the code simpler: allow apps to pin,fmr
the set of pages once, and then just dma_map/unmap it for each I/O.
If we want to refine that, we can separate the pinning from fmr-ing, so
an app has set of pages pinned once, and then it fmrs subsets of this
page set to serve an I/O. Note that this is exactly how it goes in the
scsi world with the iser and srp initiator. The kernel buffer cache pins
a set of buffers, per I/O an sg pointing to a subset of pages is carved
from the cache, the initiator FMRs it and send the target the
<rkey,addr,len> triplet, the targets gets a buffer from its pool, etc.
Or.
More information about the rds-devel
mailing list