Spdk/lib/ftl/ftl_writer.h
paul luse a6dbe3721e update Intel copyright notices
per Intel policy to include file commit date using git cmd
below.  The policy does not apply to non-Intel (C) notices.

git log --follow -C90% --format=%ad --date default <file> | tail -1

and then pull just the 4 digit year from the result.

Intel copyrights were not added to files where Intel either had
no contribution ot the contribution lacked substance (ie license
header updates, formatting changes, etc).  Contribution date used
"--follow -C95%" to get the most accurate date.

Note that several files in this patch didn't end the license/(c)
block with a blank comment line so these were added as the vast
majority of files do have this last blank line.  Simply there for
consistency.

Signed-off-by: paul luse <paul.e.luse@intel.com>
Change-Id: Id5b7ce4f658fe87132f14139ead58d6e285c04d4
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15192
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Community-CI: Mellanox Build Bot
2022-11-10 08:28:53 +00:00

80 lines
1.6 KiB
C

/* SPDX-License-Identifier: BSD-3-Clause
* Copyright (C) 2022 Intel Corporation.
* All rights reserved.
*/
#ifndef FTL_WRITER_H
#define FTL_WRITER_H
#include "spdk/stdinc.h"
#include "spdk/queue.h"
#include "ftl_io.h"
struct ftl_writer {
struct spdk_ftl_dev *dev;
TAILQ_HEAD(, ftl_rq) rq_queue;
/* Band currently being written to */
struct ftl_band *band;
/* Number of bands associated with writer */
uint64_t num_bands;
/* Band next being written to */
struct ftl_band *next_band;
/* List of full bands */
TAILQ_HEAD(, ftl_band) full_bands;
/* FTL band limit which blocks writes */
int limit;
/* Flag indicating halt has been requested */
bool halt;
/* Which type of band the writer uses */
enum ftl_band_type writer_type;
uint64_t last_seq_id;
};
bool ftl_writer_is_halted(struct ftl_writer *writer);
void ftl_writer_init(struct spdk_ftl_dev *dev, struct ftl_writer *writer,
uint64_t limit, enum ftl_band_type type);
void ftl_writer_run(struct ftl_writer *writer);
void ftl_writer_band_state_change(struct ftl_band *band);
static inline void
ftl_writer_halt(struct ftl_writer *writer)
{
writer->halt = true;
}
static inline void
ftl_writer_resume(struct ftl_writer *writer)
{
writer->halt = false;
}
bool ftl_writer_is_halted(struct ftl_writer *writer);
void ftl_writer_run(struct ftl_writer *writer);
static inline void
ftl_writer_queue_rq(struct ftl_writer *writer, struct ftl_rq *rq)
{
TAILQ_INSERT_TAIL(&writer->rq_queue, rq, qentry);
}
/**
* @brief Returns free space in currently processing band
*/
uint64_t ftl_writer_get_free_blocks(struct ftl_writer *writer);
#endif /* FTL_WRITER_H */