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
e89ff1ee
Unverified
Commit
e89ff1ee
authored
Dec 13, 2023
by
Nils Goroll
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Rename logbuffer dskrsv/dskreqs -> dskpool
parent
45ef5a8d
Changes
1
Hide 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 @
e89ff1ee
...
...
@@ -421,9 +421,9 @@ assert_lbuf_dsk_resv(void)
}
// dsk request
BUDDY_REQS
(
lbuf_dsk
rsv
_s
,
LBUF_DSK_RSV_REQS
);
// this is the memory request for dsk
rsv
BUDDY_REQS
(
lbuf_dsk
rsv
_mem_s
,
1
);
BUDDY_REQS
(
lbuf_dsk
pool
_s
,
LBUF_DSK_RSV_REQS
);
// this is the memory request for dsk
pool
BUDDY_REQS
(
lbuf_dsk
pool
_mem_s
,
1
);
// memory for flush_finish
BUDDY_REQS
(
lbuf_ff_mem_s
,
1
);
...
...
@@ -466,8 +466,8 @@ struct fellow_logbuffer {
off_t
tail_off
;
struct
fellow_logbuffer_ff
*
ff
;
struct
lbuf_ff_mem_s
ff_mem
;
struct
lbuf_dsk
rsv_mem_s
dskreqs
_mem
;
struct
lbuf_dsk
rsv_s
(
*
dskreqs
)[
2
];
struct
lbuf_dsk
pool_mem_s
dskpool
_mem
;
struct
lbuf_dsk
pool_s
(
*
dskpool
)[
2
];
unsigned
active_reqs
;
};
...
...
@@ -1999,33 +1999,33 @@ logbuffer_fini_ff_mem(struct fellow_logbuffer *lbuf)
}
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
;
buddy_alloc_wait_done
(
&
lbuf
->
dsk
reqs
_mem
.
reqs
);
lbuf
->
dsk
reqs
_mem
.
reqs
.
magic
=
0
;
buddy_alloc_wait_done
(
&
lbuf
->
dsk
pool
_mem
.
reqs
);
lbuf
->
dsk
pool
_mem
.
reqs
.
magic
=
0
;
}
static
void
logbuffer_fini_dsk
reqs
(
struct
fellow_logbuffer
*
lbuf
)
logbuffer_fini_dsk
pool
(
struct
fellow_logbuffer
*
lbuf
)
{
struct
buddy_ptr_extent
alloc
;
size_t
sz
;
if
(
lbuf
->
dsk
reqs
!=
NULL
)
{
buddy_alloc_wait_done
(
&
(
*
lbuf
->
dsk
reqs
)[
0
].
reqs
);
buddy_alloc_wait_done
(
&
(
*
lbuf
->
dsk
reqs
)[
1
].
reqs
);
sz
=
buddy_rndup
(
lbuf
->
membuddy
,
sizeof
*
lbuf
->
dsk
reqs
);
alloc
=
BUDDY_PTR_EXTENT
(
lbuf
->
dsk
reqs
,
sz
);
if
(
lbuf
->
dsk
pool
!=
NULL
)
{
buddy_alloc_wait_done
(
&
(
*
lbuf
->
dsk
pool
)[
0
].
reqs
);
buddy_alloc_wait_done
(
&
(
*
lbuf
->
dsk
pool
)[
1
].
reqs
);
sz
=
buddy_rndup
(
lbuf
->
membuddy
,
sizeof
*
lbuf
->
dsk
pool
);
alloc
=
BUDDY_PTR_EXTENT
(
lbuf
->
dsk
pool
,
sz
);
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
)
logbuffer_fini_dsk
reqs
_mem
(
lbuf
);
AZ
(
lbuf
->
dsk
reqs
);
AZ
(
lbuf
->
dsk
reqs
_mem
.
reqs
.
magic
);
else
if
(
lbuf
->
dsk
pool
_mem
.
reqs
.
magic
==
BUDDY_REQS_MAGIC
)
logbuffer_fini_dsk
pool
_mem
(
lbuf
);
AZ
(
lbuf
->
dsk
pool
);
AZ
(
lbuf
->
dsk
pool
_mem
.
reqs
.
magic
);
}
static
void
...
...
@@ -2039,7 +2039,7 @@ logbuffer_fini(struct fellow_logbuffer *lbuf)
assert
(
lbuf
->
state
==
LBUF_FINI
);
AZ
(
lbuf
->
regions_to_free
);
logbuffer_fini_dsk
reqs
(
lbuf
);
logbuffer_fini_dsk
pool
(
lbuf
);
logbuffer_fini_ff_mem
(
lbuf
);
if
(
lbuf
->
fdil
.
ioctx
!=
NULL
)
{
...
...
@@ -2129,7 +2129,7 @@ logbuffer_recycle(struct fellow_fd *ffd, struct fellow_logbuffer *lbuf,
CHECK_OBJ_NOTNULL
(
ffd
,
FELLOW_FD_MAGIC
);
AN
(
lbuf
);
logbuffer_fini_dsk
reqs
(
lbuf
);
logbuffer_fini_dsk
pool
(
lbuf
);
logbuffer_assert_empty
(
lbuf
);
logbuffer_wait_flush_fini
(
lbuf
);
...
...
@@ -2188,7 +2188,7 @@ logbuffer_init(struct fellow_fd *ffd, struct fellow_logbuffer *lbuf,
static
inline
void
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_wait_flush_fini
(
from
);
TAKE
(
*
to
,
*
from
);
...
...
@@ -2315,18 +2315,18 @@ logbuffer_fill_dskreq(const struct fellow_logbuffer *lbuf,
}
static
struct
buddy_reqs
*
logbuffer_get_dsk
reqs
(
struct
fellow_logbuffer
*
lbuf
)
logbuffer_get_dsk
pool
(
struct
fellow_logbuffer
*
lbuf
)
{
struct
buddy_reqs
*
reqs
;
int
i
;
AN
(
lbuf
->
dsk
reqs
);
AN
(
lbuf
->
dsk
pool
);
/* i < 3: If both reqs are empty, at iteration 3 we
* must hit the first filled alloc
*/
for
(
i
=
0
;
i
<
3
;
i
++
)
{
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
);
if
(
buddy_reqs_next_ready
(
reqs
))
return
(
reqs
);
...
...
@@ -2342,13 +2342,13 @@ logbuffer_get_dskreqs(struct fellow_logbuffer *lbuf)
}
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
;
unsigned
i
;
if
(
lbuf
->
dsk
reqs
!=
NULL
)
if
(
lbuf
->
dsk
pool
!=
NULL
)
return
;
assert
(
logbuffer_can
(
lbuf
,
LBUF_CAN_FLUSH
));
...
...
@@ -2362,35 +2362,35 @@ logbuffer_prep_dskreqs(struct fellow_logbuffer *lbuf, unsigned urgent)
*
* 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
->
free_n
*
4
<
lbuf
->
logreg
->
space
||
lbuf
->
logreg
->
free_n
<
lbuf
->
n
*
4
))
{
BUDDY_REQS_INIT
(
&
lbuf
->
dsk
reqs
_mem
,
lbuf
->
membuddy
);
BUDDY_REQS_PRI
(
&
lbuf
->
dsk
reqs
_mem
.
reqs
,
FEP_MEM_LOG
);
AN
(
buddy_req_extent
(
&
lbuf
->
dsk
reqs
_mem
.
reqs
,
sizeof
*
lbuf
->
dsk
reqs
,
0
));
(
void
)
buddy_alloc_async
(
&
lbuf
->
dsk
reqs
_mem
.
reqs
);
BUDDY_REQS_INIT
(
&
lbuf
->
dsk
pool
_mem
,
lbuf
->
membuddy
);
BUDDY_REQS_PRI
(
&
lbuf
->
dsk
pool
_mem
.
reqs
,
FEP_MEM_LOG
);
AN
(
buddy_req_extent
(
&
lbuf
->
dsk
pool
_mem
.
reqs
,
sizeof
*
lbuf
->
dsk
pool
,
0
));
(
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
)
(
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
&&
buddy_alloc_async_ready
(
&
lbuf
->
dsk
reqs
_mem
.
reqs
))
{
alloc
=
buddy_get_ptr_extent
(
&
lbuf
->
dsk
reqs
_mem
.
reqs
,
0
);
buddy_alloc_wait_done
(
&
lbuf
->
dsk
reqs
_mem
.
reqs
);
lbuf
->
dsk
reqs
_mem
.
reqs
.
magic
=
0
;
if
(
lbuf
->
dsk
pool
_mem
.
reqs
.
magic
==
BUDDY_REQS_MAGIC
&&
buddy_alloc_async_ready
(
&
lbuf
->
dsk
pool
_mem
.
reqs
))
{
alloc
=
buddy_get_ptr_extent
(
&
lbuf
->
dsk
pool
_mem
.
reqs
,
0
);
buddy_alloc_wait_done
(
&
lbuf
->
dsk
pool
_mem
.
reqs
);
lbuf
->
dsk
pool
_mem
.
reqs
.
magic
=
0
;
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
++
)
{
BUDDY_REQS_INIT
(
&
(
*
dsk
reqs
)[
i
],
lbuf
->
dskbuddy
);
logbuffer_fill_dskreq
(
lbuf
,
&
(
*
dsk
reqs
)[
i
].
reqs
);
BUDDY_REQS_INIT
(
&
(
*
dsk
pool
)[
i
],
lbuf
->
dskbuddy
);
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,
n
--
;
}
logbuffer_prep_dsk
reqs
(
lbuf
,
n
);
logbuffer_prep_dsk
pool
(
lbuf
,
n
);
if
(
n
==
0
)
return
;
AN
(
lbuf
->
dsk
reqs
);
AN
(
lbuf
->
dsk
pool
);
while
(
n
>
0
)
{
log_blocks_alloc_from_reqs
(
logbuffer_get_dsk
reqs
(
lbuf
),
logbuffer_get_dsk
pool
(
lbuf
),
&
arr
,
&
n
);
}
...
...
@@ -3187,11 +3187,11 @@ logbuffer_availblks(const struct fellow_logbuffer *lbuf)
if
(
lbuf
->
logreg
!=
NULL
)
avail
+=
lbuf
->
logreg
->
free_n
;
if
(
lbuf
->
dsk
reqs
!=
NULL
)
{
if
(
lbuf
->
dsk
pool
!=
NULL
)
{
avail
+=
buddy_reqs_next_ready
(
&
(
*
lbuf
->
dsk
reqs
)[
0
].
reqs
);
&
(
*
lbuf
->
dsk
pool
)[
0
].
reqs
);
avail
+=
buddy_reqs_next_ready
(
&
(
*
lbuf
->
dsk
reqs
)[
1
].
reqs
);
&
(
*
lbuf
->
dsk
pool
)[
1
].
reqs
);
}
return
(
avail
);
}
...
...
@@ -3292,7 +3292,7 @@ logbuffer_addblks(struct fellow_fd *ffd,
AZ
(
lbuf
->
active
.
block
);
}
if
(
logbuffer_can
(
lbuf
,
LBUF_CAN_FLUSH
))
logbuffer_prep_dsk
reqs
(
lbuf
,
0
);
logbuffer_prep_dsk
pool
(
lbuf
,
0
);
}
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