All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>
To: Dan Williams <dan.j.williams@intel.com>, vishal.l.verma@intel.com
Cc: linux-nvdimm@lists.01.org
Subject: Re: Picking 0th namespace if it is idle
Date: Tue, 23 Jul 2019 20:30:09 +0530	[thread overview]
Message-ID: <8736iwkd8m.fsf@linux.ibm.com> (raw)
In-Reply-To: <877ea85p64.fsf@linux.ibm.com>

Hi Dan,

Can you help with this question?

-aneesh

Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com> writes:

> aneesh.kumar@linux.ibm.com (Aneesh Kumar K.V) writes:
>
>> Hi Dan,
>>
>> With the patch series to mark the namespace disabled if we have mismatch
>> in pfn superblock, we can endup with namespace0 marked idle/disabled.
>>
>> I am wondering why do do the below in ndctl.
>>
>>
>> static struct ndctl_namespace *region_get_namespace(struct ndctl_region *region)
>> {
>> 	struct ndctl_namespace *ndns;
>>
>> 	/* prefer the 0th namespace if it is idle */
>> 	ndctl_namespace_foreach(region, ndns)
>> 		if (ndctl_namespace_get_id(ndns) == 0
>> 				&& !is_namespace_active(ndns))
>> 			return ndns;
>> 	return ndctl_region_get_namespace_seed(region);
>> }
>>
>> I have a kernel patch that will create a namespace_seed even if we fail
>> to ename a pfn backing device. Something like below
>>  
>> @@ -747,12 +752,23 @@ static void nd_region_notify_driver_action(struct nvdimm_bus *nvdimm_bus,
>>  		}
>>  	}
>>  	if (dev->parent && is_nd_region(dev->parent) && probe) {
>>  		nd_region = to_nd_region(dev->parent);
>>  		nvdimm_bus_lock(dev);
>>  		if (nd_region->ns_seed == dev)
>>  			nd_region_create_ns_seed(nd_region);
>>  		nvdimm_bus_unlock(dev);
>>  	}
>> +
>> +	if (dev->parent && is_nd_region(dev->parent) && !probe && (ret == -EOPNOTSUPP)) {
>> +		nd_region = to_nd_region(dev->parent);
>> +		nvdimm_bus_lock(dev);
>> +		if (nd_region->ns_seed == dev)
>> +			nd_region_create_ns_seed(nd_region);
>> +		nvdimm_bus_unlock(dev);
>> +	}
>> +
>>
>> With that we can end up with something like the below after boot.
>> :/sys/bus/nd/devices/region0$ sudo ndctl list -Ni        
>> [                                                                          
>>   {                                                                                                                                                    
>>     "dev":"namespace0.1",                                                  
>>     "mode":"fsdax",                                                        
>>     "map":"mem",                                                           
>>     "size":0,                                                              
>>     "uuid":"00000000-0000-0000-0000-000000000000",                                                                                                     
>>     "state":"disabled"                                                     
>>   },                                                                       
>>   {                                                                        
>>     "dev":"namespace0.0",                                                  
>>     "mode":"fsdax",                  
>>     "map":"mem",                                                           
>>     "size":2147483648,               
>>     "uuid":"094e703b-4bf8-4078-ad42-50bebc03e538",                                                                                                     
>>     "state":"disabled"                                                                                                                                 
>>   }                                                                        
>> ]                                             
>>
>> namespace0.0 is the one we failed to initialize due to PAGE_SIZE
>> mismatch. 
>>
>> We do have namespace_seed pointing to namespacece0.1 correct. But a ndtl
>> create-namespace will pick namespace0.0 even if we have seed file
>> pointing to namespacec0.1.
>>
>>
>> I am trying to resolve the issues related to creation of new namespaces
>> when we have some namespace marked disabled due to pfn_sb setting
>> mismatch.
>>
>> -aneesh
>
> With that ndctl namespace0.0 selection commented out, we do get pick the
> right idle namespace.
>
> #ndctl list -Ni
> [                         
>   {                
>     "dev":"namespace0.1",
>     "mode":"fsdax",                                                        
>     "map":"mem",      
>     "size":0,
>     "uuid":"00000000-0000-0000-0000-000000000000",
>     "state":"disabled"   
>   },               
>   {             
>     "dev":"namespace0.0",
>     "mode":"fsdax",                                                        
>     "map":"mem",  
>     "size":2147483648,   
>     "uuid":"0c31ae4b-b053-43c7-82ff-88574e2585b0",
>     "state":"disabled"
>   }  
> ]   
>
> after ndctl create-namespace -s 2G -r region0                   
>
>
> # ndctl list -Ni                                           
> [                     
>   {                    
>     "dev":"namespace0.2",
>     "mode":"fsdax",       
>     "map":"mem",   
>     "size":0,   
>     "uuid":"00000000-0000-0000-0000-000000000000",
>     "state":"disabled"
>   },
>   {
>     "dev":"namespace0.1",
>     "mode":"fsdax",
>     "map":"dev",
>     "size":2130706432,
>     "uuid":"60970059-9412-4eeb-9e7a-b314585a4da3",
>     "align":65536,
>     "blockdev":"pmem0.1",
>     "supported_alignments":[
>       65536
>     ]
>   },
>   {
>     "dev":"namespace0.0",
>     "mode":"fsdax",
>     "map":"mem",
>     "size":2147483648,
>     "uuid":"0c31ae4b-b053-43c7-82ff-88574e2585b0",
>     "state":"disabled"
>   }
> ]

_______________________________________________
Linux-nvdimm mailing list
Linux-nvdimm@lists.01.org
https://lists.01.org/mailman/listinfo/linux-nvdimm

  reply	other threads:[~2019-07-23 15:02 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <87a7f45qik.fsf@linux.ibm.com>
2019-05-30  8:20 ` Picking 0th namespace if it is idle Aneesh Kumar K.V
2019-07-23 15:00   ` Aneesh Kumar K.V [this message]
2019-07-23 18:59   ` Dan Williams

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8736iwkd8m.fsf@linux.ibm.com \
    --to=aneesh.kumar@linux.ibm.com \
    --cc=dan.j.williams@intel.com \
    --cc=linux-nvdimm@lists.01.org \
    --cc=vishal.l.verma@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.