aboutsummaryrefslogtreecommitdiffstats
path: root/fs/dlm/config.c
diff options
context:
space:
mode:
authorJoel Becker <joel.becker@oracle.com>2008-07-17 18:21:29 -0400
committerJoel Becker <joel.becker@oracle.com>2008-07-17 18:21:29 -0400
commita6795e9ebb420d87af43789174689af0d66d1d35 (patch)
treefb2a86ad010015fdd311f3b7f6ef30f60c14b8f7 /fs/dlm/config.c
parentf89ab8619e5320cc9c2576f5f8dcbaf6c0ba3950 (diff)
configfs: Allow ->make_item() and ->make_group() to return detailed errors.
The configfs operations ->make_item() and ->make_group() currently return a new item/group. A return of NULL signifies an error. Because of this, -ENOMEM is the only return code bubbled up the stack. Multiple folks have requested the ability to return specific error codes when these operations fail. This patch adds that ability by changing the ->make_item/group() ops to return ERR_PTR() values. These errors are bubbled up appropriately. NULL returns are changed to -ENOMEM for compatibility. Also updated are the in-kernel users of configfs. This is a rework of reverted commit 11c3b79218390a139f2d474ee1e983a672d5839a. Signed-off-by: Joel Becker <joel.becker@oracle.com>
Diffstat (limited to 'fs/dlm/config.c')
-rw-r--r--fs/dlm/config.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/fs/dlm/config.c b/fs/dlm/config.c
index eac23bd288b2..c4e7d721bd8d 100644
--- a/fs/dlm/config.c
+++ b/fs/dlm/config.c
@@ -438,7 +438,7 @@ static struct config_group *make_cluster(struct config_group *g,
438 kfree(gps); 438 kfree(gps);
439 kfree(sps); 439 kfree(sps);
440 kfree(cms); 440 kfree(cms);
441 return NULL; 441 return ERR_PTR(-ENOMEM);
442} 442}
443 443
444static void drop_cluster(struct config_group *g, struct config_item *i) 444static void drop_cluster(struct config_group *g, struct config_item *i)
@@ -495,7 +495,7 @@ static struct config_group *make_space(struct config_group *g, const char *name)
495 kfree(sp); 495 kfree(sp);
496 kfree(gps); 496 kfree(gps);
497 kfree(nds); 497 kfree(nds);
498 return NULL; 498 return ERR_PTR(-ENOMEM);
499} 499}
500 500
501static void drop_space(struct config_group *g, struct config_item *i) 501static void drop_space(struct config_group *g, struct config_item *i)
@@ -528,7 +528,7 @@ static struct config_item *make_comm(struct config_group *g, const char *name)
528 528
529 cm = kzalloc(sizeof(struct comm), GFP_KERNEL); 529 cm = kzalloc(sizeof(struct comm), GFP_KERNEL);
530 if (!cm) 530 if (!cm)
531 return NULL; 531 return ERR_PTR(-ENOMEM);
532 532
533 config_item_init_type_name(&cm->item, name, &comm_type); 533 config_item_init_type_name(&cm->item, name, &comm_type);
534 cm->nodeid = -1; 534 cm->nodeid = -1;
@@ -561,7 +561,7 @@ static struct config_item *make_node(struct config_group *g, const char *name)
561 561
562 nd = kzalloc(sizeof(struct node), GFP_KERNEL); 562 nd = kzalloc(sizeof(struct node), GFP_KERNEL);
563 if (!nd) 563 if (!nd)
564 return NULL; 564 return ERR_PTR(-ENOMEM);
565 565
566 config_item_init_type_name(&nd->item, name, &node_type); 566 config_item_init_type_name(&nd->item, name, &node_type);
567 nd->nodeid = -1; 567 nd->nodeid = -1;