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
3bf99f6c
Commit
3bf99f6c
authored
Nov 10, 2011
by
Poul-Henning Kamp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Firmly split manager and child views of hashing.
parent
a37d3cc1
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
89 additions
and
47 deletions
+89
-47
Makefile.am
bin/varnishd/Makefile.am
+1
-0
cache_hash.c
bin/varnishd/cache_hash.c
+2
-45
cache_main.c
bin/varnishd/cache_main.c
+1
-1
hash_mgt.c
bin/varnishd/hash/hash_mgt.c
+84
-0
hash_slinger.h
bin/varnishd/hash/hash_slinger.h
+1
-1
No files found.
bin/varnishd/Makefile.am
View file @
3bf99f6c
...
@@ -54,6 +54,7 @@ varnishd_SOURCES = \
...
@@ -54,6 +54,7 @@ varnishd_SOURCES = \
cache_ws.c
\
cache_ws.c
\
hash
/hash_classic.c
\
hash
/hash_classic.c
\
hash
/hash_critbit.c
\
hash
/hash_critbit.c
\
hash
/hash_mgt.c
\
hash
/hash_simple_list.c
\
hash
/hash_simple_list.c
\
mgt/mgt_child.c
\
mgt/mgt_child.c
\
mgt/mgt_cli.c
\
mgt/mgt_cli.c
\
...
...
bin/varnishd/cache_hash.c
View file @
3bf99f6c
...
@@ -59,7 +59,6 @@
...
@@ -59,7 +59,6 @@
#include "cache.h"
#include "cache.h"
#include "hash/hash_slinger.h"
#include "hash/hash_slinger.h"
#include "vav.h"
#include "vsha256.h"
#include "vsha256.h"
static
const
struct
hash_slinger
*
hash
;
static
const
struct
hash_slinger
*
hash
;
...
@@ -743,53 +742,11 @@ HSH_Deref(struct worker *w, struct objcore *oc, struct object **oo)
...
@@ -743,53 +742,11 @@ HSH_Deref(struct worker *w, struct objcore *oc, struct object **oo)
}
}
void
void
HSH_Init
(
void
)
HSH_Init
(
const
struct
hash_slinger
*
slinger
)
{
{
assert
(
DIGEST_LEN
==
SHA256_LEN
);
/* avoid #include pollution */
assert
(
DIGEST_LEN
==
SHA256_LEN
);
/* avoid #include pollution */
hash
=
heritage
.
hash
;
hash
=
slinger
;
if
(
hash
->
start
!=
NULL
)
if
(
hash
->
start
!=
NULL
)
hash
->
start
();
hash
->
start
();
}
}
static
const
struct
choice
hsh_choice
[]
=
{
{
"classic"
,
&
hcl_slinger
},
{
"simple"
,
&
hsl_slinger
},
{
"simple_list"
,
&
hsl_slinger
},
/* backwards compat */
{
"critbit"
,
&
hcb_slinger
},
{
NULL
,
NULL
}
};
/*--------------------------------------------------------------------*/
void
HSH_config
(
const
char
*
h_arg
)
{
char
**
av
;
int
ac
;
const
struct
hash_slinger
*
hp
;
ASSERT_MGT
();
av
=
VAV_Parse
(
h_arg
,
NULL
,
ARGV_COMMA
);
AN
(
av
);
if
(
av
[
0
]
!=
NULL
)
ARGV_ERR
(
"%s
\n
"
,
av
[
0
]);
if
(
av
[
1
]
==
NULL
)
ARGV_ERR
(
"-h argument is empty
\n
"
);
for
(
ac
=
0
;
av
[
ac
+
2
]
!=
NULL
;
ac
++
)
continue
;
hp
=
pick
(
hsh_choice
,
av
[
1
],
"hash"
);
CHECK_OBJ_NOTNULL
(
hp
,
SLINGER_MAGIC
);
VSB_printf
(
vident
,
",-h%s"
,
av
[
1
]);
heritage
.
hash
=
hp
;
if
(
hp
->
init
!=
NULL
)
hp
->
init
(
ac
,
av
+
2
);
else
if
(
ac
>
0
)
ARGV_ERR
(
"Hash method
\"
%s
\"
takes no arguments
\n
"
,
hp
->
name
);
}
bin/varnishd/cache_main.c
View file @
3bf99f6c
...
@@ -120,7 +120,7 @@ child_main(void)
...
@@ -120,7 +120,7 @@ child_main(void)
Pool_Init
();
Pool_Init
();
EXP_Init
();
EXP_Init
();
HSH_Init
();
HSH_Init
(
heritage
.
hash
);
BAN_Init
();
BAN_Init
();
VCA_Init
();
VCA_Init
();
...
...
bin/varnishd/hash/hash_mgt.c
0 → 100644
View file @
3bf99f6c
/*-
* Copyright (c) 2006 Verdens Gang AS
* Copyright (c) 2006-2011 Varnish Software AS
* All rights reserved.
*
* Author: Poul-Henning Kamp <phk@phk.freebsd.dk>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
*/
#include "config.h"
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include "mgt/mgt.h"
#include "heritage.h"
#include "hash/hash_slinger.h"
#include "vav.h"
static
const
struct
choice
hsh_choice
[]
=
{
{
"classic"
,
&
hcl_slinger
},
{
"simple"
,
&
hsl_slinger
},
{
"simple_list"
,
&
hsl_slinger
},
/* backwards compat */
{
"critbit"
,
&
hcb_slinger
},
{
NULL
,
NULL
}
};
/*--------------------------------------------------------------------*/
void
HSH_config
(
const
char
*
h_arg
)
{
char
**
av
;
int
ac
;
const
struct
hash_slinger
*
hp
;
ASSERT_MGT
();
av
=
VAV_Parse
(
h_arg
,
NULL
,
ARGV_COMMA
);
AN
(
av
);
if
(
av
[
0
]
!=
NULL
)
ARGV_ERR
(
"%s
\n
"
,
av
[
0
]);
if
(
av
[
1
]
==
NULL
)
ARGV_ERR
(
"-h argument is empty
\n
"
);
for
(
ac
=
0
;
av
[
ac
+
2
]
!=
NULL
;
ac
++
)
continue
;
hp
=
pick
(
hsh_choice
,
av
[
1
],
"hash"
);
CHECK_OBJ_NOTNULL
(
hp
,
SLINGER_MAGIC
);
VSB_printf
(
vident
,
",-h%s"
,
av
[
1
]);
heritage
.
hash
=
hp
;
if
(
hp
->
init
!=
NULL
)
hp
->
init
(
ac
,
av
+
2
);
else
if
(
ac
>
0
)
ARGV_ERR
(
"Hash method
\"
%s
\"
takes no arguments
\n
"
,
hp
->
name
);
}
bin/varnishd/hash/hash_slinger.h
View file @
3bf99f6c
...
@@ -57,7 +57,7 @@ struct objcore *HSH_Lookup(struct sess *sp, struct objhead **poh);
...
@@ -57,7 +57,7 @@ struct objcore *HSH_Lookup(struct sess *sp, struct objhead **poh);
void
HSH_Unbusy
(
const
struct
sess
*
sp
);
void
HSH_Unbusy
(
const
struct
sess
*
sp
);
void
HSH_Ref
(
struct
objcore
*
o
);
void
HSH_Ref
(
struct
objcore
*
o
);
void
HSH_Drop
(
struct
sess
*
sp
);
void
HSH_Drop
(
struct
sess
*
sp
);
void
HSH_Init
(
void
);
void
HSH_Init
(
const
struct
hash_slinger
*
slinger
);
void
HSH_AddString
(
const
struct
sess
*
sp
,
const
char
*
str
);
void
HSH_AddString
(
const
struct
sess
*
sp
,
const
char
*
str
);
struct
objcore
*
HSH_Insert
(
const
struct
sess
*
sp
);
struct
objcore
*
HSH_Insert
(
const
struct
sess
*
sp
);
void
HSH_Purge
(
const
struct
sess
*
,
struct
objhead
*
,
double
ttl
,
double
grace
);
void
HSH_Purge
(
const
struct
sess
*
,
struct
objhead
*
,
double
ttl
,
double
grace
);
...
...
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