On 01/29/2013 05:44 AM, Sage Weil wrote:
> On Wed, 23 Jan 2013, Yan, Zheng wrote:
>> From: "Yan, Zheng" <zheng.z....@intel.com>
>>
>> _rename_finish() does not send dentry link/unlink message to replicas.
>> We should prevent dentries that are modified by the rename operation
>> from getting new replicas when the rename operation is committing. So
>> don't mark xlocks "done" and early reply for rename
> 
> Can we change this to only skip early reply if there are replicas?  Or 
> change things so we do send thos messages (or something isilar) early?  As 
> is this will kill workloads like rsync that rename every file.
> 

How about not mark xlocks on dentries done.

Regards
Yan, Zheng


> Thanks!
> s
> 
>>
>> Signed-off-by: Yan, Zheng <zheng.z....@intel.com>
>> ---
>>  src/mds/Server.cc | 8 ++++++++
>>  1 file changed, 8 insertions(+)
>>
>> diff --git a/src/mds/Server.cc b/src/mds/Server.cc
>> index eced76f..4492341 100644
>> --- a/src/mds/Server.cc
>> +++ b/src/mds/Server.cc
>> @@ -796,6 +796,14 @@ void Server::early_reply(MDRequest *mdr, CInode 
>> *tracei, CDentry *tracedn)
>>      return;
>>    }
>>  
>> +  // _rename_finish() does not send dentry link/unlink message to replicas.
>> +  // so do not mark xlocks "done", the xlocks prevent srcdn and destdn from
>> +  // getting new replica.
>> +  if (mdr->client_request->get_op() == CEPH_MDS_OP_RENAME) {
>> +    dout(10) << "early_reply - rename, not allowed" << dendl;
>> +    return;
>> +  }
>> +
>>    MClientRequest *req = mdr->client_request;
>>    entity_inst_t client_inst = req->get_source_inst();
>>    if (client_inst.name.is_mds())
>> -- 
>> 1.7.11.7
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
>> the body of a message to majord...@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>
>>

--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to