Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
slash
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
uplex-varnish
slash
Commits
cb10bc84
Unverified
Commit
cb10bc84
authored
Dec 13, 2023
by
Nils Goroll
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Rename logbuffer dskrsv/dskreqs -> dskpool
parent
e97656e4
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
54 additions
and
54 deletions
+54
-54
fellow_log.c
src/fellow_log.c
+54
-54
No files found.
src/fellow_log.c
View file @
cb10bc84
...
@@ -421,9 +421,9 @@ assert_lbuf_dsk_resv(void)
...
@@ -421,9 +421,9 @@ assert_lbuf_dsk_resv(void)
}
}
// dsk request
// dsk request
BUDDY_REQS
(
lbuf_dsk
rsv
_s
,
LBUF_DSK_RSV_REQS
);
BUDDY_REQS(lbuf_dsk
pool
_s, LBUF_DSK_RSV_REQS);
// this is the memory request for dsk
rsv
// this is the memory request for dsk
pool
BUDDY_REQS
(
lbuf_dsk
rsv
_mem_s
,
1
);
BUDDY_REQS(lbuf_dsk
pool
_mem_s, 1);
// memory for flush_finish
// memory for flush_finish
BUDDY_REQS(lbuf_ff_mem_s, 1);
BUDDY_REQS(lbuf_ff_mem_s, 1);
...
@@ -466,8 +466,8 @@ struct fellow_logbuffer {
...
@@ -466,8 +466,8 @@ struct fellow_logbuffer {
off_t tail_off;
off_t tail_off;
struct fellow_logbuffer_ff *ff;
struct fellow_logbuffer_ff *ff;
struct lbuf_ff_mem_s ff_mem;
struct lbuf_ff_mem_s ff_mem;
struct
lbuf_dsk
rsv_mem_s
dskreqs
_mem
;
struct lbuf_dsk
pool_mem_s dskpool
_mem;
struct
lbuf_dsk
rsv_s
(
*
dskreqs
)[
2
];
struct lbuf_dsk
pool_s (*dskpool
)[2];
unsigned active_reqs;
unsigned active_reqs;
};
};
...
@@ -1999,33 +1999,33 @@ logbuffer_fini_ff_mem(struct fellow_logbuffer *lbuf)
...
@@ -1999,33 +1999,33 @@ logbuffer_fini_ff_mem(struct fellow_logbuffer *lbuf)
}
}
static inline void
static inline void
logbuffer_fini_dsk
reqs
_mem
(
struct
fellow_logbuffer
*
lbuf
)
logbuffer_fini_dsk
pool
_mem(struct fellow_logbuffer *lbuf)
{
{
if
(
lbuf
->
dsk
reqs
_mem
.
reqs
.
magic
==
0
)
if (lbuf->dsk
pool
_mem.reqs.magic == 0)
return;
return;
buddy_alloc_wait_done
(
&
lbuf
->
dsk
reqs
_mem
.
reqs
);
buddy_alloc_wait_done(&lbuf->dsk
pool
_mem.reqs);
lbuf
->
dsk
reqs
_mem
.
reqs
.
magic
=
0
;
lbuf->dsk
pool
_mem.reqs.magic = 0;
}
}
static void
static void
logbuffer_fini_dsk
reqs
(
struct
fellow_logbuffer
*
lbuf
)
logbuffer_fini_dsk
pool
(struct fellow_logbuffer *lbuf)
{
{
struct buddy_ptr_extent alloc;
struct buddy_ptr_extent alloc;
size_t sz;
size_t sz;
if
(
lbuf
->
dsk
reqs
!=
NULL
)
{
if (lbuf->dsk
pool
!= NULL) {
buddy_alloc_wait_done
(
&
(
*
lbuf
->
dsk
reqs
)[
0
].
reqs
);
buddy_alloc_wait_done(&(*lbuf->dsk
pool
)[0].reqs);
buddy_alloc_wait_done
(
&
(
*
lbuf
->
dsk
reqs
)[
1
].
reqs
);
buddy_alloc_wait_done(&(*lbuf->dsk
pool
)[1].reqs);
sz
=
buddy_rndup
(
lbuf
->
membuddy
,
sizeof
*
lbuf
->
dsk
reqs
);
sz = buddy_rndup(lbuf->membuddy, sizeof *lbuf->dsk
pool
);
alloc
=
BUDDY_PTR_EXTENT
(
lbuf
->
dsk
reqs
,
sz
);
alloc = BUDDY_PTR_EXTENT(lbuf->dsk
pool
, sz);
buddy_return1_ptr_extent(lbuf->membuddy, &alloc);
buddy_return1_ptr_extent(lbuf->membuddy, &alloc);
lbuf
->
dsk
reqs
=
NULL
;
lbuf->dsk
pool
= NULL;
}
}
else
if
(
lbuf
->
dsk
reqs
_mem
.
reqs
.
magic
==
BUDDY_REQS_MAGIC
)
else if (lbuf->dsk
pool
_mem.reqs.magic == BUDDY_REQS_MAGIC)
logbuffer_fini_dsk
reqs
_mem
(
lbuf
);
logbuffer_fini_dsk
pool
_mem(lbuf);
AZ
(
lbuf
->
dsk
reqs
);
AZ(lbuf->dsk
pool
);
AZ
(
lbuf
->
dsk
reqs
_mem
.
reqs
.
magic
);
AZ(lbuf->dsk
pool
_mem.reqs.magic);
}
}
static void
static void
...
@@ -2039,7 +2039,7 @@ logbuffer_fini(struct fellow_logbuffer *lbuf)
...
@@ -2039,7 +2039,7 @@ logbuffer_fini(struct fellow_logbuffer *lbuf)
assert(lbuf->state == LBUF_FINI);
assert(lbuf->state == LBUF_FINI);
AZ(lbuf->regions_to_free);
AZ(lbuf->regions_to_free);
logbuffer_fini_dsk
reqs
(
lbuf
);
logbuffer_fini_dsk
pool
(lbuf);
logbuffer_fini_ff_mem(lbuf);
logbuffer_fini_ff_mem(lbuf);
if (lbuf->fdil.ioctx != NULL) {
if (lbuf->fdil.ioctx != NULL) {
...
@@ -2129,7 +2129,7 @@ logbuffer_recycle(struct fellow_fd *ffd, struct fellow_logbuffer *lbuf,
...
@@ -2129,7 +2129,7 @@ logbuffer_recycle(struct fellow_fd *ffd, struct fellow_logbuffer *lbuf,
CHECK_OBJ_NOTNULL(ffd, FELLOW_FD_MAGIC);
CHECK_OBJ_NOTNULL(ffd, FELLOW_FD_MAGIC);
AN(lbuf);
AN(lbuf);
logbuffer_fini_dsk
reqs
(
lbuf
);
logbuffer_fini_dsk
pool
(lbuf);
logbuffer_assert_empty(lbuf);
logbuffer_assert_empty(lbuf);
logbuffer_wait_flush_fini(lbuf);
logbuffer_wait_flush_fini(lbuf);
...
@@ -2188,7 +2188,7 @@ logbuffer_init(struct fellow_fd *ffd, struct fellow_logbuffer *lbuf,
...
@@ -2188,7 +2188,7 @@ logbuffer_init(struct fellow_fd *ffd, struct fellow_logbuffer *lbuf,
static inline void
static inline void
logbuffer_take(struct fellow_logbuffer *to, struct fellow_logbuffer *from)
logbuffer_take(struct fellow_logbuffer *to, struct fellow_logbuffer *from)
{
{
logbuffer_fini_dsk
reqs
_mem
(
from
);
logbuffer_fini_dsk
pool
_mem(from);
logbuffer_fini_ff_mem(from);
logbuffer_fini_ff_mem(from);
logbuffer_wait_flush_fini(from);
logbuffer_wait_flush_fini(from);
TAKE(*to, *from);
TAKE(*to, *from);
...
@@ -2315,18 +2315,18 @@ logbuffer_fill_dskreq(const struct fellow_logbuffer *lbuf,
...
@@ -2315,18 +2315,18 @@ logbuffer_fill_dskreq(const struct fellow_logbuffer *lbuf,
}
}
static struct buddy_reqs *
static struct buddy_reqs *
logbuffer_get_dsk
reqs
(
struct
fellow_logbuffer
*
lbuf
)
logbuffer_get_dsk
pool
(struct fellow_logbuffer *lbuf)
{
{
struct buddy_reqs *reqs;
struct buddy_reqs *reqs;
int i;
int i;
AN
(
lbuf
->
dsk
reqs
);
AN(lbuf->dsk
pool
);
/* i < 3: If both reqs are empty, at iteration 3 we
/* i < 3: If both reqs are empty, at iteration 3 we
* must hit the first filled alloc
* must hit the first filled alloc
*/
*/
for (i = 0; i < 3; i++) {
for (i = 0; i < 3; i++) {
AZ(lbuf->active_reqs & ~1);
AZ(lbuf->active_reqs & ~1);
reqs
=
&
(
*
lbuf
->
dsk
reqs
)[
lbuf
->
active_reqs
].
reqs
;
reqs = &(*lbuf->dsk
pool
)[lbuf->active_reqs].reqs;
CHECK_OBJ_NOTNULL(reqs, BUDDY_REQS_MAGIC);
CHECK_OBJ_NOTNULL(reqs, BUDDY_REQS_MAGIC);
if (buddy_reqs_next_ready(reqs))
if (buddy_reqs_next_ready(reqs))
return (reqs);
return (reqs);
...
@@ -2342,13 +2342,13 @@ logbuffer_get_dskreqs(struct fellow_logbuffer *lbuf)
...
@@ -2342,13 +2342,13 @@ logbuffer_get_dskreqs(struct fellow_logbuffer *lbuf)
}
}
static void
static void
logbuffer_prep_dsk
reqs
(
struct
fellow_logbuffer
*
lbuf
,
unsigned
urgent
)
logbuffer_prep_dsk
pool
(struct fellow_logbuffer *lbuf, unsigned urgent)
{
{
struct
lbuf_dsk
rsv_s
(
*
dskreqs
)[
2
];
struct lbuf_dsk
pool_s (*dskpool
)[2];
struct buddy_ptr_extent alloc;
struct buddy_ptr_extent alloc;
unsigned i;
unsigned i;
if
(
lbuf
->
dsk
reqs
!=
NULL
)
if (lbuf->dsk
pool
!= NULL)
return;
return;
assert(logbuffer_can(lbuf, LBUF_CAN_FLUSH));
assert(logbuffer_can(lbuf, LBUF_CAN_FLUSH));
...
@@ -2362,35 +2362,35 @@ logbuffer_prep_dskreqs(struct fellow_logbuffer *lbuf, unsigned urgent)
...
@@ -2362,35 +2362,35 @@ logbuffer_prep_dskreqs(struct fellow_logbuffer *lbuf, unsigned urgent)
*
*
* XXX is 25% a good measure?
* XXX is 25% a good measure?
*/
*/
if
(
lbuf
->
dsk
reqs
_mem
.
reqs
.
magic
==
0
&&
if (lbuf->dsk
pool
_mem.reqs.magic == 0 &&
(lbuf->logreg == NULL ||
(lbuf->logreg == NULL ||
lbuf->logreg->free_n * 4 < lbuf->logreg->space ||
lbuf->logreg->free_n * 4 < lbuf->logreg->space ||
lbuf->logreg->free_n < lbuf->n * 4)) {
lbuf->logreg->free_n < lbuf->n * 4)) {
BUDDY_REQS_INIT
(
&
lbuf
->
dsk
reqs
_mem
,
lbuf
->
membuddy
);
BUDDY_REQS_INIT(&lbuf->dsk
pool
_mem, lbuf->membuddy);
BUDDY_REQS_PRI
(
&
lbuf
->
dsk
reqs
_mem
.
reqs
,
FEP_MEM_LOG
);
BUDDY_REQS_PRI(&lbuf->dsk
pool
_mem.reqs, FEP_MEM_LOG);
AN
(
buddy_req_extent
(
&
lbuf
->
dsk
reqs
_mem
.
reqs
,
AN(buddy_req_extent(&lbuf->dsk
pool
_mem.reqs,
sizeof
*
lbuf
->
dsk
reqs
,
0
));
sizeof *lbuf->dsk
pool
, 0));
(
void
)
buddy_alloc_async
(
&
lbuf
->
dsk
reqs
_mem
.
reqs
);
(void) buddy_alloc_async(&lbuf->dsk
pool
_mem.reqs);
}
}
if
(
lbuf
->
dsk
reqs
_mem
.
reqs
.
magic
==
BUDDY_REQS_MAGIC
&&
if (lbuf->dsk
pool
_mem.reqs.magic == BUDDY_REQS_MAGIC &&
urgent > 0)
urgent > 0)
(
void
)
buddy_alloc_async_wait
(
&
lbuf
->
dsk
reqs
_mem
.
reqs
);
(void) buddy_alloc_async_wait(&lbuf->dsk
pool
_mem.reqs);
if
(
lbuf
->
dsk
reqs
_mem
.
reqs
.
magic
==
BUDDY_REQS_MAGIC
&&
if (lbuf->dsk
pool
_mem.reqs.magic == BUDDY_REQS_MAGIC &&
buddy_alloc_async_ready
(
&
lbuf
->
dsk
reqs
_mem
.
reqs
))
{
buddy_alloc_async_ready(&lbuf->dsk
pool
_mem.reqs)) {
alloc
=
buddy_get_ptr_extent
(
&
lbuf
->
dsk
reqs
_mem
.
reqs
,
0
);
alloc = buddy_get_ptr_extent(&lbuf->dsk
pool
_mem.reqs, 0);
buddy_alloc_wait_done
(
&
lbuf
->
dsk
reqs
_mem
.
reqs
);
buddy_alloc_wait_done(&lbuf->dsk
pool
_mem.reqs);
lbuf
->
dsk
reqs
_mem
.
reqs
.
magic
=
0
;
lbuf->dsk
pool
_mem.reqs.magic = 0;
AN(alloc.ptr);
AN(alloc.ptr);
assert
(
alloc
.
size
>=
sizeof
*
lbuf
->
dsk
reqs
);
assert(alloc.size >= sizeof *lbuf->dsk
pool
);
dsk
reqs
=
alloc
.
ptr
;
dsk
pool
= alloc.ptr;
for (i = 0; i < 2; i++) {
for (i = 0; i < 2; i++) {
BUDDY_REQS_INIT
(
&
(
*
dsk
reqs
)[
i
],
lbuf
->
dskbuddy
);
BUDDY_REQS_INIT(&(*dsk
pool
)[i], lbuf->dskbuddy);
logbuffer_fill_dskreq
(
lbuf
,
&
(
*
dsk
reqs
)[
i
].
reqs
);
logbuffer_fill_dskreq(lbuf, &(*dsk
pool
)[i].reqs);
}
}
lbuf
->
dsk
reqs
=
dskreqs
;
lbuf->dsk
pool = dskpool
;
}
}
}
}
...
@@ -2423,16 +2423,16 @@ logbuffer_alloc_some(struct fellow_logbuffer *lbuf,
...
@@ -2423,16 +2423,16 @@ logbuffer_alloc_some(struct fellow_logbuffer *lbuf,
n--;
n--;
}
}
logbuffer_prep_dsk
reqs
(
lbuf
,
n
);
logbuffer_prep_dsk
pool
(lbuf, n);
if (n == 0)
if (n == 0)
return;
return;
AN
(
lbuf
->
dsk
reqs
);
AN(lbuf->dsk
pool
);
while (n > 0) {
while (n > 0) {
log_blocks_alloc_from_reqs(
log_blocks_alloc_from_reqs(
logbuffer_get_dsk
reqs
(
lbuf
),
logbuffer_get_dsk
pool
(lbuf),
&arr, &n);
&arr, &n);
}
}
...
@@ -3187,11 +3187,11 @@ logbuffer_availblks(const struct fellow_logbuffer *lbuf)
...
@@ -3187,11 +3187,11 @@ logbuffer_availblks(const struct fellow_logbuffer *lbuf)
if (lbuf->logreg != NULL)
if (lbuf->logreg != NULL)
avail += lbuf->logreg->free_n;
avail += lbuf->logreg->free_n;
if
(
lbuf
->
dsk
reqs
!=
NULL
)
{
if (lbuf->dsk
pool
!= NULL) {
avail += buddy_reqs_next_ready(
avail += buddy_reqs_next_ready(
&
(
*
lbuf
->
dsk
reqs
)[
0
].
reqs
);
&(*lbuf->dsk
pool
)[0].reqs);
avail += buddy_reqs_next_ready(
avail += buddy_reqs_next_ready(
&
(
*
lbuf
->
dsk
reqs
)[
1
].
reqs
);
&(*lbuf->dsk
pool
)[1].reqs);
}
}
return (avail);
return (avail);
}
}
...
@@ -3292,7 +3292,7 @@ logbuffer_addblks(struct fellow_fd *ffd,
...
@@ -3292,7 +3292,7 @@ logbuffer_addblks(struct fellow_fd *ffd,
AZ(lbuf->active.block);
AZ(lbuf->active.block);
}
}
if(logbuffer_can(lbuf, LBUF_CAN_FLUSH))
if(logbuffer_can(lbuf, LBUF_CAN_FLUSH))
logbuffer_prep_dsk
reqs
(
lbuf
,
0
);
logbuffer_prep_dsk
pool
(lbuf, 0);
}
}
enum getblk_e {
enum getblk_e {
...
...
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