Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
varnish-cache
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
varnishcache
varnish-cache
Commits
ac859374
Commit
ac859374
authored
Feb 14, 2012
by
Poul-Henning Kamp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
More argument strength reduction to reduce the spread of struct wrk
parent
fe8ec801
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
40 additions
and
59 deletions
+40
-59
cache.h
bin/varnishd/cache/cache.h
+10
-11
cache_ban.c
bin/varnishd/cache/cache_ban.c
+1
-1
cache_center.c
bin/varnishd/cache/cache_center.c
+5
-3
cache_expire.c
bin/varnishd/cache/cache_expire.c
+4
-4
cache_hash.c
bin/varnishd/cache/cache_hash.c
+8
-20
cache_ws.c
bin/varnishd/cache/cache_ws.c
+0
-8
hash_slinger.h
bin/varnishd/hash/hash_slinger.h
+1
-1
stevedore.c
bin/varnishd/storage/stevedore.c
+4
-4
storage_persistent_silo.c
bin/varnishd/storage/storage_persistent_silo.c
+7
-7
No files found.
bin/varnishd/cache/cache.h
View file @
ac859374
...
...
@@ -357,8 +357,8 @@ struct storage {
* housekeeping fields parts of an object.
*/
typedef
struct
object
*
getobj_f
(
struct
worker
*
wrk
,
struct
objcore
*
oc
);
typedef
unsigned
getxid_f
(
struct
worker
*
wrk
,
struct
objcore
*
oc
);
typedef
struct
object
*
getobj_f
(
struct
dstat
*
ds
,
struct
objcore
*
oc
);
typedef
unsigned
getxid_f
(
struct
dstat
*
ds
,
struct
objcore
*
oc
);
typedef
void
updatemeta_f
(
struct
objcore
*
oc
);
typedef
void
freeobj_f
(
struct
objcore
*
oc
);
typedef
struct
lru
*
getlru_f
(
const
struct
objcore
*
oc
);
...
...
@@ -395,24 +395,24 @@ struct objcore {
};
static
inline
unsigned
oc_getxid
(
struct
worker
*
wrk
,
struct
objcore
*
oc
)
oc_getxid
(
struct
dstat
*
ds
,
struct
objcore
*
oc
)
{
CHECK_OBJ_NOTNULL
(
oc
,
OBJCORE_MAGIC
);
AN
(
oc
->
methods
);
AN
(
oc
->
methods
->
getxid
);
return
(
oc
->
methods
->
getxid
(
wrk
,
oc
));
return
(
oc
->
methods
->
getxid
(
ds
,
oc
));
}
static
inline
struct
object
*
oc_getobj
(
struct
worker
*
wrk
,
struct
objcore
*
oc
)
oc_getobj
(
struct
dstat
*
ds
,
struct
objcore
*
oc
)
{
CHECK_OBJ_NOTNULL
(
oc
,
OBJCORE_MAGIC
);
AZ
(
oc
->
flags
&
OC_F_BUSY
);
AN
(
oc
->
methods
);
AN
(
oc
->
methods
->
getobj
);
return
(
oc
->
methods
->
getobj
(
wrk
,
oc
));
return
(
oc
->
methods
->
getobj
(
ds
,
oc
));
}
static
inline
void
...
...
@@ -1014,7 +1014,6 @@ void WS_Assert(const struct ws *ws);
void
WS_Reset
(
struct
ws
*
ws
,
char
*
p
);
char
*
WS_Alloc
(
struct
ws
*
ws
,
unsigned
bytes
);
char
*
WS_Snapshot
(
struct
ws
*
ws
);
unsigned
WS_Free
(
const
struct
ws
*
ws
);
/* rfc2616.c */
void
RFC2616_Ttl
(
const
struct
sess
*
sp
);
...
...
@@ -1092,11 +1091,11 @@ Tadd(txt *t, const char *p, int l)
}
static
inline
void
AssertO
bjBusy
(
const
struct
object
*
o
)
AssertO
CBusy
(
const
struct
objcore
*
oc
)
{
AN
(
o
->
objcore
);
AN
(
o
->
objcore
->
flags
&
OC_F_BUSY
);
AN
(
o
->
objcore
->
busyobj
);
AN
(
o
c
);
AN
(
o
c
->
flags
&
OC_F_BUSY
);
AN
(
o
c
->
busyobj
);
}
static
inline
void
...
...
bin/varnishd/cache/cache_ban.c
View file @
ac859374
...
...
@@ -891,7 +891,7 @@ ban_lurker_work(const struct sess *sp, unsigned pass)
/*
* Get the object and check it against all relevant bans
*/
o
=
oc_getobj
(
sp
->
wrk
,
oc
);
o
=
oc_getobj
(
&
sp
->
wrk
->
stats
,
oc
);
i
=
ban_check_object
(
o
,
sp
,
0
);
if
(
cache_param
->
diag_bitmap
&
0x80000
)
VSL
(
SLT_Debug
,
0
,
"lurker got: %p %d"
,
...
...
bin/varnishd/cache/cache_center.c
View file @
ac859374
...
...
@@ -915,7 +915,8 @@ cnt_fetchbody(struct sess *sp, struct worker *wrk, struct req *req)
EXP_Insert
(
req
->
obj
);
AN
(
req
->
obj
->
objcore
);
AN
(
req
->
obj
->
objcore
->
ban
);
HSH_Unbusy
(
wrk
);
AZ
(
req
->
obj
->
ws_o
->
overflow
);
HSH_Unbusy
(
req
->
obj
->
objcore
);
}
VBO_DerefBusyObj
(
wrk
,
&
wrk
->
busyobj
);
wrk
->
acct_tmp
.
fetch
++
;
...
...
@@ -961,7 +962,8 @@ cnt_streambody(struct sess *sp, struct worker *wrk, struct req *req)
EXP_Insert
(
req
->
obj
);
AN
(
req
->
obj
->
objcore
);
AN
(
req
->
obj
->
objcore
->
ban
);
HSH_Unbusy
(
wrk
);
AZ
(
req
->
obj
->
ws_o
->
overflow
);
HSH_Unbusy
(
req
->
obj
->
objcore
);
}
else
{
req
->
doclose
=
"Stream error"
;
}
...
...
@@ -1171,7 +1173,7 @@ cnt_lookup(struct sess *sp, struct worker *wrk, struct req *req)
return
(
0
);
}
o
=
oc_getobj
(
wrk
,
oc
);
o
=
oc_getobj
(
&
wrk
->
stats
,
oc
);
CHECK_OBJ_NOTNULL
(
o
,
OBJECT_MAGIC
);
req
->
obj
=
o
;
...
...
bin/varnishd/cache/cache_expire.c
View file @
ac859374
...
...
@@ -224,7 +224,7 @@ EXP_Insert(struct object *o)
CHECK_OBJ_NOTNULL
(
o
,
OBJECT_MAGIC
);
oc
=
o
->
objcore
;
CHECK_OBJ_NOTNULL
(
oc
,
OBJCORE_MAGIC
);
AssertO
bjBusy
(
o
);
AssertO
CBusy
(
oc
);
HSH_Ref
(
oc
);
assert
(
o
->
exp
.
entered
!=
0
&&
!
isnan
(
o
->
exp
.
entered
));
...
...
@@ -399,9 +399,9 @@ exp_timer(struct sess *sp, void *priv)
VSC_C_main
->
n_expired
++
;
CHECK_OBJ_NOTNULL
(
oc
->
objhead
,
OBJHEAD_MAGIC
);
o
=
oc_getobj
(
sp
->
wrk
,
oc
);
o
=
oc_getobj
(
&
sp
->
wrk
->
stats
,
oc
);
WSL
(
sp
->
wrk
->
vsl
,
SLT_ExpKill
,
0
,
"%u %.0f"
,
oc_getxid
(
sp
->
wrk
,
oc
),
EXP_Ttl
(
NULL
,
o
)
-
t
);
oc_getxid
(
&
sp
->
wrk
->
stats
,
oc
),
EXP_Ttl
(
NULL
,
o
)
-
t
);
(
void
)
HSH_Deref
(
&
sp
->
wrk
->
stats
,
oc
,
NULL
);
}
NEEDLESS_RETURN
(
NULL
);
...
...
@@ -445,7 +445,7 @@ EXP_NukeOne(struct worker *wrk, struct lru *lru)
return
(
-
1
);
/* XXX: bad idea for -spersistent */
WSL
(
wrk
->
vsl
,
SLT_ExpKill
,
0
,
"%u LRU"
,
oc_getxid
(
wrk
,
oc
));
WSL
(
wrk
->
vsl
,
SLT_ExpKill
,
0
,
"%u LRU"
,
oc_getxid
(
&
wrk
->
stats
,
oc
));
(
void
)
HSH_Deref
(
&
wrk
->
stats
,
oc
,
NULL
);
return
(
1
);
}
...
...
bin/varnishd/cache/cache_hash.c
View file @
ac859374
...
...
@@ -353,7 +353,7 @@ HSH_Lookup(struct sess *sp, struct objhead **poh)
continue
;
}
o
=
oc_getobj
(
sp
->
wrk
,
oc
);
o
=
oc_getobj
(
&
sp
->
wrk
->
stats
,
oc
);
CHECK_OBJ_NOTNULL
(
o
,
OBJECT_MAGIC
);
if
(
o
->
exp
.
ttl
<=
0
.)
...
...
@@ -397,14 +397,14 @@ HSH_Lookup(struct sess *sp, struct objhead **poh)
&&
(
busy_oc
!=
NULL
/* Somebody else is already busy */
||
!
VDI_Healthy
(
sp
->
req
->
director
,
sp
)))
{
/* Or it is impossible to fetch */
o
=
oc_getobj
(
sp
->
wrk
,
grace_oc
);
o
=
oc_getobj
(
&
sp
->
wrk
->
stats
,
grace_oc
);
CHECK_OBJ_NOTNULL
(
o
,
OBJECT_MAGIC
);
oc
=
grace_oc
;
}
sp
->
req
->
objcore
=
NULL
;
if
(
oc
!=
NULL
&&
!
sp
->
req
->
hash_always_miss
)
{
o
=
oc_getobj
(
sp
->
wrk
,
oc
);
o
=
oc_getobj
(
&
sp
->
wrk
->
stats
,
oc
);
CHECK_OBJ_NOTNULL
(
o
,
OBJECT_MAGIC
);
assert
(
oc
->
objhead
==
oh
);
...
...
@@ -540,7 +540,7 @@ HSH_Purge(const struct sess *sp, struct objhead *oh, double ttl, double grace)
continue
;
}
(
void
)
oc_getobj
(
sp
->
wrk
,
oc
);
/* XXX: still needed ? */
(
void
)
oc_getobj
(
&
sp
->
wrk
->
stats
,
oc
);
/* XXX: still needed ? */
xxxassert
(
spc
>=
sizeof
*
ocp
);
oc
->
refcnt
++
;
...
...
@@ -557,7 +557,7 @@ HSH_Purge(const struct sess *sp, struct objhead *oh, double ttl, double grace)
for
(
n
=
0
;
n
<
nobj
;
n
++
)
{
oc
=
ocp
[
n
];
CHECK_OBJ_NOTNULL
(
oc
,
OBJCORE_MAGIC
);
o
=
oc_getobj
(
sp
->
wrk
,
oc
);
o
=
oc_getobj
(
&
sp
->
wrk
->
stats
,
oc
);
if
(
o
==
NULL
)
continue
;
CHECK_OBJ_NOTNULL
(
o
,
OBJECT_MAGIC
);
...
...
@@ -587,34 +587,23 @@ HSH_Drop(struct worker *wrk)
AssertObjCorePassOrBusy
(
o
->
objcore
);
o
->
exp
.
ttl
=
-
1
.;
if
(
o
->
objcore
!=
NULL
)
/* Pass has no objcore */
HSH_Unbusy
(
wrk
);
HSH_Unbusy
(
o
->
objcore
);
(
void
)
HSH_Deref
(
&
wrk
->
stats
,
NULL
,
&
wrk
->
sp
->
req
->
obj
);
}
void
HSH_Unbusy
(
struct
worker
*
wrk
)
HSH_Unbusy
(
struct
objcore
*
oc
)
{
struct
object
*
o
;
struct
objhead
*
oh
;
struct
objcore
*
oc
;
CHECK_OBJ_NOTNULL
(
wrk
,
WORKER_MAGIC
);
o
=
wrk
->
sp
->
req
->
obj
;
CHECK_OBJ_NOTNULL
(
o
,
OBJECT_MAGIC
);
oc
=
o
->
objcore
;
CHECK_OBJ_NOTNULL
(
oc
,
OBJCORE_MAGIC
);
oh
=
oc
->
objhead
;
CHECK_OBJ
(
oh
,
OBJHEAD_MAGIC
);
AssertO
bjBusy
(
o
);
AssertO
CBusy
(
oc
);
AN
(
oc
->
ban
);
assert
(
oc
->
refcnt
>
0
);
assert
(
oh
->
refcnt
>
0
);
if
(
o
->
ws_o
->
overflow
)
wrk
->
stats
.
n_objoverflow
++
;
if
(
cache_param
->
diag_bitmap
&
0x40
)
WSL
(
wrk
->
vsl
,
SLT_Debug
,
0
,
"Object %u workspace free %u"
,
o
->
xid
,
WS_Free
(
o
->
ws_o
));
/* XXX: pretouch neighbors on oh->objcs to prevent page-on under mtx */
Lck_Lock
(
&
oh
->
mtx
);
...
...
@@ -628,7 +617,6 @@ HSH_Unbusy(struct worker *wrk)
hsh_rush
(
oh
);
AN
(
oc
->
ban
);
Lck_Unlock
(
&
oh
->
mtx
);
assert
(
oc_getobj
(
wrk
,
oc
)
==
o
);
}
void
...
...
bin/varnishd/cache/cache_ws.c
View file @
ac859374
...
...
@@ -116,14 +116,6 @@ WS_Alloc(struct ws *ws, unsigned bytes)
return
(
r
);
}
unsigned
WS_Free
(
const
struct
ws
*
ws
)
{
WS_Assert
(
ws
);
return
(
ws
->
e
-
ws
->
f
);
}
char
*
WS_Snapshot
(
struct
ws
*
ws
)
{
...
...
bin/varnishd/hash/hash_slinger.h
View file @
ac859374
...
...
@@ -54,7 +54,7 @@ struct hash_slinger {
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
worker
*
wrk
);
void
HSH_Unbusy
(
struct
objcore
*
);
void
HSH_Ref
(
struct
objcore
*
o
);
void
HSH_Drop
(
struct
worker
*
wrk
);
void
HSH_Init
(
const
struct
hash_slinger
*
slinger
);
...
...
bin/varnishd/storage/stevedore.c
View file @
ac859374
...
...
@@ -49,20 +49,20 @@ static const struct stevedore * volatile stv_next;
*/
static
unsigned
__match_proto__
(
getxid_f
)
default_oc_getxid
(
struct
worker
*
wrk
,
struct
objcore
*
oc
)
default_oc_getxid
(
struct
dstat
*
ds
,
struct
objcore
*
oc
)
{
struct
object
*
o
;
o
=
oc_getobj
(
wrk
,
oc
);
o
=
oc_getobj
(
ds
,
oc
);
return
(
o
->
xid
);
}
static
struct
object
*
__match_proto__
(
getobj_f
)
default_oc_getobj
(
struct
worker
*
wrk
,
struct
objcore
*
oc
)
default_oc_getobj
(
struct
dstat
*
ds
,
struct
objcore
*
oc
)
{
struct
object
*
o
;
(
void
)
wrk
;
(
void
)
ds
;
if
(
oc
->
priv
==
NULL
)
return
(
NULL
);
CAST_OBJ_NOTNULL
(
o
,
oc
->
priv
,
OBJECT_MAGIC
);
...
...
bin/varnishd/storage/storage_persistent_silo.c
View file @
ac859374
...
...
@@ -370,13 +370,13 @@ smp_loaded_st(const struct smp_sc *sc, const struct smp_seg *sg,
*/
static
unsigned
__match_proto__
(
getxid_f
)
smp_oc_getxid
(
struct
worker
*
wrk
,
struct
objcore
*
oc
)
smp_oc_getxid
(
struct
dstat
*
ds
,
struct
objcore
*
oc
)
{
struct
object
*
o
;
struct
smp_seg
*
sg
;
struct
smp_object
*
so
;
(
void
)
wrk
;
(
void
)
ds
;
CHECK_OBJ_NOTNULL
(
oc
,
OBJCORE_MAGIC
);
CAST_OBJ_NOTNULL
(
sg
,
oc
->
priv
,
SMP_SEG_MAGIC
);
...
...
@@ -399,7 +399,7 @@ smp_oc_getxid(struct worker *wrk, struct objcore *oc)
*/
static
struct
object
*
smp_oc_getobj
(
struct
worker
*
wrk
,
struct
objcore
*
oc
)
smp_oc_getobj
(
struct
dstat
*
ds
,
struct
objcore
*
oc
)
{
struct
object
*
o
;
struct
smp_seg
*
sg
;
...
...
@@ -412,7 +412,7 @@ smp_oc_getobj(struct worker *wrk, struct objcore *oc)
assert
(
oc
->
methods
->
getobj
==
smp_oc_getobj
);
CHECK_OBJ_NOTNULL
(
oc
,
OBJCORE_MAGIC
);
if
(
wrk
==
NULL
)
if
(
ds
==
NULL
)
AZ
(
oc
->
flags
&
OC_F_NEEDFIXUP
);
CAST_OBJ_NOTNULL
(
sg
,
oc
->
priv
,
SMP_SEG_MAGIC
);
...
...
@@ -435,7 +435,7 @@ smp_oc_getobj(struct worker *wrk, struct objcore *oc)
if
(
!
(
oc
->
flags
&
OC_F_NEEDFIXUP
))
return
(
o
);
AN
(
wrk
);
AN
(
ds
);
Lck_Lock
(
&
sg
->
sc
->
mtx
);
/* Check again, we might have raced. */
if
(
oc
->
flags
&
OC_F_NEEDFIXUP
)
{
...
...
@@ -459,8 +459,8 @@ smp_oc_getobj(struct worker *wrk, struct objcore *oc)
}
sg
->
nfixed
++
;
wrk
->
stats
.
n_object
++
;
wrk
->
stats
.
n_vampireobject
--
;
ds
->
n_object
++
;
ds
->
n_vampireobject
--
;
oc
->
flags
&=
~
OC_F_NEEDFIXUP
;
}
Lck_Unlock
(
&
sg
->
sc
->
mtx
);
...
...
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