Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
U
unique-xids
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
unique-xids
Commits
1bda6584
Commit
1bda6584
authored
Feb 19, 2012
by
Poul-Henning Kamp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Hide the hash preallocation in cache_hash.c again, by tasking persistent
with allocating its own objcores.
parent
06b6c788
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
26 additions
and
30 deletions
+26
-30
cache_hash.c
bin/varnishd/cache/cache_hash.c
+16
-19
flint.lnt
bin/varnishd/flint.lnt
+1
-0
hash_critbit.c
bin/varnishd/hash/hash_critbit.c
+4
-3
hash_slinger.h
bin/varnishd/hash/hash_slinger.h
+2
-3
storage_persistent_silo.c
bin/varnishd/storage/storage_persistent_silo.c
+3
-5
No files found.
bin/varnishd/cache/cache_hash.c
View file @
1bda6584
...
...
@@ -65,17 +65,14 @@ static const struct hash_slinger *hash;
/*---------------------------------------------------------------------*/
/* Precreate an objhead and object for later use */
void
HSH_Prealloc
(
const
struct
sess
*
sp
)
static
void
hsh_prealloc
(
struct
worker
*
wrk
)
{
struct
worker
*
wrk
;
struct
objhead
*
oh
;
struct
objcore
*
oc
;
struct
waitinglist
*
wl
;
CHECK_OBJ_NOTNULL
(
sp
,
SESS_MAGIC
);
CHECK_OBJ_NOTNULL
(
sp
->
wrk
,
WORKER_MAGIC
);
wrk
=
sp
->
wrk
;
CHECK_OBJ_NOTNULL
(
wrk
,
WORKER_MAGIC
);
if
(
wrk
->
nobjcore
==
NULL
)
{
ALLOC_OBJ
(
oc
,
OBJCORE_MAGIC
);
...
...
@@ -107,7 +104,7 @@ HSH_Prealloc(const struct sess *sp)
CHECK_OBJ_NOTNULL
(
wrk
->
nwaitinglist
,
WAITINGLIST_MAGIC
);
if
(
hash
->
prep
!=
NULL
)
hash
->
prep
(
sp
);
hash
->
prep
(
wrk
);
}
void
...
...
@@ -247,24 +244,26 @@ hsh_testmagic(void *result)
* Return it with a reference held.
*/
struct
objcore
*
HSH_Insert
(
const
struct
sess
*
sp
)
void
HSH_Insert
(
const
struct
sess
*
sp
,
const
void
*
digest
,
struct
objcore
*
oc
)
{
struct
worker
*
wrk
;
struct
objhead
*
oh
;
struct
objcore
*
oc
;
CHECK_OBJ_NOTNULL
(
sp
,
SESS_MAGIC
);
CHECK_OBJ_NOTNULL
(
sp
->
wrk
,
WORKER_MAGIC
);
AN
(
hash
);
AN
(
digest
);
CHECK_OBJ_NOTNULL
(
oc
,
OBJCORE_MAGIC
);
wrk
=
sp
->
wrk
;
CHECK_OBJ_NOTNULL
(
wrk
,
WORKER_MAGIC
);
HSH_Prealloc
(
sp
);
hsh_prealloc
(
wrk
);
if
(
cache_param
->
diag_bitmap
&
0x80000000
)
hsh_testmagic
(
sp
->
wrk
->
nobjhead
->
digest
);
hsh_testmagic
(
wrk
->
nobjhead
->
digest
);
AZ
(
sp
->
req
);
AN
(
wrk
->
nobjhead
);
memcpy
(
wrk
->
nobjhead
->
digest
,
digest
,
SHA256_LEN
);
oh
=
hash
->
lookup
(
sp
,
wrk
->
nobjhead
);
CHECK_OBJ_NOTNULL
(
oh
,
OBJHEAD_MAGIC
);
if
(
oh
==
wrk
->
nobjhead
)
...
...
@@ -273,8 +272,6 @@ HSH_Insert(const struct sess *sp)
assert
(
oh
->
refcnt
>
0
);
/* Insert (precreated) objcore in objecthead */
oc
=
wrk
->
nobjcore
;
wrk
->
nobjcore
=
NULL
;
oc
->
refcnt
=
1
;
CHECK_OBJ_NOTNULL
(
oc
,
OBJCORE_MAGIC
);
AZ
(
oc
->
flags
&
OC_F_BUSY
);
...
...
@@ -283,8 +280,8 @@ HSH_Insert(const struct sess *sp)
/* NB: do not deref objhead the new object inherits our reference */
oc
->
objhead
=
oh
;
Lck_Unlock
(
&
oh
->
mtx
);
sp
->
wrk
->
stats
.
n_vampireobject
++
;
return
(
oc
)
;
wrk
->
stats
.
n_objectcore
++
;
wrk
->
stats
.
n_vampireobject
++
;
}
/*---------------------------------------------------------------------
...
...
@@ -307,7 +304,7 @@ HSH_Lookup(struct sess *sp, struct objhead **poh)
AN
(
hash
);
wrk
=
sp
->
wrk
;
HSH_Prealloc
(
sp
);
hsh_prealloc
(
wrk
);
memcpy
(
sp
->
wrk
->
nobjhead
->
digest
,
sp
->
req
->
digest
,
sizeof
sp
->
req
->
digest
);
if
(
cache_param
->
diag_bitmap
&
0x80000000
)
...
...
bin/varnishd/flint.lnt
View file @
1bda6584
...
...
@@ -116,6 +116,7 @@
-emacro(527, NEEDLESS_RETURN) // unreachable code
-sem(EXP_Inject, custodial(1))
-sem(WS_Init, custodial(2))
-sem(http_Setup, custodial(2))
...
...
bin/varnishd/hash/hash_critbit.c
View file @
1bda6584
...
...
@@ -469,13 +469,14 @@ hcb_lookup(const struct sess *sp, struct objhead *noh)
}
static
void
hcb_prep
(
const
struct
sess
*
sp
)
hcb_prep
(
struct
worker
*
wrk
)
{
struct
hcb_y
*
y
;
if
(
sp
->
wrk
->
nhashpriv
==
NULL
)
{
if
(
wrk
->
nhashpriv
==
NULL
)
{
ALLOC_OBJ
(
y
,
HCB_Y_MAGIC
);
sp
->
wrk
->
nhashpriv
=
y
;
AN
(
y
);
wrk
->
nhashpriv
=
y
;
}
}
...
...
bin/varnishd/hash/hash_slinger.h
View file @
1bda6584
...
...
@@ -34,7 +34,7 @@ struct object;
typedef
void
hash_init_f
(
int
ac
,
char
*
const
*
av
);
typedef
void
hash_start_f
(
void
);
typedef
void
hash_prep_f
(
const
struct
sess
*
sp
);
typedef
void
hash_prep_f
(
struct
worker
*
);
typedef
struct
objhead
*
hash_lookup_f
(
const
struct
sess
*
sp
,
struct
objhead
*
nobj
);
typedef
int
hash_deref_f
(
struct
objhead
*
obj
);
...
...
@@ -51,7 +51,6 @@ struct hash_slinger {
};
/* cache_hash.c */
void
HSH_Prealloc
(
const
struct
sess
*
sp
);
void
HSH_Cleanup
(
struct
worker
*
w
);
struct
objcore
*
HSH_Lookup
(
struct
sess
*
sp
,
struct
objhead
**
poh
);
void
HSH_Unbusy
(
struct
objcore
*
);
...
...
@@ -59,7 +58,7 @@ void HSH_Ref(struct objcore *o);
void
HSH_Drop
(
struct
worker
*
,
struct
object
**
);
void
HSH_Init
(
const
struct
hash_slinger
*
slinger
);
void
HSH_AddString
(
const
struct
sess
*
sp
,
const
char
*
str
);
struct
objcore
*
HSH_Insert
(
const
struct
sess
*
sp
);
void
HSH_Insert
(
const
struct
sess
*
sp
,
const
void
*
hash
,
struct
objcore
*
);
void
HSH_Purge
(
const
struct
sess
*
,
struct
objhead
*
,
double
ttl
,
double
grace
);
void
HSH_config
(
const
char
*
h_arg
);
...
...
bin/varnishd/storage/storage_persistent_silo.c
View file @
1bda6584
...
...
@@ -150,15 +150,13 @@ smp_load_seg(const struct sess *sp, const struct smp_sc *sc,
for
(;
no
>
0
;
so
++
,
no
--
)
{
if
(
so
->
ttl
==
0
||
so
->
ttl
<
t_now
)
continue
;
HSH_Prealloc
(
sp
);
oc
=
sp
->
wrk
->
nobjcore
;
ALLOC_OBJ
(
oc
,
OBJCORE_MAGIC
);
AN
(
oc
)
;
oc
->
flags
|=
OC_F_NEEDFIXUP
|
OC_F_LRUDONTMOVE
;
oc
->
flags
&=
~
OC_F_BUSY
;
smp_init_oc
(
oc
,
sg
,
no
);
oc
->
ban
=
BAN_RefBan
(
oc
,
so
->
ban
,
sc
->
tailban
);
memcpy
(
sp
->
wrk
->
nobjhead
->
digest
,
so
->
hash
,
SHA256_LEN
);
(
void
)
HSH_Insert
(
sp
);
AZ
(
sp
->
wrk
->
nobjcore
);
HSH_Insert
(
sp
,
so
->
hash
,
oc
);
EXP_Inject
(
oc
,
sg
->
lru
,
so
->
ttl
);
sg
->
nobj
++
;
}
...
...
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