<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 02:03:49 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>Whamcloud Community JIRA</title>
    <link>https://jira.whamcloud.com</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.4.14</version>
        <build-number>940014</build-number>
        <build-date>05-12-2023</build-date>
    </build-info>


<item>
            <title>[LU-6850] Remove use of ib_reg_phys_mr() from o2iblnd </title>
                <link>https://jira.whamcloud.com/browse/LU-6850</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;I was informed by Chuck Lever that the kernel guys consider ib_reg_phys_mr() obsolete and will be removing it from upstream OFED.   We need to remove use of this routine from o2iblnd or change to a more appropriate API.&lt;/p&gt;</description>
                <environment></environment>
        <key id="31084">LU-6850</key>
            <summary>Remove use of ib_reg_phys_mr() from o2iblnd </summary>
                <type id="1" iconUrl="https://jira.whamcloud.com/secure/viewavatar?size=xsmall&amp;avatarId=11303&amp;avatarType=issuetype">Bug</type>
                                            <priority id="2" iconUrl="https://jira.whamcloud.com/images/icons/priorities/critical.svg">Critical</priority>
                        <status id="5" iconUrl="https://jira.whamcloud.com/images/icons/statuses/resolved.png" description="A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.">Resolved</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="1">Fixed</resolution>
                                        <assignee username="ashehata">Amir Shehata</assignee>
                                    <reporter username="doug">Doug Oucharek</reporter>
                        <labels>
                    </labels>
                <created>Tue, 14 Jul 2015 21:10:39 +0000</created>
                <updated>Mon, 30 Jan 2017 21:55:21 +0000</updated>
                            <resolved>Tue, 6 Oct 2015 14:19:16 +0000</resolved>
                                                    <fixVersion>Lustre 2.8.0</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>11</watches>
                                                                            <comments>
                            <comment id="121316" author="isaac" created="Wed, 15 Jul 2015 04:36:10 +0000"  >&lt;p&gt;Is it going to be replaced by something else or simply removed?&lt;/p&gt;</comment>
                            <comment id="121317" author="doug" created="Wed, 15 Jul 2015 05:50:38 +0000"  >&lt;p&gt;This thread seems to explain what is going to happen: &lt;a href=&quot;http://www.spinics.net/lists/linux-nfs/msg52108.html&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://www.spinics.net/lists/linux-nfs/msg52108.html&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="121355" author="simmonsja" created="Wed, 15 Jul 2015 15:48:03 +0000"  >&lt;p&gt;The ko2iblnd driver needs to change to using FRMR asap.&lt;/p&gt;</comment>
                            <comment id="121737" author="pjones" created="Mon, 20 Jul 2015 19:39:07 +0000"  >&lt;p&gt;Amir&lt;/p&gt;

&lt;p&gt;Could you please look into what is going to be required here?&lt;/p&gt;

&lt;p&gt;Thanks&lt;/p&gt;

&lt;p&gt;Peter&lt;/p&gt;</comment>
                            <comment id="121899" author="isaac" created="Wed, 22 Jul 2015 04:41:21 +0000"  >&lt;p&gt;Looks like ib_reg_phys_mr() was used as a fallback for ib_get_dma_mr(), which is guaranteed to work except perhaps for some weird Chelsio HCA. I remembered Liang said he&apos;d want to remove the hacks for some Chelsio support, so looks like ib_reg_phys_mr() call can be removed together with the Chelsio hacks Liang wanted to remove.&lt;/p&gt;

&lt;p&gt;Liang, can you please confirm?&lt;/p&gt;</comment>
                            <comment id="121960" author="doug" created="Wed, 22 Jul 2015 23:06:50 +0000"  >&lt;p&gt;Looks like the patch to remove this call has been submitted already to the kernel.  Looks like we will need to fix this very soon.&lt;br/&gt;
Here is the patch on the RDMA discussion group:&lt;/p&gt;

&lt;p&gt;----&lt;del&gt;Original Message&lt;/del&gt;----&lt;br/&gt;
From: linux-rdma-owner@vger.kernel.org [mailto:linux-rdma-&lt;br/&gt;
owner@vger.kernel.org] On Behalf Of Chuck Lever&lt;br/&gt;
Sent: Monday, July 20, 2015 12:05 PM&lt;br/&gt;
To: linux-rdma@vger.kernel.org; linux-nfs@vger.kernel.org&lt;br/&gt;
Subject: &lt;span class=&quot;error&quot;&gt;&amp;#91;PATCH v3 15/15&amp;#93;&lt;/span&gt; core: Remove the ib_reg_phys_mr() and&lt;br/&gt;
ib_rereg_phys_mr() verbs&lt;/p&gt;

&lt;p&gt;The verbs are obsolete. The ib_rereg_phys_mr() verb is not used by kernel&lt;br/&gt;
ULPs, and the last ib_reg_phys_mr() call site in the kernel tree has now been&lt;br/&gt;
removed.&lt;/p&gt;

&lt;p&gt;Two staging tree call sites remain in the Lustre client. The Lustre team has&lt;br/&gt;
been notified of the deprecation of reg_phys_mr.&lt;/p&gt;

&lt;p&gt;Signed-off-by: Chuck Lever &amp;lt;chuck.lever@oracle.com&amp;gt;&lt;br/&gt;
Acked-by: Doug Ledford &amp;lt;dledford@redhat.com&amp;gt;&lt;br/&gt;
&amp;#8212;&lt;br/&gt;
drivers/infiniband/core/verbs.c |   67 ---------------------------------------&lt;br/&gt;
include/rdma/ib_verbs.h         |   46 ---------------------------&lt;br/&gt;
2 files changed, 113 deletions&lt;img class=&quot;emoticon&quot; src=&quot;https://jira.whamcloud.com/images/icons/emoticons/forbidden.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;

&lt;p&gt;diff --git a/drivers/infiniband/core/verbs.c b/drivers/infiniband/core/verbs.c&lt;br/&gt;
index bac3fb4..30eb245 100644&lt;br/&gt;
&amp;#8212; a/drivers/infiniband/core/verbs.c&lt;br/&gt;
+++ b/drivers/infiniband/core/verbs.c&lt;br/&gt;
@@ -1144,73 +1144,6 @@ struct ib_mr *ib_get_dma_mr(struct ib_pd *pd, int&lt;br/&gt;
mr_access_flags)  }  EXPORT_SYMBOL(ib_get_dma_mr);&lt;/p&gt;

&lt;p&gt;-struct ib_mr *ib_reg_phys_mr(struct ib_pd *pd,&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;struct ib_phys_buf *phys_buf_array,&lt;/li&gt;
	&lt;li&gt;int num_phys_buf,&lt;/li&gt;
	&lt;li&gt;int mr_access_flags,&lt;/li&gt;
	&lt;li&gt;u64 *iova_start)&lt;br/&gt;
-{&lt;/li&gt;
	&lt;li&gt;struct ib_mr *mr;&lt;/li&gt;
	&lt;li&gt;int err;&lt;br/&gt;
-&lt;/li&gt;
	&lt;li&gt;err = ib_check_mr_access(mr_access_flags);&lt;/li&gt;
	&lt;li&gt;if (err)&lt;/li&gt;
	&lt;li&gt;return ERR_PTR(err);&lt;br/&gt;
-&lt;/li&gt;
	&lt;li&gt;if (!pd-&amp;gt;device-&amp;gt;reg_phys_mr)&lt;/li&gt;
	&lt;li&gt;return ERR_PTR(-ENOSYS);&lt;br/&gt;
-&lt;/li&gt;
	&lt;li&gt;mr = pd-&amp;gt;device-&amp;gt;reg_phys_mr(pd, phys_buf_array, num_phys_buf,&lt;/li&gt;
	&lt;li&gt;mr_access_flags, iova_start);&lt;br/&gt;
-&lt;/li&gt;
	&lt;li&gt;if (!IS_ERR(mr)) 
{
-		mr-&amp;gt;device  = pd-&amp;gt;device;
-		mr-&amp;gt;pd      = pd;
-		mr-&amp;gt;uobject = NULL;
-		atomic_inc(&amp;amp;pd-&amp;gt;usecnt);
-		atomic_set(&amp;amp;mr-&amp;gt;usecnt, 0);
-	}
&lt;p&gt;-&lt;/p&gt;&lt;/li&gt;
	&lt;li&gt;return mr;&lt;br/&gt;
-}&lt;br/&gt;
-EXPORT_SYMBOL(ib_reg_phys_mr);&lt;br/&gt;
-&lt;br/&gt;
-int ib_rereg_phys_mr(struct ib_mr *mr,&lt;/li&gt;
	&lt;li&gt;int mr_rereg_mask,&lt;/li&gt;
	&lt;li&gt;struct ib_pd *pd,&lt;/li&gt;
	&lt;li&gt;struct ib_phys_buf *phys_buf_array,&lt;/li&gt;
	&lt;li&gt;int num_phys_buf,&lt;/li&gt;
	&lt;li&gt;int mr_access_flags,&lt;/li&gt;
	&lt;li&gt;u64 *iova_start)&lt;br/&gt;
-{&lt;/li&gt;
	&lt;li&gt;struct ib_pd *old_pd;&lt;/li&gt;
	&lt;li&gt;int ret;&lt;br/&gt;
-&lt;/li&gt;
	&lt;li&gt;ret = ib_check_mr_access(mr_access_flags);&lt;/li&gt;
	&lt;li&gt;if (ret)&lt;/li&gt;
	&lt;li&gt;return ret;&lt;br/&gt;
-&lt;/li&gt;
	&lt;li&gt;if (!mr-&amp;gt;device-&amp;gt;rereg_phys_mr)&lt;/li&gt;
	&lt;li&gt;return -ENOSYS;&lt;br/&gt;
-&lt;/li&gt;
	&lt;li&gt;if (atomic_read(&amp;amp;mr-&amp;gt;usecnt))&lt;/li&gt;
	&lt;li&gt;return -EBUSY;&lt;br/&gt;
-&lt;/li&gt;
	&lt;li&gt;old_pd = mr-&amp;gt;pd;&lt;br/&gt;
-&lt;/li&gt;
	&lt;li&gt;ret = mr-&amp;gt;device-&amp;gt;rereg_phys_mr(mr, mr_rereg_mask, pd,&lt;/li&gt;
	&lt;li&gt;phys_buf_array, num_phys_buf,&lt;/li&gt;
	&lt;li&gt;mr_access_flags, iova_start);&lt;br/&gt;
-&lt;/li&gt;
	&lt;li&gt;if (!ret &amp;amp;&amp;amp; (mr_rereg_mask &amp;amp; IB_MR_REREG_PD)) 
{
-		atomic_dec(&amp;amp;old_pd-&amp;gt;usecnt);
-		atomic_inc(&amp;amp;pd-&amp;gt;usecnt);
-	}
&lt;p&gt;-&lt;/p&gt;&lt;/li&gt;
	&lt;li&gt;return ret;&lt;br/&gt;
-}&lt;br/&gt;
-EXPORT_SYMBOL(ib_rereg_phys_mr);&lt;br/&gt;
-&lt;br/&gt;
int ib_query_mr(struct ib_mr *mr, struct ib_mr_attr *mr_attr)  
{
	return mr-&amp;gt;device-&amp;gt;query_mr ?
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h index
b0f898e..43c1cf0 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -2760,52 +2760,6 @@ static inline void ib_dma_free_coherent(struct
ib_device *dev,  }&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;/**&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;* ib_reg_phys_mr - Prepares a virtually addressed memory region for use&lt;/li&gt;
	&lt;li&gt;*   by an HCA.&lt;/li&gt;
	&lt;li&gt;* @pd: The protection domain associated assigned to the registered region.&lt;/li&gt;
	&lt;li&gt;* @phys_buf_array: Specifies a list of physical buffers to use in the&lt;/li&gt;
	&lt;li&gt;*   memory region.&lt;/li&gt;
	&lt;li&gt;* @num_phys_buf: Specifies the size of the phys_buf_array.&lt;/li&gt;
	&lt;li&gt;* @mr_access_flags: Specifies the memory access rights.&lt;/li&gt;
	&lt;li&gt;* @iova_start: The offset of the region&apos;s starting I/O virtual address.&lt;/li&gt;
	&lt;li&gt;*/&lt;br/&gt;
-struct ib_mr *ib_reg_phys_mr(struct ib_pd *pd,&lt;/li&gt;
	&lt;li&gt;struct ib_phys_buf *phys_buf_array,&lt;/li&gt;
	&lt;li&gt;int num_phys_buf,&lt;/li&gt;
	&lt;li&gt;int mr_access_flags,&lt;/li&gt;
	&lt;li&gt;u64 *iova_start);&lt;br/&gt;
-&lt;br/&gt;
-/**&lt;/li&gt;
	&lt;li&gt;* ib_rereg_phys_mr - Modifies the attributes of an existing memory region.&lt;/li&gt;
	&lt;li&gt;*   Conceptually, this call performs the functions deregister memory region&lt;/li&gt;
	&lt;li&gt;*   followed by register physical memory region.  Where possible,&lt;/li&gt;
	&lt;li&gt;*   resources are reused instead of deallocated and reallocated.&lt;/li&gt;
	&lt;li&gt;* @mr: The memory region to modify.&lt;/li&gt;
	&lt;li&gt;* @mr_rereg_mask: A bit-mask used to indicate which of the following&lt;/li&gt;
	&lt;li&gt;*   properties of the memory region are being modified.&lt;/li&gt;
	&lt;li&gt;* @pd: If %IB_MR_REREG_PD is set in mr_rereg_mask, this field specifies&lt;/li&gt;
	&lt;li&gt;*   the new protection domain to associated with the memory region,&lt;/li&gt;
	&lt;li&gt;*   otherwise, this parameter is ignored.&lt;/li&gt;
	&lt;li&gt;* @phys_buf_array: If %IB_MR_REREG_TRANS is set in mr_rereg_mask, this&lt;/li&gt;
	&lt;li&gt;*   field specifies a list of physical buffers to use in the new&lt;/li&gt;
	&lt;li&gt;*   translation, otherwise, this parameter is ignored.&lt;/li&gt;
	&lt;li&gt;* @num_phys_buf: If %IB_MR_REREG_TRANS is set in mr_rereg_mask, this&lt;/li&gt;
	&lt;li&gt;*   field specifies the size of the phys_buf_array, otherwise, this&lt;/li&gt;
	&lt;li&gt;*   parameter is ignored.&lt;/li&gt;
	&lt;li&gt;* @mr_access_flags: If %IB_MR_REREG_ACCESS is set in mr_rereg_mask,&lt;br/&gt;
this&lt;/li&gt;
	&lt;li&gt;*   field specifies the new memory access rights, otherwise, this&lt;/li&gt;
	&lt;li&gt;*   parameter is ignored.&lt;/li&gt;
	&lt;li&gt;* @iova_start: The offset of the region&apos;s starting I/O virtual address.&lt;/li&gt;
	&lt;li&gt;*/&lt;br/&gt;
-int ib_rereg_phys_mr(struct ib_mr *mr,&lt;/li&gt;
	&lt;li&gt;int mr_rereg_mask,&lt;/li&gt;
	&lt;li&gt;struct ib_pd *pd,&lt;/li&gt;
	&lt;li&gt;struct ib_phys_buf *phys_buf_array,&lt;/li&gt;
	&lt;li&gt;int num_phys_buf,&lt;/li&gt;
	&lt;li&gt;int mr_access_flags,&lt;/li&gt;
	&lt;li&gt;u64 *iova_start);&lt;br/&gt;
-&lt;br/&gt;
-/**&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
	&lt;li&gt;ib_query_mr - Retrieves information about a specific memory region.&lt;/li&gt;
	&lt;li&gt;@mr: The memory region to retrieve information about.&lt;/li&gt;
	&lt;li&gt;@mr_attr: The attributes of the specified memory region.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&amp;#8211;&lt;br/&gt;
To unsubscribe from this list: send the line &quot;unsubscribe linux-rdma&quot; in the body&lt;br/&gt;
of a message to majordomo@vger.kernel.org More majordomo info at&lt;br/&gt;
&lt;a href=&quot;http://vger.kernel.org/majordomo-info.html&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://vger.kernel.org/majordomo-info.html&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="122545" author="gerrit" created="Wed, 29 Jul 2015 14:56:34 +0000"  >&lt;p&gt;Amir Shehata (amir.shehata@intel.com) uploaded a new patch: &lt;a href=&quot;http://review.whamcloud.com/15788&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/15788&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-6850&quot; title=&quot;Remove use of ib_reg_phys_mr() from o2iblnd &quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-6850&quot;&gt;&lt;del&gt;LU-6850&lt;/del&gt;&lt;/a&gt; lnet: remove references to ib_reg_phsy_mr()&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: 86cf812d2f8167aa6447b35a2d92f7dcdc3f9e59&lt;/p&gt;</comment>
                            <comment id="124944" author="simmonsja" created="Mon, 24 Aug 2015 19:39:12 +0000"  >&lt;p&gt;I just tried this with our Mellanox 2.4 stack using the mlx5 driver and it totally breaks ko2iblnd. If this patch is merged users stuck with hardware needing to use the mlx5 driver will no function. Before we delete this patch we need to support FRWR for the mlx5 driver. &lt;/p&gt;</comment>
                            <comment id="124955" author="doug" created="Mon, 24 Aug 2015 20:36:26 +0000"  >&lt;p&gt;James: Do you have a link to documentation on FRWR?  Is this something unique to MLX or can we switch to it for all IB access?&lt;/p&gt;</comment>
                            <comment id="124958" author="simmonsja" created="Mon, 24 Aug 2015 21:28:53 +0000"  >&lt;p&gt;It is unique to mlx5 driver. I will ask tomorrow one of my co-workers where I can get docs on this.&lt;/p&gt;</comment>
                            <comment id="125048" author="simmonsja" created="Tue, 25 Aug 2015 17:07:13 +0000"  >&lt;p&gt;Here is a link to docs : &lt;a href=&quot;http://www.rdmaconsortium.org/home/RNIC_Verbs_Overview2.pdf&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://www.rdmaconsortium.org/home/RNIC_Verbs_Overview2.pdf&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also review the kernel thread called &quot;IB/core: Introduce new fast registration API&quot; and looked for comments by Jason Gunthorpe about how the API should be used&lt;/p&gt;

&lt;p&gt;Lastly the thread &quot;Kernel fast memory registration API proposal &lt;span class=&quot;error&quot;&gt;&amp;#91;RFC&amp;#93;&lt;/span&gt;&quot; in the rdma list is very good.&lt;/p&gt;</comment>
                            <comment id="128348" author="simmonsja" created="Thu, 24 Sep 2015 13:55:51 +0000"  >&lt;p&gt;Another update on the latest infiniband API. It appears yet another new RDMA API has been purposed. If that lands FMR will be removed as well. See ticket &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-5783&quot; title=&quot;o2iblnd: investigate new memory registration mechanisms&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-5783&quot;&gt;&lt;del&gt;LU-5783&lt;/del&gt;&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="129402" author="gerrit" created="Tue, 6 Oct 2015 01:56:07 +0000"  >&lt;p&gt;Oleg Drokin (oleg.drokin@intel.com) merged in patch &lt;a href=&quot;http://review.whamcloud.com/15788/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/15788/&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-6850&quot; title=&quot;Remove use of ib_reg_phys_mr() from o2iblnd &quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-6850&quot;&gt;&lt;del&gt;LU-6850&lt;/del&gt;&lt;/a&gt; lnet: remove references to ib_reg_phys_mr()&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: &lt;br/&gt;
Commit: 0f34ed0c1caf5cbe8965af730466b11760de8782&lt;/p&gt;</comment>
                            <comment id="129455" author="pjones" created="Tue, 6 Oct 2015 14:19:16 +0000"  >&lt;p&gt;Landed for 2.8&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                            <outwardlinks description="is related to ">
                                                        </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="27145">LU-5783</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                            <customfield id="customfield_10890" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10390" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hzxi6n:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10090" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10060" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Severity</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10022"><![CDATA[3]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                        </customfields>
    </item>
</channel>
</rss>