Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
No conflicts. Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
commit
5b91c5cc0e
328 changed files with 4082 additions and 1730 deletions
|
|
@ -324,12 +324,12 @@ enum {
|
|||
ATA_LOG_NCQ_NON_DATA = 0x12,
|
||||
ATA_LOG_NCQ_SEND_RECV = 0x13,
|
||||
ATA_LOG_IDENTIFY_DEVICE = 0x30,
|
||||
ATA_LOG_CONCURRENT_POSITIONING_RANGES = 0x47,
|
||||
|
||||
/* Identify device log pages: */
|
||||
ATA_LOG_SECURITY = 0x06,
|
||||
ATA_LOG_SATA_SETTINGS = 0x08,
|
||||
ATA_LOG_ZONED_INFORMATION = 0x09,
|
||||
ATA_LOG_CONCURRENT_POSITIONING_RANGES = 0x47,
|
||||
|
||||
/* Identify device SATA settings log:*/
|
||||
ATA_LOG_DEVSLP_OFFSET = 0x30,
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@
|
|||
#define CEPH_OPT_TCP_NODELAY (1<<4) /* TCP_NODELAY on TCP sockets */
|
||||
#define CEPH_OPT_NOMSGSIGN (1<<5) /* don't sign msgs (msgr1) */
|
||||
#define CEPH_OPT_ABORT_ON_FULL (1<<6) /* abort w/ ENOSPC when full */
|
||||
#define CEPH_OPT_RXBOUNCE (1<<7) /* double-buffer read data */
|
||||
|
||||
#define CEPH_OPT_DEFAULT (CEPH_OPT_TCP_NODELAY)
|
||||
|
||||
|
|
|
|||
|
|
@ -383,6 +383,10 @@ struct ceph_connection_v2_info {
|
|||
struct ceph_gcm_nonce in_gcm_nonce;
|
||||
struct ceph_gcm_nonce out_gcm_nonce;
|
||||
|
||||
struct page **in_enc_pages;
|
||||
int in_enc_page_cnt;
|
||||
int in_enc_resid;
|
||||
int in_enc_i;
|
||||
struct page **out_enc_pages;
|
||||
int out_enc_page_cnt;
|
||||
int out_enc_resid;
|
||||
|
|
@ -457,6 +461,7 @@ struct ceph_connection {
|
|||
struct ceph_msg *out_msg; /* sending message (== tail of
|
||||
out_sent) */
|
||||
|
||||
struct page *bounce_page;
|
||||
u32 in_front_crc, in_middle_crc, in_data_crc; /* calculated crc */
|
||||
|
||||
struct timespec64 last_keepalive_ack; /* keepalive2 ack stamp */
|
||||
|
|
|
|||
|
|
@ -262,7 +262,7 @@ struct fb_ops {
|
|||
|
||||
/* Draws a rectangle */
|
||||
void (*fb_fillrect) (struct fb_info *info, const struct fb_fillrect *rect);
|
||||
/* Copy data from area to another. Obsolete. */
|
||||
/* Copy data from area to another */
|
||||
void (*fb_copyarea) (struct fb_info *info, const struct fb_copyarea *region);
|
||||
/* Draws a image to the display */
|
||||
void (*fb_imageblit) (struct fb_info *info, const struct fb_image *image);
|
||||
|
|
|
|||
|
|
@ -263,9 +263,11 @@ struct iomap_ioend {
|
|||
struct list_head io_list; /* next ioend in chain */
|
||||
u16 io_type;
|
||||
u16 io_flags; /* IOMAP_F_* */
|
||||
u32 io_folios; /* folios added to ioend */
|
||||
struct inode *io_inode; /* file being written to */
|
||||
size_t io_size; /* size of the extent */
|
||||
loff_t io_offset; /* offset in the file */
|
||||
sector_t io_sector; /* start sector of ioend */
|
||||
struct bio *io_bio; /* bio being built */
|
||||
struct bio io_inline_bio; /* MUST BE LAST! */
|
||||
};
|
||||
|
|
|
|||
|
|
@ -594,7 +594,7 @@ struct transaction_s
|
|||
*/
|
||||
unsigned long t_log_start;
|
||||
|
||||
/*
|
||||
/*
|
||||
* Number of buffers on the t_buffers list [j_list_lock, no locks
|
||||
* needed for jbd2 thread]
|
||||
*/
|
||||
|
|
@ -1295,7 +1295,7 @@ struct journal_s
|
|||
* Clean-up after fast commit or full commit. JBD2 calls this function
|
||||
* after every commit operation.
|
||||
*/
|
||||
void (*j_fc_cleanup_callback)(struct journal_s *journal, int);
|
||||
void (*j_fc_cleanup_callback)(struct journal_s *journal, int full, tid_t tid);
|
||||
|
||||
/**
|
||||
* @j_fc_replay_callback:
|
||||
|
|
@ -1419,9 +1419,7 @@ extern void jbd2_journal_unfile_buffer(journal_t *, struct journal_head *);
|
|||
extern bool __jbd2_journal_refile_buffer(struct journal_head *);
|
||||
extern void jbd2_journal_refile_buffer(journal_t *, struct journal_head *);
|
||||
extern void __jbd2_journal_file_buffer(struct journal_head *, transaction_t *, int);
|
||||
extern void __journal_free_buffer(struct journal_head *bh);
|
||||
extern void jbd2_journal_file_buffer(struct journal_head *, transaction_t *, int);
|
||||
extern void __journal_clean_data_list(transaction_t *transaction);
|
||||
static inline void jbd2_file_log_bh(struct list_head *head, struct buffer_head *bh)
|
||||
{
|
||||
list_add_tail(&bh->b_assoc_buffers, head);
|
||||
|
|
@ -1486,9 +1484,6 @@ extern int jbd2_journal_write_metadata_buffer(transaction_t *transaction,
|
|||
struct buffer_head **bh_out,
|
||||
sector_t blocknr);
|
||||
|
||||
/* Transaction locking */
|
||||
extern void __wait_on_journal (journal_t *);
|
||||
|
||||
/* Transaction cache support */
|
||||
extern void jbd2_journal_destroy_transaction_cache(void);
|
||||
extern int __init jbd2_journal_init_transaction_cache(void);
|
||||
|
|
@ -1543,6 +1538,8 @@ extern int jbd2_journal_flush(journal_t *journal, unsigned int flags);
|
|||
extern void jbd2_journal_lock_updates (journal_t *);
|
||||
extern void jbd2_journal_unlock_updates (journal_t *);
|
||||
|
||||
void jbd2_journal_wait_updates(journal_t *);
|
||||
|
||||
extern journal_t * jbd2_journal_init_dev(struct block_device *bdev,
|
||||
struct block_device *fs_dev,
|
||||
unsigned long long start, int len, int bsize);
|
||||
|
|
@ -1774,8 +1771,6 @@ static inline unsigned long jbd2_log_space_left(journal_t *journal)
|
|||
#define BJ_Reserved 4 /* Buffer is reserved for access by journal */
|
||||
#define BJ_Types 5
|
||||
|
||||
extern int jbd_blocks_per_page(struct inode *inode);
|
||||
|
||||
/* JBD uses a CRC32 checksum */
|
||||
#define JBD_MAX_CHECKSUM_SIZE 4
|
||||
|
||||
|
|
|
|||
|
|
@ -29,7 +29,9 @@
|
|||
#include <linux/refcount.h>
|
||||
#include <linux/nospec.h>
|
||||
#include <linux/notifier.h>
|
||||
#include <linux/ftrace.h>
|
||||
#include <linux/hashtable.h>
|
||||
#include <linux/instrumentation.h>
|
||||
#include <linux/interval_tree.h>
|
||||
#include <linux/rbtree.h>
|
||||
#include <linux/xarray.h>
|
||||
|
|
@ -368,8 +370,11 @@ struct kvm_vcpu {
|
|||
u64 last_used_slot_gen;
|
||||
};
|
||||
|
||||
/* must be called with irqs disabled */
|
||||
static __always_inline void guest_enter_irqoff(void)
|
||||
/*
|
||||
* Start accounting time towards a guest.
|
||||
* Must be called before entering guest context.
|
||||
*/
|
||||
static __always_inline void guest_timing_enter_irqoff(void)
|
||||
{
|
||||
/*
|
||||
* This is running in ioctl context so its safe to assume that it's the
|
||||
|
|
@ -378,7 +383,18 @@ static __always_inline void guest_enter_irqoff(void)
|
|||
instrumentation_begin();
|
||||
vtime_account_guest_enter();
|
||||
instrumentation_end();
|
||||
}
|
||||
|
||||
/*
|
||||
* Enter guest context and enter an RCU extended quiescent state.
|
||||
*
|
||||
* Between guest_context_enter_irqoff() and guest_context_exit_irqoff() it is
|
||||
* unsafe to use any code which may directly or indirectly use RCU, tracing
|
||||
* (including IRQ flag tracing), or lockdep. All code in this period must be
|
||||
* non-instrumentable.
|
||||
*/
|
||||
static __always_inline void guest_context_enter_irqoff(void)
|
||||
{
|
||||
/*
|
||||
* KVM does not hold any references to rcu protected data when it
|
||||
* switches CPU into a guest mode. In fact switching to a guest mode
|
||||
|
|
@ -394,16 +410,79 @@ static __always_inline void guest_enter_irqoff(void)
|
|||
}
|
||||
}
|
||||
|
||||
static __always_inline void guest_exit_irqoff(void)
|
||||
/*
|
||||
* Deprecated. Architectures should move to guest_timing_enter_irqoff() and
|
||||
* guest_state_enter_irqoff().
|
||||
*/
|
||||
static __always_inline void guest_enter_irqoff(void)
|
||||
{
|
||||
guest_timing_enter_irqoff();
|
||||
guest_context_enter_irqoff();
|
||||
}
|
||||
|
||||
/**
|
||||
* guest_state_enter_irqoff - Fixup state when entering a guest
|
||||
*
|
||||
* Entry to a guest will enable interrupts, but the kernel state is interrupts
|
||||
* disabled when this is invoked. Also tell RCU about it.
|
||||
*
|
||||
* 1) Trace interrupts on state
|
||||
* 2) Invoke context tracking if enabled to adjust RCU state
|
||||
* 3) Tell lockdep that interrupts are enabled
|
||||
*
|
||||
* Invoked from architecture specific code before entering a guest.
|
||||
* Must be called with interrupts disabled and the caller must be
|
||||
* non-instrumentable.
|
||||
* The caller has to invoke guest_timing_enter_irqoff() before this.
|
||||
*
|
||||
* Note: this is analogous to exit_to_user_mode().
|
||||
*/
|
||||
static __always_inline void guest_state_enter_irqoff(void)
|
||||
{
|
||||
instrumentation_begin();
|
||||
trace_hardirqs_on_prepare();
|
||||
lockdep_hardirqs_on_prepare(CALLER_ADDR0);
|
||||
instrumentation_end();
|
||||
|
||||
guest_context_enter_irqoff();
|
||||
lockdep_hardirqs_on(CALLER_ADDR0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Exit guest context and exit an RCU extended quiescent state.
|
||||
*
|
||||
* Between guest_context_enter_irqoff() and guest_context_exit_irqoff() it is
|
||||
* unsafe to use any code which may directly or indirectly use RCU, tracing
|
||||
* (including IRQ flag tracing), or lockdep. All code in this period must be
|
||||
* non-instrumentable.
|
||||
*/
|
||||
static __always_inline void guest_context_exit_irqoff(void)
|
||||
{
|
||||
context_tracking_guest_exit();
|
||||
}
|
||||
|
||||
/*
|
||||
* Stop accounting time towards a guest.
|
||||
* Must be called after exiting guest context.
|
||||
*/
|
||||
static __always_inline void guest_timing_exit_irqoff(void)
|
||||
{
|
||||
instrumentation_begin();
|
||||
/* Flush the guest cputime we spent on the guest */
|
||||
vtime_account_guest_exit();
|
||||
instrumentation_end();
|
||||
}
|
||||
|
||||
/*
|
||||
* Deprecated. Architectures should move to guest_state_exit_irqoff() and
|
||||
* guest_timing_exit_irqoff().
|
||||
*/
|
||||
static __always_inline void guest_exit_irqoff(void)
|
||||
{
|
||||
guest_context_exit_irqoff();
|
||||
guest_timing_exit_irqoff();
|
||||
}
|
||||
|
||||
static inline void guest_exit(void)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
|
@ -413,6 +492,33 @@ static inline void guest_exit(void)
|
|||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
/**
|
||||
* guest_state_exit_irqoff - Establish state when returning from guest mode
|
||||
*
|
||||
* Entry from a guest disables interrupts, but guest mode is traced as
|
||||
* interrupts enabled. Also with NO_HZ_FULL RCU might be idle.
|
||||
*
|
||||
* 1) Tell lockdep that interrupts are disabled
|
||||
* 2) Invoke context tracking if enabled to reactivate RCU
|
||||
* 3) Trace interrupts off state
|
||||
*
|
||||
* Invoked from architecture specific code after exiting a guest.
|
||||
* Must be invoked with interrupts disabled and the caller must be
|
||||
* non-instrumentable.
|
||||
* The caller has to invoke guest_timing_exit_irqoff() after this.
|
||||
*
|
||||
* Note: this is analogous to enter_from_user_mode().
|
||||
*/
|
||||
static __always_inline void guest_state_exit_irqoff(void)
|
||||
{
|
||||
lockdep_hardirqs_off(CALLER_ADDR0);
|
||||
guest_context_exit_irqoff();
|
||||
|
||||
instrumentation_begin();
|
||||
trace_hardirqs_off_finish();
|
||||
instrumentation_end();
|
||||
}
|
||||
|
||||
static inline int kvm_vcpu_exiting_guest_mode(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -380,6 +380,7 @@ enum {
|
|||
ATA_HORKAGE_MAX_TRIM_128M = (1 << 26), /* Limit max trim size to 128M */
|
||||
ATA_HORKAGE_NO_NCQ_ON_ATI = (1 << 27), /* Disable NCQ on ATI chipset */
|
||||
ATA_HORKAGE_NO_ID_DEV_LOG = (1 << 28), /* Identify device log missing */
|
||||
ATA_HORKAGE_NO_LOG_DIR = (1 << 29), /* Do not read log directory */
|
||||
|
||||
/* DMA mask for user DMA control: User visible values; DO NOT
|
||||
renumber */
|
||||
|
|
|
|||
|
|
@ -244,6 +244,13 @@ struct netfs_cache_ops {
|
|||
int (*prepare_write)(struct netfs_cache_resources *cres,
|
||||
loff_t *_start, size_t *_len, loff_t i_size,
|
||||
bool no_space_allocated_yet);
|
||||
|
||||
/* Query the occupancy of the cache in a region, returning where the
|
||||
* next chunk of data starts and how long it is.
|
||||
*/
|
||||
int (*query_occupancy)(struct netfs_cache_resources *cres,
|
||||
loff_t start, size_t len, size_t granularity,
|
||||
loff_t *_data_start, size_t *_data_len);
|
||||
};
|
||||
|
||||
struct readahead_control;
|
||||
|
|
|
|||
|
|
@ -36,14 +36,6 @@ static inline void nfs_copy_fh(struct nfs_fh *target, const struct nfs_fh *sourc
|
|||
memcpy(target->data, source->data, source->size);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* This is really a general kernel constant, but since nothing like
|
||||
* this is defined in the kernel headers, I have to do it here.
|
||||
*/
|
||||
#define NFS_OFFSET_MAX ((__s64)((~(__u64)0) >> 1))
|
||||
|
||||
|
||||
enum nfs3_stable_how {
|
||||
NFS_UNSTABLE = 0,
|
||||
NFS_DATA_SYNC = 1,
|
||||
|
|
|
|||
|
|
@ -107,6 +107,7 @@ struct nfs_open_dir_context {
|
|||
__u64 dup_cookie;
|
||||
pgoff_t page_index;
|
||||
signed char duped;
|
||||
bool eof;
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -26,6 +26,9 @@ void __page_table_check_pmd_set(struct mm_struct *mm, unsigned long addr,
|
|||
pmd_t *pmdp, pmd_t pmd);
|
||||
void __page_table_check_pud_set(struct mm_struct *mm, unsigned long addr,
|
||||
pud_t *pudp, pud_t pud);
|
||||
void __page_table_check_pte_clear_range(struct mm_struct *mm,
|
||||
unsigned long addr,
|
||||
pmd_t pmd);
|
||||
|
||||
static inline void page_table_check_alloc(struct page *page, unsigned int order)
|
||||
{
|
||||
|
|
@ -100,6 +103,16 @@ static inline void page_table_check_pud_set(struct mm_struct *mm,
|
|||
__page_table_check_pud_set(mm, addr, pudp, pud);
|
||||
}
|
||||
|
||||
static inline void page_table_check_pte_clear_range(struct mm_struct *mm,
|
||||
unsigned long addr,
|
||||
pmd_t pmd)
|
||||
{
|
||||
if (static_branch_likely(&page_table_check_disabled))
|
||||
return;
|
||||
|
||||
__page_table_check_pte_clear_range(mm, addr, pmd);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
static inline void page_table_check_alloc(struct page *page, unsigned int order)
|
||||
|
|
@ -143,5 +156,11 @@ static inline void page_table_check_pud_set(struct mm_struct *mm,
|
|||
{
|
||||
}
|
||||
|
||||
static inline void page_table_check_pte_clear_range(struct mm_struct *mm,
|
||||
unsigned long addr,
|
||||
pmd_t pmd)
|
||||
{
|
||||
}
|
||||
|
||||
#endif /* CONFIG_PAGE_TABLE_CHECK */
|
||||
#endif /* __LINUX_PAGE_TABLE_CHECK_H */
|
||||
|
|
|
|||
|
|
@ -62,6 +62,7 @@ static inline unsigned long pte_index(unsigned long address)
|
|||
{
|
||||
return (address >> PAGE_SHIFT) & (PTRS_PER_PTE - 1);
|
||||
}
|
||||
#define pte_index pte_index
|
||||
|
||||
#ifndef pmd_index
|
||||
static inline unsigned long pmd_index(unsigned long address)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue