store_io.cc
Go to the documentation of this file.
1/*
2 * Copyright (C) 1996-2022 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#include "squid.h"
10#include "MemObject.h"
11#include "SquidConfig.h"
12#include "Store.h"
13#include "store/Disk.h"
14#include "store/Disks.h"
15
17
18/*
19 * submit a request to create a cache object for writing.
20 * The StoreEntry structure is sent as a hint to the filesystem
21 * to what will be stored in this object, to allow the filesystem
22 * to select different polices depending on object size or type.
23 */
25storeCreate(StoreEntry * e, StoreIOState::STFNCB * file_callback, StoreIOState::STIOCB * close_callback, void *callback_data)
26{
27 assert (e);
28
30
31 /*
32 * Pick the swapdir
33 * We assume that the header has been packed by now ..
34 */
35 const auto sd = Store::Disks::SelectSwapDir(e);
36
37 if (!sd) {
38 debugs(20, 2, "storeCreate: no swapdirs for " << *e);
40 return nullptr;
41 }
42
43 /* Now that we have a fs to use, call its storeCreate function */
44 StoreIOState::Pointer sio = sd->createStoreIO(*e, file_callback, close_callback, callback_data);
45
46 if (sio == nullptr)
48 else
50
51 return sio;
52}
53
54/*
55 * storeOpen() is purely for reading ..
56 */
59 void *callback_data)
60{
61 return e->disk().openStoreIO(*e, file_callback, callback, callback_data);
62}
63
64void
66{
67 if (sio->flags.closing) {
68 debugs(20,3, "storeClose: flags.closing already set, bailing");
69 return;
70 }
71
72 sio->flags.closing = true;
73
74 debugs(20,3, "storeClose: calling sio->close(" << how << ")");
75 sio->close(how);
76}
77
78void
79storeRead(StoreIOState::Pointer sio, char *buf, size_t size, off_t offset, StoreIOState::STRCB * callback, void *callback_data)
80{
81 sio->read_(buf, size, offset, callback, callback_data);
82}
83
84void
85storeIOWrite(StoreIOState::Pointer sio, char const *buf, size_t size, off_t offset, FREE * free_func)
86{
87 sio->write(buf,size,offset,free_func);
88}
89
int size
Definition: ModDevPoll.cc:75
#define assert(EX)
Definition: assert.h:19
Store::Disk & disk() const
the disk this entry is [being] cached on; asserts for entries w/o a disk
Definition: store.cc:1887
struct StoreIOState::@149 flags
virtual void read_(char *buf, size_t size, off_t offset, STRCB *callback, void *callback_data)=0
void STFNCB(void *their_data, int errflag, StoreIOState::Pointer self)
Definition: StoreIOState.h:41
void STRCB(void *their_data, const char *buf, ssize_t len, StoreIOState::Pointer self)
Definition: StoreIOState.h:29
virtual void close(int how)=0
finish or abort swapping per CloseHow
virtual bool write(char const *buf, size_t size, off_t offset, FREE *free_func)=0
void STIOCB(void *their_data, int errflag, StoreIOState::Pointer self)
Definition: StoreIOState.h:51
Store statistics related to low-level I/O.
Definition: StoreStats.h:58
int select_fail
Definition: StoreStats.h:64
struct StoreIoStats::@150 create
cache_dir selection and disk entry creation stats
int create_fail
Definition: StoreStats.h:65
virtual StoreIOState::Pointer openStoreIO(StoreEntry &, StoreIOState::STFNCB *, StoreIOState::STIOCB *, void *)=0
static SwapDir * SelectSwapDir(const StoreEntry *)
Definition: Disks.cc:658
#define debugs(SECTION, LEVEL, CONTENT)
Definition: Stream.h:196
void FREE(void *)
Definition: forward.h:36
void storeClose(StoreIOState::Pointer sio, int how)
Definition: store_io.cc:65
StoreIoStats store_io_stats
Definition: store_io.cc:16
StoreIOState::Pointer storeOpen(StoreEntry *e, StoreIOState::STFNCB *file_callback, StoreIOState::STIOCB *callback, void *callback_data)
Definition: store_io.cc:58
void storeRead(StoreIOState::Pointer sio, char *buf, size_t size, off_t offset, StoreIOState::STRCB *callback, void *callback_data)
Definition: store_io.cc:79
StoreIOState::Pointer storeCreate(StoreEntry *e, StoreIOState::STFNCB *file_callback, StoreIOState::STIOCB *close_callback, void *callback_data)
Definition: store_io.cc:25
void storeIOWrite(StoreIOState::Pointer sio, char const *buf, size_t size, off_t offset, FREE *free_func)
Definition: store_io.cc:85

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors