<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Title" content="">
<meta name="Keywords" content="">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.msoIns
        {mso-style-type:export-only;
        mso-style-name:"";
        text-decoration:underline;
        color:teal;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body bgcolor="white" lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Hello, Gian-Carlo DeFazio.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">“<i>The struct lquota_entry (lqe) now has 2 edquot flags,  lqe_edquot and lge_edquot.<o:p></o:p></i></p>
<p class="MsoNormal"><i>Does lqe_edquot still represent the QMT’s current knowledge about whether or not<o:p></o:p></i></p>
<p class="MsoNormal"><i>an entity has exceeded a quota for the pool associated with the lqe, or do the
<o:p></o:p></i></p>
<p class="MsoNormal"><i>lge_edquot flags need to be checked as well to make this determination</i>?”<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I think you shouldn’t care about this if you write something for usermode utils.<br>
But if you are interesting In details I would try to explain. Each id(user/group/project) is still described by lqe.<br>
lqe that describes all data targets in a system is called “global lqe”. This lqe has a pointer to array of entries that describe each OST state(lqeg_arr).<br>
So now we can have different edquot(lge_edquot) for each target. In a system without pools all lge_edquot in array are always equal and also equal with lqe->lqe_edquot.<br>
Each Pool Quotas has its own lqe per id. Pool Quotas lqes don’t have pointer to lqe_global_array. These lqes represent state (edquot, qunit, limits) only OSTs from the pool.<o:p></o:p></p>
<p class="MsoNormal">So, each id has one global lqe and one lqe per pool where it has quota limits.<o:p></o:p></p>
<p class="MsoNormal">When QMT get quota acquire request from an OST, it finds global lqe and “pool” lqes(only pools that include this OST). It goes through these lqes to decide if edquot or new qunit should be set.<br>
If yes, it also reseeds lqeg_array.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">“There is now a –pool option. Can this flag be used in conjunction with the default value flags (-U|-G|-P)?”<o:p></o:p></p>
<p class="MsoNormal">default Pool Quotas feature is under review - <a href="https://review.whamcloud.com/#/c/39873/">
https://review.whamcloud.com/#/c/39873/</a> (LU-13952).<br>
<br>
If your code will interact with pool quotas, please add me as reviewer.<br>
<br>
Thanks,<o:p></o:p></p>
<p class="MsoNormal">Sergey<o:p></o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:12.0pt;color:black">From: </span></b><span style="font-size:12.0pt;color:black">"Spitz, Cory James" <cory.spitz@hpe.com><br>
<b>Date: </b>Friday, September 18, 2020 at 12:58 AM<br>
<b>To: </b>"Defazio, Gian-Carlo" <defazio1@llnl.gov>, "lustre-devel@lists.lustre.org" <lustre-devel@lists.lustre.org>, "Cheremencev, Sergey" <sergey.cheremencev@hpe.com><br>
<b>Subject: </b>Re: [lustre-devel] lfs usage with OST pool quota flags<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">Hello, Gian-Carlo DeFazio.<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">Sergey Chermencev is the developer who implemented OST Pool Quotas.  I’ve copied him so that he may answer your questions in more detail.  For now, I can say that you can use the following as resources:<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal"><a href="https://opensfs.org/wp-content/uploads/2019/07/LUG2019-Introducing_Pool_Quotas-Spitz.pdf">https://opensfs.org/wp-content/uploads/2019/07/LUG2019-Introducing_Pool_Quotas-Spitz.pdf</a><o:p></o:p></p>
<p class="MsoNormal"><a href="https://vimeo.com/showcase/6042401/video/342817244">https://vimeo.com/showcase/6042401/video/342817244</a><o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">And yes, you can use the --pool option in conjunction with the default value flags.  See slide 11 from the referenced pdf as an example.<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">> Is that already happening? I see that there’s LUDOC-467 to add OST pool quotas to the manual<o:p></o:p></p>
<p class="MsoNormal">Yes, <a href="https://review.whamcloud.com/#/c/38414">https://review.whamcloud.com/#/c/38414</a> is for it, but it hasn’t landed yet.<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">-Cory<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<div>
<div>
<p class="MsoNormal" style="margin-left:.5in">On 8/31/20, 1:29 PM, "lustre-devel on behalf of Defazio, Gian-Carlo" <<a href="mailto:lustre-devel-bounces@lists.lustre.org">lustre-devel-bounces@lists.lustre.org</a> on behalf of
<a href="mailto:defazio1@llnl.gov">defazio1@llnl.gov</a>> wrote:<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> <o:p></o:p></p>
</div>
<p class="MsoNormal" style="margin-left:.5in">I’m planning to add a feature to lfs-quota (a relatively quick check for EDQUOT)<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">and I have some questions about how the new OST pool quota feature will change things<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">with regards to how the quota system works internally and how the lfs-quota options will change.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">For how the system actually works internally:<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">The struct lquota_entry (lqe) now has 2 edquot flags,  lqe_edquot and lge_edquot.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">Does lqe_edquot still represent the QMT’s current knowledge about whether or not<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">an entity has exceeded a quota for the pool associated with the lqe, or do the
<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">lge_edquot flags need to be checked as well to make this determination?
<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">For how lfs-quota works:<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">There is now a –pool option. Can this flag be used in conjunction with the default value flags<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">(-U|-G|-P)? Such as<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">lfs quota -U –pool qpool1 /mnt/lustre<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">To check the default user quota values for OST pool qpool1?<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">I’ll need to update lfs-quota.1, lfs-setquota.1, and the lfs.c help section for my feature, but since<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">the flag I add will have to interact with the –pool flag in some cases, I also need to update those files<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">for the OST pool quotas. Is that already happening? I see that there’s LUDOC-467 to add OST pool quotas to the manual.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">Thanks,<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">Gian-Carlo DeFazio<o:p></o:p></p>
</div>
</body>
</html>