[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
RE: [dm-devel] [PATCH] multipath-tools: multipath should allow only path with valid size to get added in the map
- From: "Chauhan, Vijay" <Vijay Chauhan lsi com>
- To: "sekharan us ibm com" <sekharan us ibm com>, device-mapper development <dm-devel redhat com>
- Cc: "Dachepalli, Sudhir" <Sudhir Dachepalli lsi com>, "Stankey, Robert" <Robert Stankey lsi com>, "sekharan linux vnet ibm com" <sekharan linux vnet ibm com>, "Moger, Babu" <Babu Moger lsi com>
- Subject: RE: [dm-devel] [PATCH] multipath-tools: multipath should allow only path with valid size to get added in the map
- Date: Mon, 23 Nov 2009 11:21:58 +0530
On Friday, November 20, 2009 at 21:55:00 UTC, Chandra Seetharaman wrote :
> Looks good to me except one comment below.
>
> > + if ((!pp->size) || (mpp->size != pp->size)) {
> > + condlog(0, "%s: failed to add
> new path %s, "
> > + "device size mismatch",
>
> Appropriate error message for the two different cases
> (pp->size = 0 and
> mpp->size!= pp->size) would be the right thing to do, IMO.
>
> > + devname, pp->dev);
Chandra, Thanks for you comment. I have made the changes as per your comment.
Please let me if it looks fine now.
Thanks,
Vijay
---
multipath should only add paths with valid size to the map. If there is mismatch between map and path size it should not be added. This patch also check if the device size is not 0 before adding path. During device discovery if READ_CAPACITY fails, sd device get attached with device size 0. multipath should not allow the such device to get added in the map.
Signed-off-by: Vijay Chauhan <vijay chauhan lsi com>
---
diff -uprN multipath-tools-orig/multipathd/main.c multipath-tools/multipathd/main.c
--- multipath-tools-orig/multipathd/main.c 2009-11-20 23:39:09.000000000 +0530
+++ multipath-tools/multipathd/main.c 2009-11-23 16:37:16.000000000 +0530
@@ -396,8 +396,29 @@ ev_add_path (char * devname, struct vect
return 2;
}
mpp = pp->mpp = find_mp_by_wwid(vecs->mpvec, pp->wwid);
+ if (!pp->size) {
+ condlog(0, "%s: not a valid path %s, "
+ " device size is 0 ", devname, pp->dev);
+ int i = find_slot(vecs->pathvec, (void *)pp);
+ if (i != -1)
+ vector_del_slot(vecs->pathvec, i);
+ free_path(pp);
+ return 1;
+ }
+
rescan:
if (mpp) {
+ if (mpp->size != pp->size) {
+ condlog(0, "%s: failed to add new path %s, "
+ "device size mismatch",
+ devname, pp->dev);
+ int i = find_slot(vecs->pathvec, (void *)pp);
+ if (i != -1)
+ vector_del_slot(vecs->pathvec, i);
+ free_path(pp);
+ return 1;
+ }
+
condlog(4,"%s: adopting all paths for path %s",
mpp->alias, pp->dev);
if (adopt_paths(vecs->pathvec, mpp))
--
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]