Hi Sage/Sam,
As discussed in today's performance meeting , I am planning to change the
queue_transactions() interface to the following.
int queue_transactions(Sequencer *osr, list<TransactionRef>& tls,
Context *onreadable, Context *ondisk=0,
Context *onreadable_sync=0,
TrackedOpRef op = TrackedOpRef(),
ThreadPool::TPHandle *handle = NULL) ;
typedef unique_ptr<Transaction> TransactionRef;
IMO , there is a problem with this approach.
The interface like apply_transaction(), queue_transaction() etc. basically the
interfaces taking single transaction pointer and internally forming a list to
call the queue_transactions() also needs to be changed to accept TransactionRef
which will be *bad*. The reason is while preparing list internally we need to
move the uniqueue_ptr and callers won't be aware of that.
Also, now changing every interfaces (and callers) that is taking Transaction*
will produce a very big delta (and big testing effort as well).
So, should we *reconsider* co-existing both queue_transactions() interfaces
and call the new one from the IO path ?
Thanks & Regards
Somnath
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html