Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
4f48280e
Commit
4f48280e
authored
Apr 24, 2010
by
Sage Weil
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ceph: name msgpools; useful error messages
Signed-off-by:
Sage Weil
<
sage@newdream.net
>
parent
8c6efb58
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
16 additions
and
7 deletions
+16
-7
fs/ceph/msgpool.c
fs/ceph/msgpool.c
+9
-4
fs/ceph/msgpool.h
fs/ceph/msgpool.h
+3
-1
fs/ceph/osd_client.c
fs/ceph/osd_client.c
+4
-2
No files found.
fs/ceph/msgpool.c
View file @
4f48280e
...
@@ -10,8 +10,12 @@
...
@@ -10,8 +10,12 @@
static
void
*
alloc_fn
(
gfp_t
gfp_mask
,
void
*
arg
)
static
void
*
alloc_fn
(
gfp_t
gfp_mask
,
void
*
arg
)
{
{
struct
ceph_msgpool
*
pool
=
arg
;
struct
ceph_msgpool
*
pool
=
arg
;
void
*
p
;
return
ceph_msg_new
(
0
,
pool
->
front_len
);
p
=
ceph_msg_new
(
0
,
pool
->
front_len
);
if
(
!
p
)
pr_err
(
"msgpool %s alloc failed
\n
"
,
pool
->
name
);
return
p
;
}
}
static
void
free_fn
(
void
*
element
,
void
*
arg
)
static
void
free_fn
(
void
*
element
,
void
*
arg
)
...
@@ -20,12 +24,13 @@ static void free_fn(void *element, void *arg)
...
@@ -20,12 +24,13 @@ static void free_fn(void *element, void *arg)
}
}
int
ceph_msgpool_init
(
struct
ceph_msgpool
*
pool
,
int
ceph_msgpool_init
(
struct
ceph_msgpool
*
pool
,
int
front_len
,
int
size
,
bool
blocking
)
int
front_len
,
int
size
,
bool
blocking
,
const
char
*
name
)
{
{
pool
->
front_len
=
front_len
;
pool
->
front_len
=
front_len
;
pool
->
pool
=
mempool_create
(
size
,
alloc_fn
,
free_fn
,
pool
);
pool
->
pool
=
mempool_create
(
size
,
alloc_fn
,
free_fn
,
pool
);
if
(
!
pool
->
pool
)
if
(
!
pool
->
pool
)
return
-
ENOMEM
;
return
-
ENOMEM
;
pool
->
name
=
name
;
return
0
;
return
0
;
}
}
...
@@ -38,8 +43,8 @@ struct ceph_msg *ceph_msgpool_get(struct ceph_msgpool *pool,
...
@@ -38,8 +43,8 @@ struct ceph_msg *ceph_msgpool_get(struct ceph_msgpool *pool,
int
front_len
)
int
front_len
)
{
{
if
(
front_len
>
pool
->
front_len
)
{
if
(
front_len
>
pool
->
front_len
)
{
pr_err
(
"msgpool_get pool %
p
need front %d, pool size is %d
\n
"
,
pr_err
(
"msgpool_get pool %
s
need front %d, pool size is %d
\n
"
,
pool
,
front_len
,
pool
->
front_len
);
pool
->
name
,
front_len
,
pool
->
front_len
);
WARN_ON
(
1
);
WARN_ON
(
1
);
/* try to alloc a fresh message */
/* try to alloc a fresh message */
...
...
fs/ceph/msgpool.h
View file @
4f48280e
...
@@ -9,12 +9,14 @@
...
@@ -9,12 +9,14 @@
* avoid unexpected OOM conditions.
* avoid unexpected OOM conditions.
*/
*/
struct
ceph_msgpool
{
struct
ceph_msgpool
{
const
char
*
name
;
mempool_t
*
pool
;
mempool_t
*
pool
;
int
front_len
;
/* preallocated payload size */
int
front_len
;
/* preallocated payload size */
};
};
extern
int
ceph_msgpool_init
(
struct
ceph_msgpool
*
pool
,
extern
int
ceph_msgpool_init
(
struct
ceph_msgpool
*
pool
,
int
front_len
,
int
size
,
bool
blocking
);
int
front_len
,
int
size
,
bool
blocking
,
const
char
*
name
);
extern
void
ceph_msgpool_destroy
(
struct
ceph_msgpool
*
pool
);
extern
void
ceph_msgpool_destroy
(
struct
ceph_msgpool
*
pool
);
extern
struct
ceph_msg
*
ceph_msgpool_get
(
struct
ceph_msgpool
*
,
extern
struct
ceph_msg
*
ceph_msgpool_get
(
struct
ceph_msgpool
*
,
int
front_len
);
int
front_len
);
...
...
fs/ceph/osd_client.c
View file @
4f48280e
...
@@ -1214,11 +1214,13 @@ int ceph_osdc_init(struct ceph_osd_client *osdc, struct ceph_client *client)
...
@@ -1214,11 +1214,13 @@ int ceph_osdc_init(struct ceph_osd_client *osdc, struct ceph_client *client)
if
(
!
osdc
->
req_mempool
)
if
(
!
osdc
->
req_mempool
)
goto
out
;
goto
out
;
err
=
ceph_msgpool_init
(
&
osdc
->
msgpool_op
,
OSD_OP_FRONT_LEN
,
10
,
true
);
err
=
ceph_msgpool_init
(
&
osdc
->
msgpool_op
,
OSD_OP_FRONT_LEN
,
10
,
true
,
"osd_op"
);
if
(
err
<
0
)
if
(
err
<
0
)
goto
out_mempool
;
goto
out_mempool
;
err
=
ceph_msgpool_init
(
&
osdc
->
msgpool_op_reply
,
err
=
ceph_msgpool_init
(
&
osdc
->
msgpool_op_reply
,
OSD_OPREPLY_FRONT_LEN
,
10
,
true
);
OSD_OPREPLY_FRONT_LEN
,
10
,
true
,
"osd_op_reply"
);
if
(
err
<
0
)
if
(
err
<
0
)
goto
out_msgpool
;
goto
out_msgpool
;
return
0
;
return
0
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment