I've wondered about this for a while.  In ib_umem_get, there is a
call to get_user_pages that does the work of virtual to physical
translation and increasing the ref counts.  It is always invoked
with write == 1, even if cmd.access_flags == 0 (read only
registration).

This is fine for anonymous private memory, or writeable shared
memory.  But consider pinning a read-only section of memory, such as
shared read-only data or text segment, or a file mapping of a file
that was opened O_RDONLY.  Having write == 1 there forces a full
copy of all these pages.

The force argument is explicitly set to 1 only when access_flags
does not specify write access, giving gup permission to do the
copy-on-write, essentially.  That seems correct, but always setting
write to 1 has me confused.

Is there some IB semantic reason for forcing the registered pages to
be writable?

                -- Pete
_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to