store_swapin.cc
Go to the documentation of this file.
1 /*
2  * Copyright (C) 1996-2017 The Squid Software Foundation and contributors
3  *
4  * Squid software is distributed under GPLv2+ license and includes
5  * contributions from numerous individuals and organizations.
6  * Please see the COPYING and CONTRIBUTORS files for details.
7  */
8 
9 /* DEBUG: section 20 Storage Manager Swapin Functions */
10 
11 #include "squid.h"
12 #include "globals.h"
13 #include "StatCounters.h"
14 #include "Store.h"
15 #include "store_swapin.h"
16 #include "StoreClient.h"
17 
20 
21 void
23 {
24  StoreEntry *e = sc->entry;
25 
26  if (!EBIT_TEST(e->flags, ENTRY_VALIDATED)) {
27  /* We're still reloading and haven't validated this entry yet */
28  return;
29  }
30 
31  if (e->mem_status != NOT_IN_MEMORY)
32  debugs(20, 3, HERE << "already IN_MEMORY");
33 
34  debugs(20, 3, "storeSwapInStart: called for : " << e->swap_dirn << " " <<
35  std::hex << std::setw(8) << std::setfill('0') << std::uppercase <<
36  e->swap_filen << " " << e->getMD5Text());
37 
39  debugs(20, DBG_IMPORTANT, "storeSwapInStart: bad swap_status (" << swapStatusStr[e->swap_status] << ")");
40  return;
41  }
42 
43  if (e->swap_filen < 0) {
44  debugs(20, DBG_IMPORTANT, "storeSwapInStart: swap_filen < 0");
45  return;
46  }
47 
48  assert(e->mem_obj != NULL);
49  debugs(20, 3, "storeSwapInStart: Opening fileno " << std::hex << std::setw(8) << std::setfill('0') << std::uppercase << e->swap_filen);
51 }
52 
53 static void
55 {
56  store_client *sc = (store_client *)data;
57  debugs(20, 3, "storeSwapInFileClosed: sio=" << sc->swapin_sio.getRaw() << ", errflag=" << errflag);
58  sc->swapin_sio = NULL;
59 
60  if (sc->_callback.pending()) {
61  assert (errflag <= 0);
62  sc->callback(0, errflag ? true : false);
63  }
64 
66 }
67 
68 static void
70 {
71  store_client *sc = (store_client *)data;
72  StoreEntry *e = sc->entry;
73 
74  debugs(1, 3, "storeSwapInFileNotify: changing " << e->swap_filen << "/" <<
75  e->swap_dirn << " to " << sc->swapin_sio->swap_filen << "/" <<
76  sc->swapin_sio->swap_dirn);
77 
78  assert(e->swap_filen < 0); // if this fails, call SwapDir::disconnect(e)
80  e->swap_dirn = sc->swapin_sio->swap_dirn;
81 }
82 
sdirno swap_dirn
Definition: Store.h:179
StatCounters statCounter
Definition: StatCounters.cc:12
#define assert(EX)
Definition: assert.h:17
static int sc[16]
Definition: smbdes.c:121
sfileno swap_filen
unique ID inside a cache_dir for swapped out entries; -1 for others
Definition: Store.h:177
struct StatCounters::@137 swap
static StoreIOState::STIOCB storeSwapInFileClosed
Definition: store_swapin.cc:18
void const char HLPCB void * data
Definition: stub_helper.cc:16
#define debugs(SECTION, LEVEL, CONTENT)
Definition: Debug.h:123
#define DBG_IMPORTANT
Definition: Debug.h:45
mem_status_t mem_status
Definition: Store.h:181
void STFNCB(void *their_data, int errflag, StoreIOState::Pointer self)
Definition: StoreIOState.h:41
StoreIOState::Pointer swapin_sio
Definition: StoreClient.h:59
uint16_t flags
Definition: Store.h:173
StoreEntry * entry
Definition: StoreClient.h:58
MemObject * mem_obj
Definition: Store.h:162
std::ostream & HERE(std::ostream &s)
Definition: Debug.h:147
void STIOCB(void *their_data, int errflag, StoreIOState::Pointer self)
Definition: StoreIOState.h:51
virtual const char * getMD5Text() const
Definition: store.cc:181
StoreIOState::Pointer storeOpen(StoreEntry *e, StoreIOState::STFNCB *file_callback, StoreIOState::STIOCB *callback, void *callback_data)
Definition: store_io.cc:61
sdirno swap_dirn
Definition: StoreIOState.h:83
swap_status_t swap_status
Definition: Store.h:187
const char * swapStatusStr[]
Definition: store.cc:82
#define EBIT_TEST(flag, bit)
Definition: defines.h:107
void storeSwapInStart(store_client *sc)
Definition: store_swapin.cc:22
C * getRaw() const
Definition: RefCount.h:74
#define NULL
Definition: types.h:166
struct store_client::Callback _callback
void callback(ssize_t len, bool error=false)
static StoreIOState::STFNCB storeSwapInFileNotify
Definition: store_swapin.cc:19
sfileno swap_filen
Definition: StoreIOState.h:84

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors