mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-27 12:57:53 +00:00
fs: Move enum rw_hint into a new header file
Move enum rw_hint into a new header file to prepare for using this data type in the block layer. Add the attribute __packed to reduce the space occupied by instances of this data type from four bytes to one byte. Change the data type of i_write_hint from u8 into enum rw_hint. Reviewed-by: Christoph Hellwig <hch@lst.de> Acked-by: Chao Yu <chao@kernel.org> # for the F2FS part Cc: Alexander Viro <viro@zeniv.linux.org.uk> Cc: Christian Brauner <brauner@kernel.org> Cc: Jan Kara <jack@suse.cz> Cc: Christoph Hellwig <hch@lst.de> Signed-off-by: Bart Van Assche <bvanassche@acm.org> Link: https://lore.kernel.org/r/20240202203926.2478590-5-bvanassche@acm.org Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
parent
1505ba06e5
commit
fe3944fb24
5 changed files with 29 additions and 14 deletions
|
@ -24,6 +24,7 @@
|
|||
#include <linux/blkdev.h>
|
||||
#include <linux/quotaops.h>
|
||||
#include <linux/part_stat.h>
|
||||
#include <linux/rw_hint.h>
|
||||
#include <crypto/hash.h>
|
||||
|
||||
#include <linux/fscrypt.h>
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
#include <linux/memfd.h>
|
||||
#include <linux/compat.h>
|
||||
#include <linux/mount.h>
|
||||
#include <linux/rw_hint.h>
|
||||
|
||||
#include <linux/poll.h>
|
||||
#include <asm/siginfo.h>
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include <linux/ratelimit.h>
|
||||
#include <linux/list_lru.h>
|
||||
#include <linux/iversion.h>
|
||||
#include <linux/rw_hint.h>
|
||||
#include <trace/events/writeback.h>
|
||||
#include "internal.h"
|
||||
|
||||
|
|
|
@ -43,6 +43,7 @@
|
|||
#include <linux/cred.h>
|
||||
#include <linux/mnt_idmapping.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/rw_hint.h>
|
||||
|
||||
#include <asm/byteorder.h>
|
||||
#include <uapi/linux/fs.h>
|
||||
|
@ -309,19 +310,6 @@ struct address_space;
|
|||
struct writeback_control;
|
||||
struct readahead_control;
|
||||
|
||||
/*
|
||||
* Write life time hint values.
|
||||
* Stored in struct inode as u8.
|
||||
*/
|
||||
enum rw_hint {
|
||||
WRITE_LIFE_NOT_SET = 0,
|
||||
WRITE_LIFE_NONE = RWH_WRITE_LIFE_NONE,
|
||||
WRITE_LIFE_SHORT = RWH_WRITE_LIFE_SHORT,
|
||||
WRITE_LIFE_MEDIUM = RWH_WRITE_LIFE_MEDIUM,
|
||||
WRITE_LIFE_LONG = RWH_WRITE_LIFE_LONG,
|
||||
WRITE_LIFE_EXTREME = RWH_WRITE_LIFE_EXTREME,
|
||||
};
|
||||
|
||||
/* Match RWF_* bits to IOCB bits */
|
||||
#define IOCB_HIPRI (__force int) RWF_HIPRI
|
||||
#define IOCB_DSYNC (__force int) RWF_DSYNC
|
||||
|
@ -677,7 +665,7 @@ struct inode {
|
|||
spinlock_t i_lock; /* i_blocks, i_bytes, maybe i_size */
|
||||
unsigned short i_bytes;
|
||||
u8 i_blkbits;
|
||||
u8 i_write_hint;
|
||||
enum rw_hint i_write_hint;
|
||||
blkcnt_t i_blocks;
|
||||
|
||||
#ifdef __NEED_I_SIZE_ORDERED
|
||||
|
|
24
include/linux/rw_hint.h
Normal file
24
include/linux/rw_hint.h
Normal file
|
@ -0,0 +1,24 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
#ifndef _LINUX_RW_HINT_H
|
||||
#define _LINUX_RW_HINT_H
|
||||
|
||||
#include <linux/build_bug.h>
|
||||
#include <linux/compiler_attributes.h>
|
||||
#include <uapi/linux/fcntl.h>
|
||||
|
||||
/* Block storage write lifetime hint values. */
|
||||
enum rw_hint {
|
||||
WRITE_LIFE_NOT_SET = RWH_WRITE_LIFE_NOT_SET,
|
||||
WRITE_LIFE_NONE = RWH_WRITE_LIFE_NONE,
|
||||
WRITE_LIFE_SHORT = RWH_WRITE_LIFE_SHORT,
|
||||
WRITE_LIFE_MEDIUM = RWH_WRITE_LIFE_MEDIUM,
|
||||
WRITE_LIFE_LONG = RWH_WRITE_LIFE_LONG,
|
||||
WRITE_LIFE_EXTREME = RWH_WRITE_LIFE_EXTREME,
|
||||
} __packed;
|
||||
|
||||
/* Sparse ignores __packed annotations on enums, hence the #ifndef below. */
|
||||
#ifndef __CHECKER__
|
||||
static_assert(sizeof(enum rw_hint) == 1);
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_RW_HINT_H */
|
Loading…
Reference in a new issue