Re: [PATCH RFC] pnfsd-exofs: convert to v3.1 ORE

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Benny hi

Please push your new tree with below patch and I will
send you SQUASHMES ontop of your tree. This is because
I'm having problems making a coherent tree, because
current pnfs/pnfsd-exofs branch has conflicts when
merging with 3.1-rc1. So your rebase should save me the
resolving work.

Thanks
Boaz

On 08/09/2011 10:30 AM, Boaz Harrosh wrote:
> 
> Sorry Benny about the merge conflicts I caused you
> with the rushed push to Linus.
> 
> I'll send you soon the proper fix, actually the
> change needs to be deeper and the resulting code
> is more simple.
> 
> There are also a couple of more patches to export.c
> that need to be added as well.
> 
> I'll send it all today, I hope it's soon enough.
> If not then below makes it compile I can prepare
> the SQUASHMEs ontop of your tree.
> 
> Thanks
> Boaz
> 
> On 08/09/2011 07:09 AM, Benny Halevy wrote:
>> forwarding to osd-dev list...
>>
>> -------- Original Message --------
>> Subject: [PATCH RFC] pnfsd-exofs: convert to v3.1 ORE
>> Date: Tue, 09 Aug 2011 09:25:32 -0400
>> From: Benny Halevy <bhalevy@xxxxxxxxxx>
>> To: Boaz Harrosh <bharrosh@xxxxxxxxxxx>
>> CC: NFS list <linux-nfs@xxxxxxxxxxxxxxx>
>>
>> Hi Boaz,
>>
>> Does the following patch makes sense in the new v3.1 ORE world?
>> Can you please help test it?
>> If it looks ok to you I'll just go ahead and release the rebased tree
>> to linux-nfs.org and you can pull it from there.
>>
>> Thanks,
>>
>> Benny
>>
>> >From d89d93c733c8bc2984f1a918e522494558306f1d Mon Sep 17 00:00:00 2001
>> From: Benny Halevy <bhalevy@xxxxxxxxxx>
>> Date: Tue, 9 Aug 2011 07:33:11 -0400
>> Subject: [PATCH] pnfsd-exofs: convert to v3.1 ORE
>>
>> Signed-off-by: Benny Halevy <bhalevy@xxxxxxxxxx>
>> ---
>>  fs/exofs/export.c |   34 +++++++++++++++++++++++-----------
>>  1 files changed, 23 insertions(+), 11 deletions(-)
>>
>> diff --git a/fs/exofs/export.c b/fs/exofs/export.c
>> index 8281c85..07bc5e2 100644
>> --- a/fs/exofs/export.c
>> +++ b/fs/exofs/export.c
>> @@ -73,6 +73,13 @@ err:
>>  	return status;
>>  }
>>
>> +static unsigned exofs_layout_od_id(struct ore_layout *layout,
>> +				   struct ore_components *comps,
>> +				   osd_id obj_no, unsigned layout_index)
>> +{
>> +	return (layout_index + obj_no * layout->mirrors_p1) % comps->numdevs;
>> +}
>> +
>>  static enum nfsstat4 exofs_layout_get(
>>  	struct inode *inode,
>>  	struct exp_xdr_stream *xdr,
>> @@ -81,7 +88,8 @@ static enum nfsstat4 exofs_layout_get(
>>  {
>>  	struct exofs_i_info *oi = exofs_i(inode);
>>  	struct exofs_sb_info *sbi = inode->i_sb->s_fs_info;
>> -	struct exofs_layout *el = &sbi->layout;
>> +	struct ore_layout *el = &sbi->layout;
>> +	struct ore_components *ec = &sbi->comps;
>>  	struct pnfs_osd_object_cred *creds = NULL;
>>  	struct pnfs_osd_layout layout;
>>  	__be32 *start;
>> @@ -104,7 +112,7 @@ static enum nfsstat4 exofs_layout_get(
>>  	/* Fill in a pnfs_osd_layout struct */
>>  	layout.olo_map = sbi->data_map;
>>  	layout.olo_comps_index = 0;
>> -	layout.olo_num_comps = el->s_numdevs;
>> +	layout.olo_num_comps = ec->numdevs;
>>  	layout.olo_comps = creds;
>>
>>  	nfserr = pnfs_osd_xdr_encode_layout_hdr(xdr, &layout);
>> @@ -112,16 +120,19 @@ static enum nfsstat4 exofs_layout_get(
>>  		goto out;
>>
>>  	/* Encode layout components */
>> -	for (i = 0; i < el->s_numdevs; i++) {
>> +	for (i = 0; i < ec->numdevs; i++) {
>>  		struct pnfs_osd_object_cred cred;
>> -		osd_id id = exofs_oi_objno(oi);
>> -		unsigned dev = exofs_layout_od_id(el, id, i);
>> +		struct osd_obj_id oid = {
>> +			.partition = sbi->one_comp.obj.partition,
>> +			.id = exofs_oi_objno(oi)
>> +		};
>> +		unsigned dev = exofs_layout_od_id(el, ec, oid.id, i);
>>
>>  		set_dev_id(&cred.oc_object_id.oid_device_id, args->lg_sbid,
>>  			   dev);
>> -		cred.oc_object_id.oid_partition_id = el->s_pid;
>> -		cred.oc_object_id.oid_object_id = id;
>> -		cred.oc_osd_version = osd_dev_is_ver1(el->s_ods[dev]) ?
>> +		cred.oc_object_id.oid_partition_id = oid.partition;
>> +		cred.oc_object_id.oid_object_id = oid.id;
>> +		cred.oc_osd_version = osd_dev_is_ver1(ec->ods[dev]) ?
>>  						PNFS_OSD_VERSION_1 :
>>  						PNFS_OSD_VERSION_2;
>>  		cred.oc_cap_key_sec = PNFS_OSD_CAP_KEY_SEC_NONE;
>> @@ -130,7 +141,7 @@ static enum nfsstat4 exofs_layout_get(
>>  		cred.oc_cap_key.cred		= NULL;
>>
>>  		cred.oc_cap.cred_len	= OSD_CAP_LEN;
>> -		cred.oc_cap.cred	= oi->i_cred;
>> +		exofs_make_credential(cred.oc_cap.cred, &oid);
>>  		nfserr = pnfs_osd_xdr_encode_layout_cred(xdr, &cred);
>>  		if (unlikely(nfserr))
>>  			goto out;
>> @@ -277,6 +288,7 @@ int exofs_get_device_info(struct super_block *sb, struct exp_xdr_stream *xdr,
>>  			  const struct nfsd4_pnfs_deviceid *devid)
>>  {
>>  	struct exofs_sb_info *sbi = sb->s_fs_info;
>> +	struct ore_components *ec = &sbi->comps;
>>  	struct pnfs_osd_deviceaddr devaddr;
>>  	const struct osd_dev_info *odi;
>>  	u64 devno = devid->devid;
>> @@ -285,13 +297,13 @@ int exofs_get_device_info(struct super_block *sb, struct exp_xdr_stream *xdr,
>>
>>  	memset(&devaddr, 0, sizeof(devaddr));
>>
>> -	if (unlikely(devno >= sbi->layout.s_numdevs)) {
>> +	if (unlikely(devno >= ec->numdevs)) {
>>  		EXOFS_DBGMSG("Error: Device((%llx,%llx) does not exist\n",
>>  			     devid->sbid, devno);
>>  		return -ENODEV;
>>  	}
>>
>> -	odi = osduld_device_info(sbi->layout.s_ods[devno]);
>> +	odi = osduld_device_info(ec->ods[devno]);
>>
>>  	devaddr.oda_systemid.len = odi->systemid_len;
>>  	devaddr.oda_systemid.data = (void *)odi->systemid; /* !const cast */
> 
> _______________________________________________
> osd-dev mailing list
> osd-dev@xxxxxxxxxxxx
> http://mailman.open-osd.org/mailman/listinfo/osd-dev
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

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


[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux