Error Trace
[Home]
Bug # 7
Show/hide error trace Error trace
{ 95 struct kernel_symbol { unsigned long value; const char *name; } ; 33 struct module ; 19 typedef signed char __s8; 20 typedef unsigned char __u8; 22 typedef short __s16; 23 typedef unsigned short __u16; 25 typedef int __s32; 26 typedef unsigned int __u32; 30 typedef unsigned long long __u64; 16 typedef unsigned char u8; 18 typedef short s16; 19 typedef unsigned short u16; 21 typedef int s32; 22 typedef unsigned int u32; 24 typedef long long s64; 25 typedef unsigned long long u64; 14 typedef long __kernel_long_t; 15 typedef unsigned long __kernel_ulong_t; 27 typedef int __kernel_pid_t; 48 typedef unsigned int __kernel_uid32_t; 49 typedef unsigned int __kernel_gid32_t; 71 typedef __kernel_ulong_t __kernel_size_t; 72 typedef __kernel_long_t __kernel_ssize_t; 80 struct __anonstruct___kernel_fsid_t_5 { int val[2U]; } ; 80 typedef struct __anonstruct___kernel_fsid_t_5 __kernel_fsid_t; 87 typedef long long __kernel_loff_t; 88 typedef __kernel_long_t __kernel_time_t; 89 typedef __kernel_long_t __kernel_clock_t; 90 typedef int __kernel_timer_t; 91 typedef int __kernel_clockid_t; 32 typedef __u16 __le16; 33 typedef __u16 __be16; 34 typedef __u32 __le32; 36 typedef __u64 __le64; 40 typedef __u32 __wsum; 12 typedef __u32 __kernel_dev_t; 15 typedef __kernel_dev_t dev_t; 18 typedef unsigned short umode_t; 21 typedef __kernel_pid_t pid_t; 26 typedef __kernel_clockid_t clockid_t; 29 typedef _Bool bool; 31 typedef __kernel_uid32_t uid_t; 32 typedef __kernel_gid32_t gid_t; 45 typedef __kernel_loff_t loff_t; 54 typedef __kernel_size_t size_t; 59 typedef __kernel_ssize_t ssize_t; 69 typedef __kernel_time_t time_t; 102 typedef __s32 int32_t; 108 typedef __u32 uint32_t; 133 typedef unsigned long sector_t; 134 typedef unsigned long blkcnt_t; 147 typedef u64 dma_addr_t; 158 typedef unsigned int gfp_t; 159 typedef unsigned int fmode_t; 160 typedef unsigned int oom_flags_t; 178 struct __anonstruct_atomic_t_6 { int counter; } ; 178 typedef struct __anonstruct_atomic_t_6 atomic_t; 183 struct __anonstruct_atomic64_t_7 { long counter; } ; 183 typedef struct __anonstruct_atomic64_t_7 atomic64_t; 184 struct list_head { struct list_head *next; struct list_head *prev; } ; 189 struct hlist_node ; 189 struct hlist_head { struct hlist_node *first; } ; 193 struct hlist_node { struct hlist_node *next; struct hlist_node **pprev; } ; 204 struct callback_head { struct callback_head *next; void (*func)(struct callback_head *); } ; 65 struct pt_regs { unsigned long r15; unsigned long r14; unsigned long r13; unsigned long r12; unsigned long bp; unsigned long bx; unsigned long r11; unsigned long r10; unsigned long r9; unsigned long r8; unsigned long ax; unsigned long cx; unsigned long dx; unsigned long si; unsigned long di; unsigned long orig_ax; unsigned long ip; unsigned long cs; unsigned long flags; unsigned long sp; unsigned long ss; } ; 59 struct __anonstruct_ldv_1016_9 { unsigned int a; unsigned int b; } ; 59 struct __anonstruct_ldv_1031_10 { u16 limit0; u16 base0; unsigned char base1; unsigned char type; unsigned char s; unsigned char dpl; unsigned char p; unsigned char limit; unsigned char avl; unsigned char l; unsigned char d; unsigned char g; unsigned char base2; } ; 59 union __anonunion_ldv_1032_8 { struct __anonstruct_ldv_1016_9 ldv_1016; struct __anonstruct_ldv_1031_10 ldv_1031; } ; 59 struct desc_struct { union __anonunion_ldv_1032_8 ldv_1032; } ; 12 typedef unsigned long pteval_t; 15 typedef unsigned long pgdval_t; 16 typedef unsigned long pgprotval_t; 18 struct __anonstruct_pte_t_11 { pteval_t pte; } ; 18 typedef struct __anonstruct_pte_t_11 pte_t; 20 struct pgprot { pgprotval_t pgprot; } ; 242 typedef struct pgprot pgprot_t; 244 struct __anonstruct_pgd_t_12 { pgdval_t pgd; } ; 244 typedef struct __anonstruct_pgd_t_12 pgd_t; 332 struct page ; 332 typedef struct page *pgtable_t; 340 struct file ; 353 struct seq_file ; 390 struct thread_struct ; 392 struct mm_struct ; 393 struct task_struct ; 394 struct cpumask ; 327 struct arch_spinlock ; 18 typedef u16 __ticket_t; 19 typedef u32 __ticketpair_t; 20 struct __raw_tickets { __ticket_t head; __ticket_t tail; } ; 32 union __anonunion_ldv_1452_15 { __ticketpair_t head_tail; struct __raw_tickets tickets; } ; 32 struct arch_spinlock { union __anonunion_ldv_1452_15 ldv_1452; } ; 33 typedef struct arch_spinlock arch_spinlock_t; 34 struct qrwlock { atomic_t cnts; arch_spinlock_t lock; } ; 14 typedef struct qrwlock arch_rwlock_t; 142 typedef void (*ctor_fn_t)(); 222 struct _ddebug { const char *modname; const char *function; const char *filename; const char *format; unsigned int lineno; unsigned char flags; } ; 48 struct device ; 54 struct net_device ; 403 struct file_operations ; 415 struct completion ; 416 struct pid ; 686 struct lockdep_map ; 127 struct kernel_vm86_regs { struct pt_regs pt; unsigned short es; unsigned short __esh; unsigned short ds; unsigned short __dsh; unsigned short fs; unsigned short __fsh; unsigned short gs; unsigned short __gsh; } ; 79 union __anonunion_ldv_2857_16 { struct pt_regs *regs; struct kernel_vm86_regs *vm86; } ; 79 struct math_emu_info { long ___orig_eip; union __anonunion_ldv_2857_16 ldv_2857; } ; 306 struct bug_entry { int bug_addr_disp; int file_disp; unsigned short line; unsigned short flags; } ; 102 struct cpumask { unsigned long bits[128U]; } ; 14 typedef struct cpumask cpumask_t; 671 typedef struct cpumask *cpumask_var_t; 161 struct seq_operations ; 293 struct i387_fsave_struct { u32 cwd; u32 swd; u32 twd; u32 fip; u32 fcs; u32 foo; u32 fos; u32 st_space[20U]; u32 status; } ; 311 struct __anonstruct_ldv_5225_21 { u64 rip; u64 rdp; } ; 311 struct __anonstruct_ldv_5231_22 { u32 fip; u32 fcs; u32 foo; u32 fos; } ; 311 union __anonunion_ldv_5232_20 { struct __anonstruct_ldv_5225_21 ldv_5225; struct __anonstruct_ldv_5231_22 ldv_5231; } ; 311 union __anonunion_ldv_5241_23 { u32 padding1[12U]; u32 sw_reserved[12U]; } ; 311 struct i387_fxsave_struct { u16 cwd; u16 swd; u16 twd; u16 fop; union __anonunion_ldv_5232_20 ldv_5232; u32 mxcsr; u32 mxcsr_mask; u32 st_space[32U]; u32 xmm_space[64U]; u32 padding[12U]; union __anonunion_ldv_5241_23 ldv_5241; } ; 345 struct i387_soft_struct { u32 cwd; u32 swd; u32 twd; u32 fip; u32 fcs; u32 foo; u32 fos; u32 st_space[20U]; u8 ftop; u8 changed; u8 lookahead; u8 no_update; u8 rm; u8 alimit; struct math_emu_info *info; u32 entry_eip; } ; 366 struct ymmh_struct { u32 ymmh_space[64U]; } ; 371 struct lwp_struct { u8 reserved[128U]; } ; 376 struct bndregs_struct { u64 bndregs[8U]; } ; 380 struct bndcsr_struct { u64 cfg_reg_u; u64 status_reg; } ; 385 struct xsave_hdr_struct { u64 xstate_bv; u64 xcomp_bv; u64 reserved[6U]; } ; 391 struct xsave_struct { struct i387_fxsave_struct i387; struct xsave_hdr_struct xsave_hdr; struct ymmh_struct ymmh; struct lwp_struct lwp; struct bndregs_struct bndregs; struct bndcsr_struct bndcsr; } ; 400 union thread_xstate { struct i387_fsave_struct fsave; struct i387_fxsave_struct fxsave; struct i387_soft_struct soft; struct xsave_struct xsave; } ; 408 struct fpu { unsigned int last_cpu; unsigned int has_fpu; union thread_xstate *state; } ; 464 struct kmem_cache ; 465 struct perf_event ; 466 struct thread_struct { struct desc_struct tls_array[3U]; unsigned long sp0; unsigned long sp; unsigned long usersp; unsigned short es; unsigned short ds; unsigned short fsindex; unsigned short gsindex; unsigned long fs; unsigned long gs; struct perf_event *ptrace_bps[4U]; unsigned long debugreg6; unsigned long ptrace_dr7; unsigned long cr2; unsigned long trap_nr; unsigned long error_code; struct fpu fpu; unsigned long *io_bitmap_ptr; unsigned long iopl; unsigned int io_bitmap_max; unsigned char fpu_counter; } ; 23 typedef atomic64_t atomic_long_t; 55 struct stack_trace { unsigned int nr_entries; unsigned int max_entries; unsigned long *entries; int skip; } ; 26 struct lockdep_subclass_key { char __one_byte; } ; 53 struct lock_class_key { struct lockdep_subclass_key subkeys[8U]; } ; 59 struct lock_class { struct list_head hash_entry; struct list_head lock_entry; struct lockdep_subclass_key *key; unsigned int subclass; unsigned int dep_gen_id; unsigned long usage_mask; struct stack_trace usage_traces[13U]; struct list_head locks_after; struct list_head locks_before; unsigned int version; unsigned long ops; const char *name; int name_version; unsigned long contention_point[4U]; unsigned long contending_point[4U]; } ; 144 struct lockdep_map { struct lock_class_key *key; struct lock_class *class_cache[2U]; const char *name; int cpu; unsigned long ip; } ; 205 struct held_lock { u64 prev_chain_key; unsigned long acquire_ip; struct lockdep_map *instance; struct lockdep_map *nest_lock; u64 waittime_stamp; u64 holdtime_stamp; unsigned short class_idx; unsigned char irq_context; unsigned char trylock; unsigned char read; unsigned char check; unsigned char hardirqs_off; unsigned short references; } ; 530 struct raw_spinlock { arch_spinlock_t raw_lock; unsigned int magic; unsigned int owner_cpu; void *owner; struct lockdep_map dep_map; } ; 32 typedef struct raw_spinlock raw_spinlock_t; 33 struct __anonstruct_ldv_6072_27 { u8 __padding[24U]; struct lockdep_map dep_map; } ; 33 union __anonunion_ldv_6073_26 { struct raw_spinlock rlock; struct __anonstruct_ldv_6072_27 ldv_6072; } ; 33 struct spinlock { union __anonunion_ldv_6073_26 ldv_6073; } ; 76 typedef struct spinlock spinlock_t; 23 struct __anonstruct_rwlock_t_28 { arch_rwlock_t raw_lock; unsigned int magic; unsigned int owner_cpu; void *owner; struct lockdep_map dep_map; } ; 23 typedef struct __anonstruct_rwlock_t_28 rwlock_t; 23 struct optimistic_spin_queue { atomic_t tail; } ; 26 struct mutex { atomic_t count; spinlock_t wait_lock; struct list_head wait_list; struct task_struct *owner; const char *name; void *magic; struct lockdep_map dep_map; } ; 68 struct mutex_waiter { struct list_head list; struct task_struct *task; void *magic; } ; 16 struct timespec ; 412 struct llist_node ; 64 struct llist_node { struct llist_node *next; } ; 152 struct seqcount { unsigned int sequence; struct lockdep_map dep_map; } ; 51 typedef struct seqcount seqcount_t; 284 struct __anonstruct_seqlock_t_97 { struct seqcount seqcount; spinlock_t lock; } ; 284 typedef struct __anonstruct_seqlock_t_97 seqlock_t; 458 struct timespec { __kernel_time_t tv_sec; long tv_nsec; } ; 323 union ktime { s64 tv64; } ; 41 typedef union ktime ktime_t; 105 struct tvec_base ; 106 struct timer_list { struct list_head entry; unsigned long expires; struct tvec_base *base; void (*function)(unsigned long); unsigned long data; int slack; int start_pid; void *start_site; char start_comm[16U]; struct lockdep_map lockdep_map; } ; 254 struct hrtimer ; 255 enum hrtimer_restart ; 266 struct workqueue_struct ; 267 struct work_struct ; 53 struct work_struct { atomic_long_t data; struct list_head entry; void (*func)(struct work_struct *); struct lockdep_map lockdep_map; } ; 106 struct delayed_work { struct work_struct work; struct timer_list timer; struct workqueue_struct *wq; int cpu; } ; 12 struct __wait_queue ; 12 typedef struct __wait_queue wait_queue_t; 15 struct __wait_queue { unsigned int flags; void *private; int (*func)(wait_queue_t *, unsigned int, int, void *); struct list_head task_list; } ; 35 struct __wait_queue_head { spinlock_t lock; struct list_head task_list; } ; 40 typedef struct __wait_queue_head wait_queue_head_t; 1029 struct completion { unsigned int done; wait_queue_head_t wait; } ; 58 struct pm_message { int event; } ; 64 typedef struct pm_message pm_message_t; 65 struct dev_pm_ops { int (*prepare)(struct device *); void (*complete)(struct device *); int (*suspend)(struct device *); int (*resume)(struct device *); int (*freeze)(struct device *); int (*thaw)(struct device *); int (*poweroff)(struct device *); int (*restore)(struct device *); int (*suspend_late)(struct device *); int (*resume_early)(struct device *); int (*freeze_late)(struct device *); int (*thaw_early)(struct device *); int (*poweroff_late)(struct device *); int (*restore_early)(struct device *); int (*suspend_noirq)(struct device *); int (*resume_noirq)(struct device *); int (*freeze_noirq)(struct device *); int (*thaw_noirq)(struct device *); int (*poweroff_noirq)(struct device *); int (*restore_noirq)(struct device *); int (*runtime_suspend)(struct device *); int (*runtime_resume)(struct device *); int (*runtime_idle)(struct device *); } ; 320 enum rpm_status { RPM_ACTIVE = 0, RPM_RESUMING = 1, RPM_SUSPENDED = 2, RPM_SUSPENDING = 3 } ; 327 enum rpm_request { RPM_REQ_NONE = 0, RPM_REQ_IDLE = 1, RPM_REQ_SUSPEND = 2, RPM_REQ_AUTOSUSPEND = 3, RPM_REQ_RESUME = 4 } ; 335 struct wakeup_source ; 546 struct pm_subsys_data { spinlock_t lock; unsigned int refcount; struct list_head clock_list; } ; 553 struct dev_pm_qos ; 553 struct dev_pm_info { pm_message_t power_state; unsigned char can_wakeup; unsigned char async_suspend; bool is_prepared; bool is_suspended; bool is_noirq_suspended; bool is_late_suspended; bool ignore_children; bool early_init; bool direct_complete; spinlock_t lock; struct list_head entry; struct completion completion; struct wakeup_source *wakeup; bool wakeup_path; bool syscore; struct timer_list suspend_timer; unsigned long timer_expires; struct work_struct work; wait_queue_head_t wait_queue; atomic_t usage_count; atomic_t child_count; unsigned char disable_depth; unsigned char idle_notification; unsigned char request_pending; unsigned char deferred_resume; unsigned char run_wake; unsigned char runtime_auto; unsigned char no_callbacks; unsigned char irq_safe; unsigned char use_autosuspend; unsigned char timer_autosuspends; unsigned char memalloc_noio; enum rpm_request request; enum rpm_status runtime_status; int runtime_error; int autosuspend_delay; unsigned long last_busy; unsigned long active_jiffies; unsigned long suspended_jiffies; unsigned long accounting_timestamp; struct pm_subsys_data *subsys_data; void (*set_latency_tolerance)(struct device *, s32 ); struct dev_pm_qos *qos; } ; 614 struct dev_pm_domain { struct dev_pm_ops ops; } ; 98 struct __anonstruct_nodemask_t_98 { unsigned long bits[16U]; } ; 98 typedef struct __anonstruct_nodemask_t_98 nodemask_t; 22 struct __anonstruct_mm_context_t_99 { void *ldt; int size; unsigned short ia32_compat; struct mutex lock; void *vdso; } ; 22 typedef struct __anonstruct_mm_context_t_99 mm_context_t; 18 struct rb_node { unsigned long __rb_parent_color; struct rb_node *rb_right; struct rb_node *rb_left; } ; 40 struct rb_root { struct rb_node *rb_node; } ; 87 struct vm_area_struct ; 22 struct bio_vec ; 167 struct notifier_block ; 169 struct device_node ; 128 struct percpu_counter { raw_spinlock_t lock; s64 count; struct list_head list; s32 *counters; } ; 71 struct fprop_local_percpu { struct percpu_counter events; unsigned int period; raw_spinlock_t lock; } ; 93 struct hlist_bl_node ; 93 struct hlist_bl_head { struct hlist_bl_node *first; } ; 36 struct hlist_bl_node { struct hlist_bl_node *next; struct hlist_bl_node **pprev; } ; 114 struct __anonstruct_ldv_12314_127 { spinlock_t lock; unsigned int count; } ; 114 union __anonunion_ldv_12315_126 { struct __anonstruct_ldv_12314_127 ldv_12314; } ; 114 struct lockref { union __anonunion_ldv_12315_126 ldv_12315; } ; 49 struct nameidata ; 50 struct path ; 51 struct vfsmount ; 52 struct __anonstruct_ldv_12339_129 { u32 hash; u32 len; } ; 52 union __anonunion_ldv_12341_128 { struct __anonstruct_ldv_12339_129 ldv_12339; u64 hash_len; } ; 52 struct qstr { union __anonunion_ldv_12341_128 ldv_12341; const unsigned char *name; } ; 90 struct inode ; 90 struct dentry_operations ; 90 struct super_block ; 90 union __anonunion_d_u_130 { struct list_head d_child; struct callback_head d_rcu; } ; 90 struct dentry { unsigned int d_flags; seqcount_t d_seq; struct hlist_bl_node d_hash; struct dentry *d_parent; struct qstr d_name; struct inode *d_inode; unsigned char d_iname[32U]; struct lockref d_lockref; const struct dentry_operations *d_op; struct super_block *d_sb; unsigned long d_time; void *d_fsdata; struct list_head d_lru; union __anonunion_d_u_130 d_u; struct list_head d_subdirs; struct hlist_node d_alias; } ; 142 struct dentry_operations { int (*d_revalidate)(struct dentry *, unsigned int); int (*d_weak_revalidate)(struct dentry *, unsigned int); int (*d_hash)(const struct dentry *, struct qstr *); int (*d_compare)(const struct dentry *, const struct dentry *, unsigned int, const char *, const struct qstr *); int (*d_delete)(const struct dentry *); void (*d_release)(struct dentry *); void (*d_prune)(struct dentry *); void (*d_iput)(struct dentry *, struct inode *); char * (*d_dname)(struct dentry *, char *, int); struct vfsmount * (*d_automount)(struct path *); int (*d_manage)(struct dentry *, bool ); } ; 478 struct path { struct vfsmount *mnt; struct dentry *dentry; } ; 83 struct user_namespace ; 22 struct __anonstruct_kuid_t_131 { uid_t val; } ; 22 typedef struct __anonstruct_kuid_t_131 kuid_t; 27 struct __anonstruct_kgid_t_132 { gid_t val; } ; 27 typedef struct __anonstruct_kgid_t_132 kgid_t; 127 struct kstat { u64 ino; dev_t dev; umode_t mode; unsigned int nlink; kuid_t uid; kgid_t gid; dev_t rdev; loff_t size; struct timespec atime; struct timespec mtime; struct timespec ctime; unsigned long blksize; unsigned long long blocks; } ; 44 struct list_lru_node { spinlock_t lock; struct list_head list; long nr_items; } ; 30 struct list_lru { struct list_lru_node *node; nodemask_t active_nodes; } ; 58 struct __anonstruct_ldv_12848_134 { struct radix_tree_node *parent; void *private_data; } ; 58 union __anonunion_ldv_12850_133 { struct __anonstruct_ldv_12848_134 ldv_12848; struct callback_head callback_head; } ; 58 struct radix_tree_node { unsigned int path; unsigned int count; union __anonunion_ldv_12850_133 ldv_12850; struct list_head private_list; void *slots[64U]; unsigned long tags[3U][1U]; } ; 105 struct radix_tree_root { unsigned int height; gfp_t gfp_mask; struct radix_tree_node *rnode; } ; 428 enum pid_type { PIDTYPE_PID = 0, PIDTYPE_PGID = 1, PIDTYPE_SID = 2, PIDTYPE_MAX = 3 } ; 435 struct pid_namespace ; 435 struct upid { int nr; struct pid_namespace *ns; struct hlist_node pid_chain; } ; 56 struct pid { atomic_t count; unsigned int level; struct hlist_head tasks[3U]; struct callback_head rcu; struct upid numbers[1U]; } ; 68 struct pid_link { struct hlist_node node; struct pid *pid; } ; 22 struct kernel_cap_struct { __u32 cap[2U]; } ; 25 typedef struct kernel_cap_struct kernel_cap_t; 45 struct fiemap_extent { __u64 fe_logical; __u64 fe_physical; __u64 fe_length; __u64 fe_reserved64[2U]; __u32 fe_flags; __u32 fe_reserved[3U]; } ; 38 struct shrink_control { gfp_t gfp_mask; unsigned long nr_to_scan; nodemask_t nodes_to_scan; int nid; } ; 26 struct shrinker { unsigned long int (*count_objects)(struct shrinker *, struct shrink_control *); unsigned long int (*scan_objects)(struct shrinker *, struct shrink_control *); int seeks; long batch; unsigned long flags; struct list_head list; atomic_long_t *nr_deferred; } ; 70 enum migrate_mode { MIGRATE_ASYNC = 0, MIGRATE_SYNC_LIGHT = 1, MIGRATE_SYNC = 2 } ; 76 struct rw_semaphore ; 77 struct rw_semaphore { long count; struct list_head wait_list; raw_spinlock_t wait_lock; struct optimistic_spin_queue osq; struct task_struct *owner; struct lockdep_map dep_map; } ; 27 struct bio_set ; 28 struct bio ; 29 struct bio_integrity_payload ; 30 struct block_device ; 31 struct io_context ; 32 struct cgroup_subsys_state ; 17 typedef void bio_end_io_t(struct bio *, int); 19 struct bio_vec { struct page *bv_page; unsigned int bv_len; unsigned int bv_offset; } ; 28 struct bvec_iter { sector_t bi_sector; unsigned int bi_size; unsigned int bi_idx; unsigned int bi_bvec_done; } ; 40 struct bio { struct bio *bi_next; struct block_device *bi_bdev; unsigned long bi_flags; unsigned long bi_rw; struct bvec_iter bi_iter; unsigned int bi_phys_segments; unsigned int bi_seg_front_size; unsigned int bi_seg_back_size; atomic_t bi_remaining; bio_end_io_t *bi_end_io; void *bi_private; struct io_context *bi_ioc; struct cgroup_subsys_state *bi_css; struct bio_integrity_payload *bi_integrity; unsigned short bi_vcnt; unsigned short bi_max_vecs; atomic_t bi_cnt; struct bio_vec *bi_io_vec; struct bio_set *bi_pool; struct bio_vec bi_inline_vecs[0U]; } ; 59 struct export_operations ; 61 struct iovec ; 62 struct kiocb ; 63 struct kobject ; 64 struct pipe_inode_info ; 65 struct poll_table_struct ; 66 struct kstatfs ; 67 struct cred ; 68 struct swap_info_struct ; 69 struct iov_iter ; 69 struct iattr { unsigned int ia_valid; umode_t ia_mode; kuid_t ia_uid; kgid_t ia_gid; loff_t ia_size; struct timespec ia_atime; struct timespec ia_mtime; struct timespec ia_ctime; struct file *ia_file; } ; 253 struct fs_disk_quota { __s8 d_version; __s8 d_flags; __u16 d_fieldmask; __u32 d_id; __u64 d_blk_hardlimit; __u64 d_blk_softlimit; __u64 d_ino_hardlimit; __u64 d_ino_softlimit; __u64 d_bcount; __u64 d_icount; __s32 d_itimer; __s32 d_btimer; __u16 d_iwarns; __u16 d_bwarns; __s32 d_padding2; __u64 d_rtb_hardlimit; __u64 d_rtb_softlimit; __u64 d_rtbcount; __s32 d_rtbtimer; __u16 d_rtbwarns; __s16 d_padding3; char d_padding4[8U]; } ; 76 struct fs_qfilestat { __u64 qfs_ino; __u64 qfs_nblks; __u32 qfs_nextents; } ; 151 typedef struct fs_qfilestat fs_qfilestat_t; 152 struct fs_quota_stat { __s8 qs_version; __u16 qs_flags; __s8 qs_pad; fs_qfilestat_t qs_uquota; fs_qfilestat_t qs_gquota; __u32 qs_incoredqs; __s32 qs_btimelimit; __s32 qs_itimelimit; __s32 qs_rtbtimelimit; __u16 qs_bwarnlimit; __u16 qs_iwarnlimit; } ; 166 struct fs_qfilestatv { __u64 qfs_ino; __u64 qfs_nblks; __u32 qfs_nextents; __u32 qfs_pad; } ; 196 struct fs_quota_statv { __s8 qs_version; __u8 qs_pad1; __u16 qs_flags; __u32 qs_incoredqs; struct fs_qfilestatv qs_uquota; struct fs_qfilestatv qs_gquota; struct fs_qfilestatv qs_pquota; __s32 qs_btimelimit; __s32 qs_itimelimit; __s32 qs_rtbtimelimit; __u16 qs_bwarnlimit; __u16 qs_iwarnlimit; __u64 qs_pad2[8U]; } ; 212 struct dquot ; 19 typedef __kernel_uid32_t projid_t; 23 struct __anonstruct_kprojid_t_136 { projid_t val; } ; 23 typedef struct __anonstruct_kprojid_t_136 kprojid_t; 119 struct if_dqinfo { __u64 dqi_bgrace; __u64 dqi_igrace; __u32 dqi_flags; __u32 dqi_valid; } ; 152 enum quota_type { USRQUOTA = 0, GRPQUOTA = 1, PRJQUOTA = 2 } ; 60 typedef long long qsize_t; 61 union __anonunion_ldv_13718_137 { kuid_t uid; kgid_t gid; kprojid_t projid; } ; 61 struct kqid { union __anonunion_ldv_13718_137 ldv_13718; enum quota_type type; } ; 178 struct mem_dqblk { qsize_t dqb_bhardlimit; qsize_t dqb_bsoftlimit; qsize_t dqb_curspace; qsize_t dqb_rsvspace; qsize_t dqb_ihardlimit; qsize_t dqb_isoftlimit; qsize_t dqb_curinodes; time_t dqb_btime; time_t dqb_itime; } ; 200 struct quota_format_type ; 201 struct mem_dqinfo { struct quota_format_type *dqi_format; int dqi_fmt_id; struct list_head dqi_dirty_list; unsigned long dqi_flags; unsigned int dqi_bgrace; unsigned int dqi_igrace; qsize_t dqi_maxblimit; qsize_t dqi_maxilimit; void *dqi_priv; } ; 264 struct dquot { struct hlist_node dq_hash; struct list_head dq_inuse; struct list_head dq_free; struct list_head dq_dirty; struct mutex dq_lock; atomic_t dq_count; wait_queue_head_t dq_wait_unused; struct super_block *dq_sb; struct kqid dq_id; loff_t dq_off; unsigned long dq_flags; struct mem_dqblk dq_dqb; } ; 291 struct quota_format_ops { int (*check_quota_file)(struct super_block *, int); int (*read_file_info)(struct super_block *, int); int (*write_file_info)(struct super_block *, int); int (*free_file_info)(struct super_block *, int); int (*read_dqblk)(struct dquot *); int (*commit_dqblk)(struct dquot *); int (*release_dqblk)(struct dquot *); } ; 302 struct dquot_operations { int (*write_dquot)(struct dquot *); struct dquot * (*alloc_dquot)(struct super_block *, int); void (*destroy_dquot)(struct dquot *); int (*acquire_dquot)(struct dquot *); int (*release_dquot)(struct dquot *); int (*mark_dirty)(struct dquot *); int (*write_info)(struct super_block *, int); qsize_t * (*get_reserved_space)(struct inode *); } ; 316 struct quotactl_ops { int (*quota_on)(struct super_block *, int, int, struct path *); int (*quota_on_meta)(struct super_block *, int, int); int (*quota_off)(struct super_block *, int); int (*quota_sync)(struct super_block *, int); int (*get_info)(struct super_block *, int, struct if_dqinfo *); int (*set_info)(struct super_block *, int, struct if_dqinfo *); int (*get_dqblk)(struct super_block *, struct kqid , struct fs_disk_quota *); int (*set_dqblk)(struct super_block *, struct kqid , struct fs_disk_quota *); int (*get_xstate)(struct super_block *, struct fs_quota_stat *); int (*set_xstate)(struct super_block *, unsigned int, int); int (*get_xstatev)(struct super_block *, struct fs_quota_statv *); int (*rm_xquota)(struct super_block *, unsigned int); } ; 334 struct quota_format_type { int qf_fmt_id; const struct quota_format_ops *qf_ops; struct module *qf_owner; struct quota_format_type *qf_next; } ; 380 struct quota_info { unsigned int flags; struct mutex dqio_mutex; struct mutex dqonoff_mutex; struct inode *files[2U]; struct mem_dqinfo info[2U]; const struct quota_format_ops *ops[2U]; } ; 410 struct address_space ; 411 struct writeback_control ; 323 struct address_space_operations { int (*writepage)(struct page *, struct writeback_control *); int (*readpage)(struct file *, struct page *); int (*writepages)(struct address_space *, struct writeback_control *); int (*set_page_dirty)(struct page *); int (*readpages)(struct file *, struct address_space *, struct list_head *, unsigned int); int (*write_begin)(struct file *, struct address_space *, loff_t , unsigned int, unsigned int, struct page **, void **); int (*write_end)(struct file *, struct address_space *, loff_t , unsigned int, unsigned int, struct page *, void *); sector_t (*bmap)(struct address_space *, sector_t ); void (*invalidatepage)(struct page *, unsigned int, unsigned int); int (*releasepage)(struct page *, gfp_t ); void (*freepage)(struct page *); ssize_t (*direct_IO)(int, struct kiocb *, struct iov_iter *, loff_t ); int (*get_xip_mem)(struct address_space *, unsigned long, int, void **, unsigned long *); int (*migratepage)(struct address_space *, struct page *, struct page *, enum migrate_mode ); int (*launder_page)(struct page *); int (*is_partially_uptodate)(struct page *, unsigned long, unsigned long); void (*is_dirty_writeback)(struct page *, bool *, bool *); int (*error_remove_page)(struct address_space *, struct page *); int (*swap_activate)(struct swap_info_struct *, struct file *, sector_t *); void (*swap_deactivate)(struct file *); } ; 382 struct backing_dev_info ; 383 struct address_space { struct inode *host; struct radix_tree_root page_tree; spinlock_t tree_lock; atomic_t i_mmap_writable; struct rb_root i_mmap; struct list_head i_mmap_nonlinear; struct mutex i_mmap_mutex; unsigned long nrpages; unsigned long nrshadows; unsigned long writeback_index; const struct address_space_operations *a_ops; unsigned long flags; struct backing_dev_info *backing_dev_info; spinlock_t private_lock; struct list_head private_list; void *private_data; } ; 405 struct request_queue ; 406 struct hd_struct ; 406 struct gendisk ; 406 struct block_device { dev_t bd_dev; int bd_openers; struct inode *bd_inode; struct super_block *bd_super; struct mutex bd_mutex; struct list_head bd_inodes; void *bd_claiming; void *bd_holder; int bd_holders; bool bd_write_holder; struct list_head bd_holder_disks; struct block_device *bd_contains; unsigned int bd_block_size; struct hd_struct *bd_part; unsigned int bd_part_count; int bd_invalidated; struct gendisk *bd_disk; struct request_queue *bd_queue; struct list_head bd_list; unsigned long bd_private; int bd_fsfreeze_count; struct mutex bd_fsfreeze_mutex; } ; 503 struct posix_acl ; 504 struct inode_operations ; 504 union __anonunion_ldv_14146_140 { const unsigned int i_nlink; unsigned int __i_nlink; } ; 504 union __anonunion_ldv_14166_141 { struct hlist_head i_dentry; struct callback_head i_rcu; } ; 504 struct file_lock ; 504 struct cdev ; 504 union __anonunion_ldv_14183_142 { struct pipe_inode_info *i_pipe; struct block_device *i_bdev; struct cdev *i_cdev; } ; 504 struct inode { umode_t i_mode; unsigned short i_opflags; kuid_t i_uid; kgid_t i_gid; unsigned int i_flags; struct posix_acl *i_acl; struct posix_acl *i_default_acl; const struct inode_operations *i_op; struct super_block *i_sb; struct address_space *i_mapping; void *i_security; unsigned long i_ino; union __anonunion_ldv_14146_140 ldv_14146; dev_t i_rdev; loff_t i_size; struct timespec i_atime; struct timespec i_mtime; struct timespec i_ctime; spinlock_t i_lock; unsigned short i_bytes; unsigned int i_blkbits; blkcnt_t i_blocks; unsigned long i_state; struct mutex i_mutex; unsigned long dirtied_when; struct hlist_node i_hash; struct list_head i_wb_list; struct list_head i_lru; struct list_head i_sb_list; union __anonunion_ldv_14166_141 ldv_14166; u64 i_version; atomic_t i_count; atomic_t i_dio_count; atomic_t i_writecount; atomic_t i_readcount; const struct file_operations *i_fop; struct file_lock *i_flock; struct address_space i_data; struct dquot *i_dquot[2U]; struct list_head i_devices; union __anonunion_ldv_14183_142 ldv_14183; __u32 i_generation; __u32 i_fsnotify_mask; struct hlist_head i_fsnotify_marks; void *i_private; } ; 740 struct fown_struct { rwlock_t lock; struct pid *pid; enum pid_type pid_type; kuid_t uid; kuid_t euid; int signum; } ; 748 struct file_ra_state { unsigned long start; unsigned int size; unsigned int async_size; unsigned int ra_pages; unsigned int mmap_miss; loff_t prev_pos; } ; 771 union __anonunion_f_u_143 { struct llist_node fu_llist; struct callback_head fu_rcuhead; } ; 771 struct file { union __anonunion_f_u_143 f_u; struct path f_path; struct inode *f_inode; const struct file_operations *f_op; spinlock_t f_lock; atomic_long_t f_count; unsigned int f_flags; fmode_t f_mode; struct mutex f_pos_lock; loff_t f_pos; struct fown_struct f_owner; const struct cred *f_cred; struct file_ra_state f_ra; u64 f_version; void *f_security; void *private_data; struct list_head f_ep_links; struct list_head f_tfile_llink; struct address_space *f_mapping; } ; 861 typedef void *fl_owner_t; 862 struct file_lock_operations { void (*fl_copy_lock)(struct file_lock *, struct file_lock *); void (*fl_release_private)(struct file_lock *); } ; 867 struct lock_manager_operations { int (*lm_compare_owner)(struct file_lock *, struct file_lock *); unsigned long int (*lm_owner_key)(struct file_lock *); void (*lm_notify)(struct file_lock *); int (*lm_grant)(struct file_lock *, struct file_lock *, int); void (*lm_break)(struct file_lock *); int (*lm_change)(struct file_lock **, int); } ; 880 struct net ; 885 struct nlm_lockowner ; 886 struct nfs_lock_info { u32 state; struct nlm_lockowner *owner; struct list_head list; } ; 14 struct nfs4_lock_state ; 15 struct nfs4_lock_info { struct nfs4_lock_state *owner; } ; 19 struct fasync_struct ; 19 struct __anonstruct_afs_145 { struct list_head link; int state; } ; 19 union __anonunion_fl_u_144 { struct nfs_lock_info nfs_fl; struct nfs4_lock_info nfs4_fl; struct __anonstruct_afs_145 afs; } ; 19 struct file_lock { struct file_lock *fl_next; struct hlist_node fl_link; struct list_head fl_block; fl_owner_t fl_owner; unsigned int fl_flags; unsigned char fl_type; unsigned int fl_pid; int fl_link_cpu; struct pid *fl_nspid; wait_queue_head_t fl_wait; struct file *fl_file; loff_t fl_start; loff_t fl_end; struct fasync_struct *fl_fasync; unsigned long fl_break_time; unsigned long fl_downgrade_time; const struct file_lock_operations *fl_ops; const struct lock_manager_operations *fl_lmops; union __anonunion_fl_u_144 fl_u; } ; 988 struct fasync_struct { spinlock_t fa_lock; int magic; int fa_fd; struct fasync_struct *fa_next; struct file *fa_file; struct callback_head fa_rcu; } ; 1182 struct sb_writers { struct percpu_counter counter[3U]; wait_queue_head_t wait; int frozen; wait_queue_head_t wait_unfrozen; struct lockdep_map lock_map[3U]; } ; 1198 struct file_system_type ; 1198 struct super_operations ; 1198 struct xattr_handler ; 1198 struct mtd_info ; 1198 struct super_block { struct list_head s_list; dev_t s_dev; unsigned char s_blocksize_bits; unsigned long s_blocksize; loff_t s_maxbytes; struct file_system_type *s_type; const struct super_operations *s_op; const struct dquot_operations *dq_op; const struct quotactl_ops *s_qcop; const struct export_operations *s_export_op; unsigned long s_flags; unsigned long s_magic; struct dentry *s_root; struct rw_semaphore s_umount; int s_count; atomic_t s_active; void *s_security; const struct xattr_handler **s_xattr; struct list_head s_inodes; struct hlist_bl_head s_anon; struct list_head s_mounts; struct block_device *s_bdev; struct backing_dev_info *s_bdi; struct mtd_info *s_mtd; struct hlist_node s_instances; struct quota_info s_dquot; struct sb_writers s_writers; char s_id[32U]; u8 s_uuid[16U]; void *s_fs_info; unsigned int s_max_links; fmode_t s_mode; u32 s_time_gran; struct mutex s_vfs_rename_mutex; char *s_subtype; char *s_options; const struct dentry_operations *s_d_op; int cleancache_poolid; struct shrinker s_shrink; atomic_long_t s_remove_count; int s_readonly_remount; struct workqueue_struct *s_dio_done_wq; struct hlist_head s_pins; struct list_lru s_dentry_lru; struct list_lru s_inode_lru; struct callback_head rcu; } ; 1429 struct fiemap_extent_info { unsigned int fi_flags; unsigned int fi_extents_mapped; unsigned int fi_extents_max; struct fiemap_extent *fi_extents_start; } ; 1467 struct dir_context { int (*actor)(void *, const char *, int, loff_t , u64 , unsigned int); loff_t pos; } ; 1472 struct file_operations { struct module *owner; loff_t (*llseek)(struct file *, loff_t , int); ssize_t (*read)(struct file *, char *, size_t , loff_t *); ssize_t (*write)(struct file *, const char *, size_t , loff_t *); ssize_t (*aio_read)(struct kiocb *, const struct iovec *, unsigned long, loff_t ); ssize_t (*aio_write)(struct kiocb *, const struct iovec *, unsigned long, loff_t ); ssize_t (*read_iter)(struct kiocb *, struct iov_iter *); ssize_t (*write_iter)(struct kiocb *, struct iov_iter *); int (*iterate)(struct file *, struct dir_context *); unsigned int (*poll)(struct file *, struct poll_table_struct *); long int (*unlocked_ioctl)(struct file *, unsigned int, unsigned long); long int (*compat_ioctl)(struct file *, unsigned int, unsigned long); int (*mmap)(struct file *, struct vm_area_struct *); int (*open)(struct inode *, struct file *); int (*flush)(struct file *, fl_owner_t ); int (*release)(struct inode *, struct file *); int (*fsync)(struct file *, loff_t , loff_t , int); int (*aio_fsync)(struct kiocb *, int); int (*fasync)(int, struct file *, int); int (*lock)(struct file *, int, struct file_lock *); ssize_t (*sendpage)(struct file *, struct page *, int, size_t , loff_t *, int); unsigned long int (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); int (*check_flags)(int); int (*flock)(struct file *, int, struct file_lock *); ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t , unsigned int); ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t , unsigned int); int (*setlease)(struct file *, long, struct file_lock **); long int (*fallocate)(struct file *, int, loff_t , loff_t ); int (*show_fdinfo)(struct seq_file *, struct file *); } ; 1514 struct inode_operations { struct dentry * (*lookup)(struct inode *, struct dentry *, unsigned int); void * (*follow_link)(struct dentry *, struct nameidata *); int (*permission)(struct inode *, int); struct posix_acl * (*get_acl)(struct inode *, int); int (*readlink)(struct dentry *, char *, int); void (*put_link)(struct dentry *, struct nameidata *, void *); int (*create)(struct inode *, struct dentry *, umode_t , bool ); int (*link)(struct dentry *, struct inode *, struct dentry *); int (*unlink)(struct inode *, struct dentry *); int (*symlink)(struct inode *, struct dentry *, const char *); int (*mkdir)(struct inode *, struct dentry *, umode_t ); int (*rmdir)(struct inode *, struct dentry *); int (*mknod)(struct inode *, struct dentry *, umode_t , dev_t ); int (*rename)(struct inode *, struct dentry *, struct inode *, struct dentry *); int (*rename2)(struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int); int (*setattr)(struct dentry *, struct iattr *); int (*getattr)(struct vfsmount *, struct dentry *, struct kstat *); int (*setxattr)(struct dentry *, const char *, const void *, size_t , int); ssize_t (*getxattr)(struct dentry *, const char *, void *, size_t ); ssize_t (*listxattr)(struct dentry *, char *, size_t ); int (*removexattr)(struct dentry *, const char *); int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 , u64 ); int (*update_time)(struct inode *, struct timespec *, int); int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned int, umode_t , int *); int (*tmpfile)(struct inode *, struct dentry *, umode_t ); int (*set_acl)(struct inode *, struct posix_acl *, int); } ; 1561 struct super_operations { struct inode * (*alloc_inode)(struct super_block *); void (*destroy_inode)(struct inode *); void (*dirty_inode)(struct inode *, int); int (*write_inode)(struct inode *, struct writeback_control *); int (*drop_inode)(struct inode *); void (*evict_inode)(struct inode *); void (*put_super)(struct super_block *); int (*sync_fs)(struct super_block *, int); int (*freeze_fs)(struct super_block *); int (*unfreeze_fs)(struct super_block *); int (*statfs)(struct dentry *, struct kstatfs *); int (*remount_fs)(struct super_block *, int *, char *); void (*umount_begin)(struct super_block *); int (*show_options)(struct seq_file *, struct dentry *); int (*show_devname)(struct seq_file *, struct dentry *); int (*show_path)(struct seq_file *, struct dentry *); int (*show_stats)(struct seq_file *, struct dentry *); ssize_t (*quota_read)(struct super_block *, int, char *, size_t , loff_t ); ssize_t (*quota_write)(struct super_block *, int, const char *, size_t , loff_t ); int (*bdev_try_to_free_page)(struct super_block *, struct page *, gfp_t ); long int (*nr_cached_objects)(struct super_block *, int); long int (*free_cached_objects)(struct super_block *, long, int); } ; 1775 struct file_system_type { const char *name; int fs_flags; struct dentry * (*mount)(struct file_system_type *, int, const char *, void *); void (*kill_sb)(struct super_block *); struct module *owner; struct file_system_type *next; struct hlist_head fs_supers; struct lock_class_key s_lock_key; struct lock_class_key s_umount_key; struct lock_class_key s_vfs_rename_key; struct lock_class_key s_writers_key[3U]; struct lock_class_key i_lock_key; struct lock_class_key i_mutex_key; struct lock_class_key i_mutex_dir_key; } ; 2733 struct ctl_table ; 84 struct plist_node { int prio; struct list_head prio_list; struct list_head node_list; } ; 51 struct notifier_block { int (*notifier_call)(struct notifier_block *, unsigned long, void *); struct notifier_block *next; int priority; } ; 58 struct arch_uprobe_task { unsigned long saved_scratch_register; unsigned int saved_trap_nr; unsigned int saved_tf; } ; 66 enum uprobe_task_state { UTASK_RUNNING = 0, UTASK_SSTEP = 1, UTASK_SSTEP_ACK = 2, UTASK_SSTEP_TRAPPED = 3 } ; 73 struct __anonstruct_ldv_16476_151 { struct arch_uprobe_task autask; unsigned long vaddr; } ; 73 struct __anonstruct_ldv_16480_152 { struct callback_head dup_xol_work; unsigned long dup_xol_addr; } ; 73 union __anonunion_ldv_16481_150 { struct __anonstruct_ldv_16476_151 ldv_16476; struct __anonstruct_ldv_16480_152 ldv_16480; } ; 73 struct uprobe ; 73 struct return_instance ; 73 struct uprobe_task { enum uprobe_task_state state; union __anonunion_ldv_16481_150 ldv_16481; struct uprobe *active_uprobe; unsigned long xol_vaddr; struct return_instance *return_instances; unsigned int depth; } ; 94 struct xol_area ; 95 struct uprobes_state { struct xol_area *xol_area; } ; 133 union __anonunion_ldv_16589_153 { struct address_space *mapping; void *s_mem; } ; 133 union __anonunion_ldv_16595_155 { unsigned long index; void *freelist; bool pfmemalloc; } ; 133 struct __anonstruct_ldv_16605_159 { unsigned short inuse; unsigned short objects; unsigned char frozen; } ; 133 union __anonunion_ldv_16607_158 { atomic_t _mapcount; struct __anonstruct_ldv_16605_159 ldv_16605; int units; } ; 133 struct __anonstruct_ldv_16609_157 { union __anonunion_ldv_16607_158 ldv_16607; atomic_t _count; } ; 133 union __anonunion_ldv_16611_156 { unsigned long counters; struct __anonstruct_ldv_16609_157 ldv_16609; unsigned int active; } ; 133 struct __anonstruct_ldv_16612_154 { union __anonunion_ldv_16595_155 ldv_16595; union __anonunion_ldv_16611_156 ldv_16611; } ; 133 struct __anonstruct_ldv_16619_161 { struct page *next; int pages; int pobjects; } ; 133 struct slab ; 133 union __anonunion_ldv_16624_160 { struct list_head lru; struct __anonstruct_ldv_16619_161 ldv_16619; struct slab *slab_page; struct callback_head callback_head; pgtable_t pmd_huge_pte; } ; 133 union __anonunion_ldv_16630_162 { unsigned long private; spinlock_t *ptl; struct kmem_cache *slab_cache; struct page *first_page; } ; 133 struct page { unsigned long flags; union __anonunion_ldv_16589_153 ldv_16589; struct __anonstruct_ldv_16612_154 ldv_16612; union __anonunion_ldv_16624_160 ldv_16624; union __anonunion_ldv_16630_162 ldv_16630; unsigned long debug_flags; } ; 187 struct page_frag { struct page *page; __u32 offset; __u32 size; } ; 239 struct __anonstruct_linear_164 { struct rb_node rb; unsigned long rb_subtree_last; } ; 239 union __anonunion_shared_163 { struct __anonstruct_linear_164 linear; struct list_head nonlinear; } ; 239 struct anon_vma ; 239 struct vm_operations_struct ; 239 struct mempolicy ; 239 struct vm_area_struct { unsigned long vm_start; unsigned long vm_end; struct vm_area_struct *vm_next; struct vm_area_struct *vm_prev; struct rb_node vm_rb; unsigned long rb_subtree_gap; struct mm_struct *vm_mm; pgprot_t vm_page_prot; unsigned long vm_flags; union __anonunion_shared_163 shared; struct list_head anon_vma_chain; struct anon_vma *anon_vma; const struct vm_operations_struct *vm_ops; unsigned long vm_pgoff; struct file *vm_file; void *vm_private_data; struct mempolicy *vm_policy; } ; 311 struct core_thread { struct task_struct *task; struct core_thread *next; } ; 317 struct core_state { atomic_t nr_threads; struct core_thread dumper; struct completion startup; } ; 330 struct task_rss_stat { int events; int count[3U]; } ; 338 struct mm_rss_stat { atomic_long_t count[3U]; } ; 343 struct kioctx_table ; 344 struct linux_binfmt ; 344 struct mmu_notifier_mm ; 344 struct mm_struct { struct vm_area_struct *mmap; struct rb_root mm_rb; u32 vmacache_seqnum; unsigned long int (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); unsigned long mmap_base; unsigned long mmap_legacy_base; unsigned long task_size; unsigned long highest_vm_end; pgd_t *pgd; atomic_t mm_users; atomic_t mm_count; atomic_long_t nr_ptes; int map_count; spinlock_t page_table_lock; struct rw_semaphore mmap_sem; struct list_head mmlist; unsigned long hiwater_rss; unsigned long hiwater_vm; unsigned long total_vm; unsigned long locked_vm; unsigned long pinned_vm; unsigned long shared_vm; unsigned long exec_vm; unsigned long stack_vm; unsigned long def_flags; unsigned long start_code; unsigned long end_code; unsigned long start_data; unsigned long end_data; unsigned long start_brk; unsigned long brk; unsigned long start_stack; unsigned long arg_start; unsigned long arg_end; unsigned long env_start; unsigned long env_end; unsigned long saved_auxv[46U]; struct mm_rss_stat rss_stat; struct linux_binfmt *binfmt; cpumask_var_t cpu_vm_mask_var; mm_context_t context; unsigned long flags; struct core_state *core_state; spinlock_t ioctx_lock; struct kioctx_table *ioctx_table; struct task_struct *owner; struct file *exe_file; struct mmu_notifier_mm *mmu_notifier_mm; struct cpumask cpumask_allocation; unsigned long numa_next_scan; unsigned long numa_scan_offset; int numa_scan_seq; bool tlb_flush_pending; struct uprobes_state uprobes_state; } ; 4 typedef unsigned long cputime_t; 25 struct sem_undo_list ; 25 struct sysv_sem { struct sem_undo_list *undo_list; } ; 78 struct user_struct ; 26 struct sysv_shm { struct list_head shm_clist; } ; 24 struct __anonstruct_sigset_t_165 { unsigned long sig[1U]; } ; 24 typedef struct __anonstruct_sigset_t_165 sigset_t; 25 struct siginfo ; 17 typedef void __signalfn_t(int); 18 typedef __signalfn_t *__sighandler_t; 20 typedef void __restorefn_t(); 21 typedef __restorefn_t *__sigrestore_t; 34 union sigval { int sival_int; void *sival_ptr; } ; 10 typedef union sigval sigval_t; 11 struct __anonstruct__kill_167 { __kernel_pid_t _pid; __kernel_uid32_t _uid; } ; 11 struct __anonstruct__timer_168 { __kernel_timer_t _tid; int _overrun; char _pad[0U]; sigval_t _sigval; int _sys_private; } ; 11 struct __anonstruct__rt_169 { __kernel_pid_t _pid; __kernel_uid32_t _uid; sigval_t _sigval; } ; 11 struct __anonstruct__sigchld_170 { __kernel_pid_t _pid; __kernel_uid32_t _uid; int _status; __kernel_clock_t _utime; __kernel_clock_t _stime; } ; 11 struct __anonstruct__sigfault_171 { void *_addr; short _addr_lsb; } ; 11 struct __anonstruct__sigpoll_172 { long _band; int _fd; } ; 11 struct __anonstruct__sigsys_173 { void *_call_addr; int _syscall; unsigned int _arch; } ; 11 union __anonunion__sifields_166 { int _pad[28U]; struct __anonstruct__kill_167 _kill; struct __anonstruct__timer_168 _timer; struct __anonstruct__rt_169 _rt; struct __anonstruct__sigchld_170 _sigchld; struct __anonstruct__sigfault_171 _sigfault; struct __anonstruct__sigpoll_172 _sigpoll; struct __anonstruct__sigsys_173 _sigsys; } ; 11 struct siginfo { int si_signo; int si_errno; int si_code; union __anonunion__sifields_166 _sifields; } ; 109 typedef struct siginfo siginfo_t; 21 struct sigpending { struct list_head list; sigset_t signal; } ; 246 struct sigaction { __sighandler_t sa_handler; unsigned long sa_flags; __sigrestore_t sa_restorer; sigset_t sa_mask; } ; 260 struct k_sigaction { struct sigaction sa; } ; 53 struct seccomp_filter ; 54 struct seccomp { int mode; struct seccomp_filter *filter; } ; 40 struct rt_mutex_waiter ; 41 struct rlimit { __kernel_ulong_t rlim_cur; __kernel_ulong_t rlim_max; } ; 11 struct timerqueue_node { struct rb_node node; ktime_t expires; } ; 12 struct timerqueue_head { struct rb_root head; struct timerqueue_node *next; } ; 50 struct hrtimer_clock_base ; 51 struct hrtimer_cpu_base ; 60 enum hrtimer_restart { HRTIMER_NORESTART = 0, HRTIMER_RESTART = 1 } ; 65 struct hrtimer { struct timerqueue_node node; ktime_t _softexpires; enum hrtimer_restart (*function)(struct hrtimer *); struct hrtimer_clock_base *base; unsigned long state; int start_pid; void *start_site; char start_comm[16U]; } ; 132 struct hrtimer_clock_base { struct hrtimer_cpu_base *cpu_base; int index; clockid_t clockid; struct timerqueue_head active; ktime_t resolution; ktime_t (*get_time)(); ktime_t softirq_time; ktime_t offset; } ; 163 struct hrtimer_cpu_base { raw_spinlock_t lock; unsigned int cpu; unsigned int active_bases; unsigned int clock_was_set; ktime_t expires_next; int hres_active; int hang_detected; unsigned long nr_events; unsigned long nr_retries; unsigned long nr_hangs; ktime_t max_hang_time; struct hrtimer_clock_base clock_base[4U]; } ; 451 struct task_io_accounting { u64 rchar; u64 wchar; u64 syscr; u64 syscw; u64 read_bytes; u64 write_bytes; u64 cancelled_write_bytes; } ; 45 struct latency_record { unsigned long backtrace[12U]; unsigned int count; unsigned long time; unsigned long max; } ; 836 struct nsproxy ; 837 struct ctl_table_root ; 838 struct ctl_table_header ; 839 struct ctl_dir ; 37 typedef int proc_handler(struct ctl_table *, int, void *, size_t *, loff_t *); 57 struct ctl_table_poll { atomic_t event; wait_queue_head_t wait; } ; 96 struct ctl_table { const char *procname; void *data; int maxlen; umode_t mode; struct ctl_table *child; proc_handler *proc_handler; struct ctl_table_poll *poll; void *extra1; void *extra2; } ; 117 struct ctl_node { struct rb_node node; struct ctl_table_header *header; } ; 122 struct __anonstruct_ldv_19199_177 { struct ctl_table *ctl_table; int used; int count; int nreg; } ; 122 union __anonunion_ldv_19201_176 { struct __anonstruct_ldv_19199_177 ldv_19199; struct callback_head rcu; } ; 122 struct ctl_table_set ; 122 struct ctl_table_header { union __anonunion_ldv_19201_176 ldv_19201; struct completion *unregistering; struct ctl_table *ctl_table_arg; struct ctl_table_root *root; struct ctl_table_set *set; struct ctl_dir *parent; struct ctl_node *node; } ; 143 struct ctl_dir { struct ctl_table_header header; struct rb_root root; } ; 149 struct ctl_table_set { int (*is_seen)(struct ctl_table_set *); struct ctl_dir dir; } ; 154 struct ctl_table_root { struct ctl_table_set default_set; struct ctl_table_set * (*lookup)(struct ctl_table_root *, struct nsproxy *); int (*permissions)(struct ctl_table_header *, struct ctl_table *); } ; 191 struct assoc_array_ptr ; 191 struct assoc_array { struct assoc_array_ptr *root; unsigned long nr_leaves_on_tree; } ; 31 typedef int32_t key_serial_t; 34 typedef uint32_t key_perm_t; 35 struct key ; 36 struct signal_struct ; 37 struct key_type ; 41 struct keyring_index_key { struct key_type *type; const char *description; size_t desc_len; } ; 123 union __anonunion_ldv_19345_178 { struct list_head graveyard_link; struct rb_node serial_node; } ; 123 struct key_user ; 123 union __anonunion_ldv_19353_179 { time_t expiry; time_t revoked_at; } ; 123 struct __anonstruct_ldv_19366_181 { struct key_type *type; char *description; } ; 123 union __anonunion_ldv_19367_180 { struct keyring_index_key index_key; struct __anonstruct_ldv_19366_181 ldv_19366; } ; 123 union __anonunion_type_data_182 { struct list_head link; unsigned long x[2U]; void *p[2U]; int reject_error; } ; 123 union __anonunion_payload_184 { unsigned long value; void *rcudata; void *data; void *data2[2U]; } ; 123 union __anonunion_ldv_19382_183 { union __anonunion_payload_184 payload; struct assoc_array keys; } ; 123 struct key { atomic_t usage; key_serial_t serial; union __anonunion_ldv_19345_178 ldv_19345; struct rw_semaphore sem; struct key_user *user; void *security; union __anonunion_ldv_19353_179 ldv_19353; time_t last_used_at; kuid_t uid; kgid_t gid; key_perm_t perm; unsigned short quotalen; unsigned short datalen; unsigned long flags; union __anonunion_ldv_19367_180 ldv_19367; union __anonunion_type_data_182 type_data; union __anonunion_ldv_19382_183 ldv_19382; } ; 358 struct audit_context ; 27 struct group_info { atomic_t usage; int ngroups; int nblocks; kgid_t small_block[32U]; kgid_t *blocks[0U]; } ; 78 struct cred { atomic_t usage; atomic_t subscribers; void *put_addr; unsigned int magic; kuid_t uid; kgid_t gid; kuid_t suid; kgid_t sgid; kuid_t euid; kgid_t egid; kuid_t fsuid; kgid_t fsgid; unsigned int securebits; kernel_cap_t cap_inheritable; kernel_cap_t cap_permitted; kernel_cap_t cap_effective; kernel_cap_t cap_bset; unsigned char jit_keyring; struct key *session_keyring; struct key *process_keyring; struct key *thread_keyring; struct key *request_key_auth; void *security; struct user_struct *user; struct user_namespace *user_ns; struct group_info *group_info; struct callback_head rcu; } ; 126 struct futex_pi_state ; 127 struct robust_list_head ; 128 struct bio_list ; 129 struct fs_struct ; 130 struct perf_event_context ; 131 struct blk_plug ; 180 struct cfs_rq ; 181 struct task_group ; 426 struct sighand_struct { atomic_t count; struct k_sigaction action[64U]; spinlock_t siglock; wait_queue_head_t signalfd_wqh; } ; 465 struct pacct_struct { int ac_flag; long ac_exitcode; unsigned long ac_mem; cputime_t ac_utime; cputime_t ac_stime; unsigned long ac_minflt; unsigned long ac_majflt; } ; 473 struct cpu_itimer { cputime_t expires; cputime_t incr; u32 error; u32 incr_error; } ; 480 struct cputime { cputime_t utime; cputime_t stime; } ; 492 struct task_cputime { cputime_t utime; cputime_t stime; unsigned long long sum_exec_runtime; } ; 512 struct thread_group_cputimer { struct task_cputime cputime; int running; raw_spinlock_t lock; } ; 554 struct autogroup ; 555 struct tty_struct ; 555 struct taskstats ; 555 struct tty_audit_buf ; 555 struct signal_struct { atomic_t sigcnt; atomic_t live; int nr_threads; struct list_head thread_head; wait_queue_head_t wait_chldexit; struct task_struct *curr_target; struct sigpending shared_pending; int group_exit_code; int notify_count; struct task_struct *group_exit_task; int group_stop_count; unsigned int flags; unsigned char is_child_subreaper; unsigned char has_child_subreaper; int posix_timer_id; struct list_head posix_timers; struct hrtimer real_timer; struct pid *leader_pid; ktime_t it_real_incr; struct cpu_itimer it[2U]; struct thread_group_cputimer cputimer; struct task_cputime cputime_expires; struct list_head cpu_timers[3U]; struct pid *tty_old_pgrp; int leader; struct tty_struct *tty; struct autogroup *autogroup; cputime_t utime; cputime_t stime; cputime_t cutime; cputime_t cstime; cputime_t gtime; cputime_t cgtime; struct cputime prev_cputime; unsigned long nvcsw; unsigned long nivcsw; unsigned long cnvcsw; unsigned long cnivcsw; unsigned long min_flt; unsigned long maj_flt; unsigned long cmin_flt; unsigned long cmaj_flt; unsigned long inblock; unsigned long oublock; unsigned long cinblock; unsigned long coublock; unsigned long maxrss; unsigned long cmaxrss; struct task_io_accounting ioac; unsigned long long sum_sched_runtime; struct rlimit rlim[16U]; struct pacct_struct pacct; struct taskstats *stats; unsigned int audit_tty; unsigned int audit_tty_log_passwd; struct tty_audit_buf *tty_audit_buf; struct rw_semaphore group_rwsem; oom_flags_t oom_flags; short oom_score_adj; short oom_score_adj_min; struct mutex cred_guard_mutex; } ; 735 struct user_struct { atomic_t __count; atomic_t processes; atomic_t sigpending; atomic_t inotify_watches; atomic_t inotify_devs; atomic_t fanotify_listeners; atomic_long_t epoll_watches; unsigned long mq_bytes; unsigned long locked_shm; struct key *uid_keyring; struct key *session_keyring; struct hlist_node uidhash_node; kuid_t uid; atomic_long_t locked_vm; } ; 778 struct reclaim_state ; 779 struct sched_info { unsigned long pcount; unsigned long long run_delay; unsigned long long last_arrival; unsigned long long last_queued; } ; 794 struct task_delay_info { spinlock_t lock; unsigned int flags; u64 blkio_start; u64 blkio_delay; u64 swapin_delay; u32 blkio_count; u32 swapin_count; u64 freepages_start; u64 freepages_delay; u32 freepages_count; } ; 1060 struct uts_namespace ; 1061 struct load_weight { unsigned long weight; u32 inv_weight; } ; 1069 struct sched_avg { u32 runnable_avg_sum; u32 runnable_avg_period; u64 last_runnable_update; s64 decay_count; unsigned long load_avg_contrib; } ; 1081 struct sched_statistics { u64 wait_start; u64 wait_max; u64 wait_count; u64 wait_sum; u64 iowait_count; u64 iowait_sum; u64 sleep_start; u64 sleep_max; s64 sum_sleep_runtime; u64 block_start; u64 block_max; u64 exec_max; u64 slice_max; u64 nr_migrations_cold; u64 nr_failed_migrations_affine; u64 nr_failed_migrations_running; u64 nr_failed_migrations_hot; u64 nr_forced_migrations; u64 nr_wakeups; u64 nr_wakeups_sync; u64 nr_wakeups_migrate; u64 nr_wakeups_local; u64 nr_wakeups_remote; u64 nr_wakeups_affine; u64 nr_wakeups_affine_attempts; u64 nr_wakeups_passive; u64 nr_wakeups_idle; } ; 1116 struct sched_entity { struct load_weight load; struct rb_node run_node; struct list_head group_node; unsigned int on_rq; u64 exec_start; u64 sum_exec_runtime; u64 vruntime; u64 prev_sum_exec_runtime; u64 nr_migrations; struct sched_statistics statistics; int depth; struct sched_entity *parent; struct cfs_rq *cfs_rq; struct cfs_rq *my_q; struct sched_avg avg; } ; 1148 struct rt_rq ; 1148 struct sched_rt_entity { struct list_head run_list; unsigned long timeout; unsigned long watchdog_stamp; unsigned int time_slice; struct sched_rt_entity *back; struct sched_rt_entity *parent; struct rt_rq *rt_rq; struct rt_rq *my_q; } ; 1164 struct sched_dl_entity { struct rb_node rb_node; u64 dl_runtime; u64 dl_deadline; u64 dl_period; u64 dl_bw; s64 runtime; u64 deadline; unsigned int flags; int dl_throttled; int dl_new; int dl_boosted; int dl_yielded; struct hrtimer dl_timer; } ; 1222 struct mem_cgroup ; 1222 struct memcg_oom_info { struct mem_cgroup *memcg; gfp_t gfp_mask; int order; unsigned char may_oom; } ; 1639 struct sched_class ; 1639 struct files_struct ; 1639 struct css_set ; 1639 struct compat_robust_list_head ; 1639 struct numa_group ; 1639 struct task_struct { volatile long state; void *stack; atomic_t usage; unsigned int flags; unsigned int ptrace; struct llist_node wake_entry; int on_cpu; struct task_struct *last_wakee; unsigned long wakee_flips; unsigned long wakee_flip_decay_ts; int wake_cpu; int on_rq; int prio; int static_prio; int normal_prio; unsigned int rt_priority; const struct sched_class *sched_class; struct sched_entity se; struct sched_rt_entity rt; struct task_group *sched_task_group; struct sched_dl_entity dl; struct hlist_head preempt_notifiers; unsigned int policy; int nr_cpus_allowed; cpumask_t cpus_allowed; struct sched_info sched_info; struct list_head tasks; struct plist_node pushable_tasks; struct rb_node pushable_dl_tasks; struct mm_struct *mm; struct mm_struct *active_mm; unsigned char brk_randomized; u32 vmacache_seqnum; struct vm_area_struct *vmacache[4U]; struct task_rss_stat rss_stat; int exit_state; int exit_code; int exit_signal; int pdeath_signal; unsigned int jobctl; unsigned int personality; unsigned char in_execve; unsigned char in_iowait; unsigned char sched_reset_on_fork; unsigned char sched_contributes_to_load; unsigned long atomic_flags; pid_t pid; pid_t tgid; struct task_struct *real_parent; struct task_struct *parent; struct list_head children; struct list_head sibling; struct task_struct *group_leader; struct list_head ptraced; struct list_head ptrace_entry; struct pid_link pids[3U]; struct list_head thread_group; struct list_head thread_node; struct completion *vfork_done; int *set_child_tid; int *clear_child_tid; cputime_t utime; cputime_t stime; cputime_t utimescaled; cputime_t stimescaled; cputime_t gtime; struct cputime prev_cputime; unsigned long nvcsw; unsigned long nivcsw; u64 start_time; u64 real_start_time; unsigned long min_flt; unsigned long maj_flt; struct task_cputime cputime_expires; struct list_head cpu_timers[3U]; const struct cred *real_cred; const struct cred *cred; char comm[16U]; int link_count; int total_link_count; struct sysv_sem sysvsem; struct sysv_shm sysvshm; unsigned long last_switch_count; struct thread_struct thread; struct fs_struct *fs; struct files_struct *files; struct nsproxy *nsproxy; struct signal_struct *signal; struct sighand_struct *sighand; sigset_t blocked; sigset_t real_blocked; sigset_t saved_sigmask; struct sigpending pending; unsigned long sas_ss_sp; size_t sas_ss_size; int (*notifier)(void *); void *notifier_data; sigset_t *notifier_mask; struct callback_head *task_works; struct audit_context *audit_context; kuid_t loginuid; unsigned int sessionid; struct seccomp seccomp; u32 parent_exec_id; u32 self_exec_id; spinlock_t alloc_lock; raw_spinlock_t pi_lock; struct rb_root pi_waiters; struct rb_node *pi_waiters_leftmost; struct rt_mutex_waiter *pi_blocked_on; struct mutex_waiter *blocked_on; unsigned int irq_events; unsigned long hardirq_enable_ip; unsigned long hardirq_disable_ip; unsigned int hardirq_enable_event; unsigned int hardirq_disable_event; int hardirqs_enabled; int hardirq_context; unsigned long softirq_disable_ip; unsigned long softirq_enable_ip; unsigned int softirq_disable_event; unsigned int softirq_enable_event; int softirqs_enabled; int softirq_context; u64 curr_chain_key; int lockdep_depth; unsigned int lockdep_recursion; struct held_lock held_locks[48U]; gfp_t lockdep_reclaim_gfp; void *journal_info; struct bio_list *bio_list; struct blk_plug *plug; struct reclaim_state *reclaim_state; struct backing_dev_info *backing_dev_info; struct io_context *io_context; unsigned long ptrace_message; siginfo_t *last_siginfo; struct task_io_accounting ioac; u64 acct_rss_mem1; u64 acct_vm_mem1; cputime_t acct_timexpd; nodemask_t mems_allowed; seqcount_t mems_allowed_seq; int cpuset_mem_spread_rotor; int cpuset_slab_spread_rotor; struct css_set *cgroups; struct list_head cg_list; struct robust_list_head *robust_list; struct compat_robust_list_head *compat_robust_list; struct list_head pi_state_list; struct futex_pi_state *pi_state_cache; struct perf_event_context *perf_event_ctxp[2U]; struct mutex perf_event_mutex; struct list_head perf_event_list; struct mempolicy *mempolicy; short il_next; short pref_node_fork; int numa_scan_seq; unsigned int numa_scan_period; unsigned int numa_scan_period_max; int numa_preferred_nid; unsigned long numa_migrate_retry; u64 node_stamp; u64 last_task_numa_placement; u64 last_sum_exec_runtime; struct callback_head numa_work; struct list_head numa_entry; struct numa_group *numa_group; unsigned long *numa_faults_memory; unsigned long total_numa_faults; unsigned long *numa_faults_buffer_memory; unsigned long *numa_faults_cpu; unsigned long *numa_faults_buffer_cpu; unsigned long numa_faults_locality[2U]; unsigned long numa_pages_migrated; struct callback_head rcu; struct pipe_inode_info *splice_pipe; struct page_frag task_frag; struct task_delay_info *delays; int make_it_fail; int nr_dirtied; int nr_dirtied_pause; unsigned long dirty_paused_when; int latency_record_count; struct latency_record latency_record[32U]; unsigned long timer_slack_ns; unsigned long default_timer_slack_ns; unsigned long trace; unsigned long trace_recursion; unsigned int memcg_kmem_skip_account; struct memcg_oom_info memcg_oom; struct uprobe_task *utask; unsigned int sequential_io; unsigned int sequential_io_avg; } ; 12 enum writeback_sync_modes { WB_SYNC_NONE = 0, WB_SYNC_ALL = 1 } ; 29 struct writeback_control { long nr_to_write; long pages_skipped; loff_t range_start; loff_t range_end; enum writeback_sync_modes sync_mode; unsigned char for_kupdate; unsigned char for_background; unsigned char tagged_writepages; unsigned char for_reclaim; unsigned char range_cyclic; unsigned char for_sync; } ; 88 struct bdi_writeback ; 39 typedef int congested_fn(void *, int); 48 struct bdi_writeback { struct backing_dev_info *bdi; unsigned int nr; unsigned long last_old_flush; struct delayed_work dwork; struct list_head b_dirty; struct list_head b_io; struct list_head b_more_io; spinlock_t list_lock; } ; 63 struct backing_dev_info { struct list_head bdi_list; unsigned long ra_pages; unsigned long state; unsigned int capabilities; congested_fn *congested_fn; void *congested_data; char *name; struct percpu_counter bdi_stat[4U]; unsigned long bw_time_stamp; unsigned long dirtied_stamp; unsigned long written_stamp; unsigned long write_bandwidth; unsigned long avg_write_bandwidth; unsigned long dirty_ratelimit; unsigned long balanced_dirty_ratelimit; struct fprop_local_percpu completions; int dirty_exceeded; unsigned int min_ratio; unsigned int max_ratio; unsigned int max_prop_frac; struct bdi_writeback wb; spinlock_t wb_lock; struct list_head work_list; struct device *dev; struct timer_list laptop_mode_wb_timer; struct dentry *debug_dir; struct dentry *debug_stats; } ; 15 typedef __u64 Elf64_Addr; 16 typedef __u16 Elf64_Half; 20 typedef __u32 Elf64_Word; 21 typedef __u64 Elf64_Xword; 190 struct elf64_sym { Elf64_Word st_name; unsigned char st_info; unsigned char st_other; Elf64_Half st_shndx; Elf64_Addr st_value; Elf64_Xword st_size; } ; 198 typedef struct elf64_sym Elf64_Sym; 48 union __anonunion_ldv_21950_191 { unsigned long bitmap[4U]; struct callback_head callback_head; } ; 48 struct idr_layer { int prefix; int layer; struct idr_layer *ary[256U]; int count; union __anonunion_ldv_21950_191 ldv_21950; } ; 41 struct idr { struct idr_layer *hint; struct idr_layer *top; int layers; int cur; spinlock_t lock; int id_free_cnt; struct idr_layer *id_free; } ; 124 struct ida_bitmap { long nr_busy; unsigned long bitmap[15U]; } ; 153 struct ida { struct idr idr; struct ida_bitmap *free_bitmap; } ; 185 struct kernfs_open_node ; 186 struct kernfs_iattrs ; 209 struct kernfs_root ; 209 struct kernfs_elem_dir { unsigned long subdirs; struct rb_root children; struct kernfs_root *root; } ; 85 struct kernfs_node ; 85 struct kernfs_elem_symlink { struct kernfs_node *target_kn; } ; 89 struct kernfs_ops ; 89 struct kernfs_elem_attr { const struct kernfs_ops *ops; struct kernfs_open_node *open; loff_t size; struct kernfs_node *notify_next; } ; 96 union __anonunion_ldv_22091_192 { struct kernfs_elem_dir dir; struct kernfs_elem_symlink symlink; struct kernfs_elem_attr attr; } ; 96 struct kernfs_node { atomic_t count; atomic_t active; struct lockdep_map dep_map; struct kernfs_node *parent; const char *name; struct rb_node rb; const void *ns; unsigned int hash; union __anonunion_ldv_22091_192 ldv_22091; void *priv; unsigned short flags; umode_t mode; unsigned int ino; struct kernfs_iattrs *iattr; } ; 138 struct kernfs_syscall_ops { int (*remount_fs)(struct kernfs_root *, int *, char *); int (*show_options)(struct seq_file *, struct kernfs_root *); int (*mkdir)(struct kernfs_node *, const char *, umode_t ); int (*rmdir)(struct kernfs_node *); int (*rename)(struct kernfs_node *, struct kernfs_node *, const char *); } ; 155 struct kernfs_root { struct kernfs_node *kn; unsigned int flags; struct ida ino_ida; struct kernfs_syscall_ops *syscall_ops; struct list_head supers; wait_queue_head_t deactivate_waitq; } ; 171 struct kernfs_open_file { struct kernfs_node *kn; struct file *file; void *priv; struct mutex mutex; int event; struct list_head list; size_t atomic_write_len; bool mmapped; const struct vm_operations_struct *vm_ops; } ; 187 struct kernfs_ops { int (*seq_show)(struct seq_file *, void *); void * (*seq_start)(struct seq_file *, loff_t *); void * (*seq_next)(struct seq_file *, void *, loff_t *); void (*seq_stop)(struct seq_file *, void *); ssize_t (*read)(struct kernfs_open_file *, char *, size_t , loff_t ); size_t atomic_write_len; ssize_t (*write)(struct kernfs_open_file *, char *, size_t , loff_t ); int (*mmap)(struct kernfs_open_file *, struct vm_area_struct *); struct lock_class_key lockdep_key; } ; 464 struct sock ; 465 enum kobj_ns_type { KOBJ_NS_TYPE_NONE = 0, KOBJ_NS_TYPE_NET = 1, KOBJ_NS_TYPES = 2 } ; 471 struct kobj_ns_type_operations { enum kobj_ns_type type; bool (*current_may_mount)(); void * (*grab_current_ns)(); const void * (*netlink_ns)(struct sock *); const void * (*initial_ns)(); void (*drop_ns)(void *); } ; 59 struct bin_attribute ; 60 struct attribute { const char *name; umode_t mode; bool ignore_lockdep; struct lock_class_key *key; struct lock_class_key skey; } ; 37 struct attribute_group { const char *name; umode_t (*is_visible)(struct kobject *, struct attribute *, int); struct attribute **attrs; struct bin_attribute **bin_attrs; } ; 67 struct bin_attribute { struct attribute attr; size_t size; void *private; ssize_t (*read)(struct file *, struct kobject *, struct bin_attribute *, char *, loff_t , size_t ); ssize_t (*write)(struct file *, struct kobject *, struct bin_attribute *, char *, loff_t , size_t ); int (*mmap)(struct file *, struct kobject *, struct bin_attribute *, struct vm_area_struct *); } ; 131 struct sysfs_ops { ssize_t (*show)(struct kobject *, struct attribute *, char *); ssize_t (*store)(struct kobject *, struct attribute *, const char *, size_t ); } ; 470 struct kref { atomic_t refcount; } ; 52 struct kset ; 52 struct kobj_type ; 52 struct kobject { const char *name; struct list_head entry; struct kobject *parent; struct kset *kset; struct kobj_type *ktype; struct kernfs_node *sd; struct kref kref; struct delayed_work release; unsigned char state_initialized; unsigned char state_in_sysfs; unsigned char state_add_uevent_sent; unsigned char state_remove_uevent_sent; unsigned char uevent_suppress; } ; 114 struct kobj_type { void (*release)(struct kobject *); const struct sysfs_ops *sysfs_ops; struct attribute **default_attrs; const struct kobj_ns_type_operations * (*child_ns_type)(struct kobject *); const void * (*namespace)(struct kobject *); } ; 122 struct kobj_uevent_env { char *argv[3U]; char *envp[32U]; int envp_idx; char buf[2048U]; int buflen; } ; 130 struct kset_uevent_ops { const int (*filter)(struct kset *, struct kobject *); const const char * (*name)(struct kset *, struct kobject *); const int (*uevent)(struct kset *, struct kobject *, struct kobj_uevent_env *); } ; 147 struct kset { struct list_head list; spinlock_t list_lock; struct kobject kobj; const struct kset_uevent_ops *uevent_ops; } ; 222 struct kernel_param ; 227 struct kernel_param_ops { unsigned int flags; int (*set)(const char *, const struct kernel_param *); int (*get)(char *, const struct kernel_param *); void (*free)(void *); } ; 58 struct kparam_string ; 58 struct kparam_array ; 58 union __anonunion_ldv_22771_193 { void *arg; const struct kparam_string *str; const struct kparam_array *arr; } ; 58 struct kernel_param { const char *name; const struct kernel_param_ops *ops; u16 perm; s16 level; union __anonunion_ldv_22771_193 ldv_22771; } ; 70 struct kparam_string { unsigned int maxlen; char *string; } ; 76 struct kparam_array { unsigned int max; unsigned int elemsize; unsigned int *num; const struct kernel_param_ops *ops; void *elem; } ; 466 struct mod_arch_specific { } ; 36 struct module_param_attrs ; 36 struct module_kobject { struct kobject kobj; struct module *mod; struct kobject *drivers_dir; struct module_param_attrs *mp; struct completion *kobj_completion; } ; 46 struct module_attribute { struct attribute attr; ssize_t (*show)(struct module_attribute *, struct module_kobject *, char *); ssize_t (*store)(struct module_attribute *, struct module_kobject *, const char *, size_t ); void (*setup)(struct module *, const char *); int (*test)(struct module *); void (*free)(struct module *); } ; 72 struct exception_table_entry ; 205 enum module_state { MODULE_STATE_LIVE = 0, MODULE_STATE_COMING = 1, MODULE_STATE_GOING = 2, MODULE_STATE_UNFORMED = 3 } ; 212 struct module_ref { unsigned long incs; unsigned long decs; } ; 226 struct module_sect_attrs ; 226 struct module_notes_attrs ; 226 struct tracepoint ; 226 struct ftrace_event_call ; 226 struct module { enum module_state state; struct list_head list; char name[56U]; struct module_kobject mkobj; struct module_attribute *modinfo_attrs; const char *version; const char *srcversion; struct kobject *holders_dir; const struct kernel_symbol *syms; const unsigned long *crcs; unsigned int num_syms; struct kernel_param *kp; unsigned int num_kp; unsigned int num_gpl_syms; const struct kernel_symbol *gpl_syms; const unsigned long *gpl_crcs; const struct kernel_symbol *unused_syms; const unsigned long *unused_crcs; unsigned int num_unused_syms; unsigned int num_unused_gpl_syms; const struct kernel_symbol *unused_gpl_syms; const unsigned long *unused_gpl_crcs; bool sig_ok; const struct kernel_symbol *gpl_future_syms; const unsigned long *gpl_future_crcs; unsigned int num_gpl_future_syms; unsigned int num_exentries; struct exception_table_entry *extable; int (*init)(); void *module_init; void *module_core; unsigned int init_size; unsigned int core_size; unsigned int init_text_size; unsigned int core_text_size; unsigned int init_ro_size; unsigned int core_ro_size; struct mod_arch_specific arch; unsigned int taints; unsigned int num_bugs; struct list_head bug_list; struct bug_entry *bug_table; Elf64_Sym *symtab; Elf64_Sym *core_symtab; unsigned int num_symtab; unsigned int core_num_syms; char *strtab; char *core_strtab; struct module_sect_attrs *sect_attrs; struct module_notes_attrs *notes_attrs; char *args; void *percpu; unsigned int percpu_size; unsigned int num_tracepoints; const struct tracepoint **tracepoints_ptrs; unsigned int num_trace_bprintk_fmt; const char **trace_bprintk_fmt_start; struct ftrace_event_call **trace_events; unsigned int num_trace_events; struct list_head source_list; struct list_head target_list; void (*exit)(); struct module_ref *refptr; ctor_fn_t (**ctors)(); unsigned int num_ctors; } ; 655 struct mnt_namespace ; 656 struct vfsmount { struct dentry *mnt_root; struct super_block *mnt_sb; int mnt_flags; } ; 93 struct match_token { int token; const char *pattern; } ; 26 struct __anonstruct_substring_t_194 { char *from; char *to; } ; 26 typedef struct __anonstruct_substring_t_194 substring_t; 35 struct seq_file { char *buf; size_t size; size_t from; size_t count; size_t pad_until; loff_t index; loff_t read_pos; u64 version; struct mutex lock; const struct seq_operations *op; int poll_event; struct user_namespace *user_ns; void *private; } ; 35 struct seq_operations { void * (*start)(struct seq_file *, loff_t *); void (*stop)(struct seq_file *, void *); void * (*next)(struct seq_file *, void *, loff_t *); int (*show)(struct seq_file *, void *); } ; 368 struct kmem_cache_cpu { void **freelist; unsigned long tid; struct page *page; struct page *partial; unsigned int stat[26U]; } ; 48 struct kmem_cache_order_objects { unsigned long x; } ; 58 struct memcg_cache_params ; 58 struct kmem_cache_node ; 58 struct kmem_cache { struct kmem_cache_cpu *cpu_slab; unsigned long flags; unsigned long min_partial; int size; int object_size; int offset; int cpu_partial; struct kmem_cache_order_objects oo; struct kmem_cache_order_objects max; struct kmem_cache_order_objects min; gfp_t allocflags; int refcount; void (*ctor)(void *); int inuse; int align; int reserved; const char *name; struct list_head list; struct kobject kobj; struct memcg_cache_params *memcg_params; int max_attr_size; struct kset *memcg_kset; int remote_node_defrag_ratio; struct kmem_cache_node *node[1024U]; } ; 501 struct __anonstruct_ldv_23637_196 { struct callback_head callback_head; struct kmem_cache *memcg_caches[0U]; } ; 501 struct __anonstruct_ldv_23643_197 { struct mem_cgroup *memcg; struct list_head list; struct kmem_cache *root_cache; atomic_t nr_pages; } ; 501 union __anonunion_ldv_23644_195 { struct __anonstruct_ldv_23637_196 ldv_23637; struct __anonstruct_ldv_23643_197 ldv_23643; } ; 501 struct memcg_cache_params { bool is_root_cache; union __anonunion_ldv_23644_195 ldv_23644; } ; 7 struct kstatfs { long f_type; long f_bsize; u64 f_blocks; u64 f_bfree; u64 f_bavail; u64 f_files; u64 f_ffree; __kernel_fsid_t f_fsid; long f_namelen; long f_frsize; long f_flags; long f_spare[4U]; } ; 21 struct ipc_namespace ; 22 struct nsproxy { atomic_t count; struct uts_namespace *uts_ns; struct ipc_namespace *ipc_ns; struct mnt_namespace *mnt_ns; struct pid_namespace *pid_ns_for_children; struct net *net_ns; } ; 84 struct iovec { void *iov_base; __kernel_size_t iov_len; } ; 21 struct kvec { void *iov_base; size_t iov_len; } ; 27 union __anonunion_ldv_23787_198 { const struct iovec *iov; const struct bio_vec *bvec; } ; 27 struct iov_iter { int type; size_t iov_offset; size_t count; union __anonunion_ldv_23787_198 ldv_23787; unsigned long nr_segs; } ; 11 typedef unsigned short __kernel_sa_family_t; 12 struct __kernel_sockaddr_storage { __kernel_sa_family_t ss_family; char __data[126U]; } ; 23 typedef __kernel_sa_family_t sa_family_t; 24 struct sockaddr { sa_family_t sa_family; char sa_data[14U]; } ; 38 struct msghdr { void *msg_name; int msg_namelen; struct iovec *msg_iov; __kernel_size_t msg_iovlen; void *msg_control; __kernel_size_t msg_controllen; unsigned int msg_flags; } ; 235 struct prot_inuse ; 236 struct netns_core { struct ctl_table_header *sysctl_hdr; int sysctl_somaxconn; struct prot_inuse *inuse; } ; 38 struct u64_stats_sync { } ; 145 struct ipstats_mib { u64 mibs[36U]; struct u64_stats_sync syncp; } ; 61 struct icmp_mib { unsigned long mibs[28U]; } ; 67 struct icmpmsg_mib { atomic_long_t mibs[512U]; } ; 72 struct icmpv6_mib { unsigned long mibs[6U]; } ; 83 struct icmpv6msg_mib { atomic_long_t mibs[512U]; } ; 93 struct tcp_mib { unsigned long mibs[16U]; } ; 100 struct udp_mib { unsigned long mibs[8U]; } ; 106 struct linux_mib { unsigned long mibs[103U]; } ; 112 struct linux_xfrm_mib { unsigned long mibs[29U]; } ; 118 struct proc_dir_entry ; 118 struct netns_mib { struct tcp_mib *tcp_statistics; struct ipstats_mib *ip_statistics; struct linux_mib *net_statistics; struct udp_mib *udp_statistics; struct udp_mib *udplite_statistics; struct icmp_mib *icmp_statistics; struct icmpmsg_mib *icmpmsg_statistics; struct proc_dir_entry *proc_net_devsnmp6; struct udp_mib *udp_stats_in6; struct udp_mib *udplite_stats_in6; struct ipstats_mib *ipv6_statistics; struct icmpv6_mib *icmpv6_statistics; struct icmpv6msg_mib *icmpv6msg_statistics; struct linux_xfrm_mib *xfrm_statistics; } ; 26 struct netns_unix { int sysctl_max_dgram_qlen; struct ctl_table_header *ctl; } ; 12 struct netns_packet { struct mutex sklist_lock; struct hlist_head sklist; } ; 14 struct netns_frags { struct percpu_counter mem; int timeout; int high_thresh; int low_thresh; } ; 24 struct sk_buff ; 178 struct tcpm_hash_bucket ; 179 struct ipv4_devconf ; 180 struct fib_rules_ops ; 181 struct fib_table ; 182 struct local_ports { seqlock_t lock; int range[2U]; } ; 22 struct ping_group_range { seqlock_t lock; kgid_t range[2U]; } ; 27 struct inet_peer_base ; 27 struct xt_table ; 27 struct netns_ipv4 { struct ctl_table_header *forw_hdr; struct ctl_table_header *frags_hdr; struct ctl_table_header *ipv4_hdr; struct ctl_table_header *route_hdr; struct ctl_table_header *xfrm4_hdr; struct ipv4_devconf *devconf_all; struct ipv4_devconf *devconf_dflt; struct fib_rules_ops *rules_ops; bool fib_has_custom_rules; struct fib_table *fib_local; struct fib_table *fib_main; struct fib_table *fib_default; int fib_num_tclassid_users; struct hlist_head *fib_table_hash; struct sock *fibnl; struct sock **icmp_sk; struct inet_peer_base *peers; struct tcpm_hash_bucket *tcp_metrics_hash; unsigned int tcp_metrics_hash_log; struct netns_frags frags; struct xt_table *iptable_filter; struct xt_table *iptable_mangle; struct xt_table *iptable_raw; struct xt_table *arptable_filter; struct xt_table *iptable_security; struct xt_table *nat_table; int sysctl_icmp_echo_ignore_all; int sysctl_icmp_echo_ignore_broadcasts; int sysctl_icmp_ignore_bogus_error_responses; int sysctl_icmp_ratelimit; int sysctl_icmp_ratemask; int sysctl_icmp_errors_use_inbound_ifaddr; struct local_ports ip_local_ports; int sysctl_tcp_ecn; int sysctl_ip_no_pmtu_disc; int sysctl_ip_fwd_use_pmtu; int sysctl_fwmark_reflect; int sysctl_tcp_fwmark_accept; struct ping_group_range ping_group_range; atomic_t dev_addr_genid; unsigned long *sysctl_local_reserved_ports; struct list_head mr_tables; struct fib_rules_ops *mr_rules_ops; atomic_t rt_genid; } ; 101 struct dst_entry ; 103 struct neighbour ; 103 struct dst_ops { unsigned short family; __be16 protocol; unsigned int gc_thresh; int (*gc)(struct dst_ops *); struct dst_entry * (*check)(struct dst_entry *, __u32 ); unsigned int (*default_advmss)(const struct dst_entry *); unsigned int (*mtu)(const struct dst_entry *); u32 * (*cow_metrics)(struct dst_entry *, unsigned long); void (*destroy)(struct dst_entry *); void (*ifdown)(struct dst_entry *, struct net_device *, int); struct dst_entry * (*negative_advice)(struct dst_entry *); void (*link_failure)(struct sk_buff *); void (*update_pmtu)(struct dst_entry *, struct sock *, struct sk_buff *, u32 ); void (*redirect)(struct dst_entry *, struct sock *, struct sk_buff *); int (*local_out)(struct sk_buff *); struct neighbour * (*neigh_lookup)(const struct dst_entry *, struct sk_buff *, const void *); struct kmem_cache *kmem_cachep; struct percpu_counter pcpuc_entries; } ; 73 struct netns_sysctl_ipv6 { struct ctl_table_header *hdr; struct ctl_table_header *route_hdr; struct ctl_table_header *icmp_hdr; struct ctl_table_header *frags_hdr; struct ctl_table_header *xfrm6_hdr; int bindv6only; int flush_delay; int ip6_rt_max_size; int ip6_rt_gc_min_interval; int ip6_rt_gc_timeout; int ip6_rt_gc_interval; int ip6_rt_gc_elasticity; int ip6_rt_mtu_expires; int ip6_rt_min_advmss; int flowlabel_consistency; int auto_flowlabels; int icmpv6_time; int anycast_src_echo_reply; int fwmark_reflect; } ; 36 struct ipv6_devconf ; 36 struct rt6_info ; 36 struct rt6_statistics ; 36 struct fib6_table ; 36 struct netns_ipv6 { struct netns_sysctl_ipv6 sysctl; struct ipv6_devconf *devconf_all; struct ipv6_devconf *devconf_dflt; struct inet_peer_base *peers; struct netns_frags frags; struct xt_table *ip6table_filter; struct xt_table *ip6table_mangle; struct xt_table *ip6table_raw; struct xt_table *ip6table_security; struct xt_table *ip6table_nat; struct rt6_info *ip6_null_entry; struct rt6_statistics *rt6_stats; struct timer_list ip6_fib_timer; struct hlist_head *fib_table_hash; struct fib6_table *fib6_main_tbl; struct dst_ops ip6_dst_ops; unsigned int ip6_rt_gc_expire; unsigned long ip6_rt_last_gc; struct rt6_info *ip6_prohibit_entry; struct rt6_info *ip6_blk_hole_entry; struct fib6_table *fib6_local_tbl; struct fib_rules_ops *fib6_rules_ops; struct sock **icmp_sk; struct sock *ndisc_sk; struct sock *tcp_sk; struct sock *igmp_sk; struct list_head mr6_tables; struct fib_rules_ops *mr6_rules_ops; atomic_t dev_addr_genid; atomic_t rt_genid; } ; 81 struct netns_nf_frag { struct netns_sysctl_ipv6 sysctl; struct netns_frags frags; } ; 87 struct netns_sysctl_lowpan { struct ctl_table_header *frags_hdr; } ; 14 struct netns_ieee802154_lowpan { struct netns_sysctl_lowpan sysctl; struct netns_frags frags; int max_dsize; } ; 21 struct sctp_mib ; 22 struct netns_sctp { struct sctp_mib *sctp_statistics; struct proc_dir_entry *proc_net_sctp; struct ctl_table_header *sysctl_header; struct sock *ctl_sock; struct list_head local_addr_list; struct list_head addr_waitq; struct timer_list addr_wq_timer; struct list_head auto_asconf_splist; spinlock_t addr_wq_lock; spinlock_t local_addr_lock; unsigned int rto_initial; unsigned int rto_min; unsigned int rto_max; int rto_alpha; int rto_beta; int max_burst; int cookie_preserve_enable; char *sctp_hmac_alg; unsigned int valid_cookie_life; unsigned int sack_timeout; unsigned int hb_interval; int max_retrans_association; int max_retrans_path; int max_retrans_init; int pf_retrans; int sndbuf_policy; int rcvbuf_policy; int default_auto_asconf; int addip_enable; int addip_noauth; int prsctp_enable; int auth_enable; int scope_policy; int rwnd_upd_shift; unsigned long max_autoclose; } ; 133 struct netns_dccp { struct sock *v4_ctl_sk; struct sock *v6_ctl_sk; } ; 114 enum ldv_18882 { SS_FREE = 0, SS_UNCONNECTED = 1, SS_CONNECTING = 2, SS_CONNECTED = 3, SS_DISCONNECTING = 4 } ; 53 typedef enum ldv_18882 socket_state; 70 struct socket_wq { wait_queue_head_t wait; struct fasync_struct *fasync_list; struct callback_head rcu; } ; 94 struct proto_ops ; 94 struct socket { socket_state state; short type; unsigned long flags; struct socket_wq *wq; struct file *file; struct sock *sk; const struct proto_ops *ops; } ; 120 struct proto_ops { int family; struct module *owner; int (*release)(struct socket *); int (*bind)(struct socket *, struct sockaddr *, int); int (*connect)(struct socket *, struct sockaddr *, int, int); int (*socketpair)(struct socket *, struct socket *); int (*accept)(struct socket *, struct socket *, int); int (*getname)(struct socket *, struct sockaddr *, int *, int); unsigned int (*poll)(struct file *, struct socket *, struct poll_table_struct *); int (*ioctl)(struct socket *, unsigned int, unsigned long); int (*compat_ioctl)(struct socket *, unsigned int, unsigned long); int (*listen)(struct socket *, int); int (*shutdown)(struct socket *, int); int (*setsockopt)(struct socket *, int, int, char *, unsigned int); int (*getsockopt)(struct socket *, int, int, char *, int *); int (*compat_setsockopt)(struct socket *, int, int, char *, unsigned int); int (*compat_getsockopt)(struct socket *, int, int, char *, int *); int (*sendmsg)(struct kiocb *, struct socket *, struct msghdr *, size_t ); int (*recvmsg)(struct kiocb *, struct socket *, struct msghdr *, size_t , int); int (*mmap)(struct file *, struct socket *, struct vm_area_struct *); ssize_t (*sendpage)(struct socket *, struct page *, int, size_t , int); ssize_t (*splice_read)(struct socket *, loff_t *, struct pipe_inode_info *, size_t , unsigned int); int (*set_peek_off)(struct sock *, int); } ; 62 struct exception_table_entry { int insn; int fixup; } ; 155 struct klist_node ; 37 struct klist_node { void *n_klist; struct list_head n_node; struct kref n_ref; } ; 67 struct pinctrl ; 68 struct pinctrl_state ; 194 struct dev_pin_info { struct pinctrl *p; struct pinctrl_state *default_state; struct pinctrl_state *sleep_state; struct pinctrl_state *idle_state; } ; 42 struct dma_map_ops ; 42 struct dev_archdata { struct dma_map_ops *dma_ops; void *iommu; } ; 14 struct device_private ; 15 struct device_driver ; 16 struct driver_private ; 17 struct class ; 18 struct subsys_private ; 19 struct bus_type ; 20 struct iommu_ops ; 21 struct iommu_group ; 60 struct device_attribute ; 60 struct bus_type { const char *name; const char *dev_name; struct device *dev_root; struct device_attribute *dev_attrs; const struct attribute_group **bus_groups; const struct attribute_group **dev_groups; const struct attribute_group **drv_groups; int (*match)(struct device *, struct device_driver *); int (*uevent)(struct device *, struct kobj_uevent_env *); int (*probe)(struct device *); int (*remove)(struct device *); void (*shutdown)(struct device *); int (*online)(struct device *); int (*offline)(struct device *); int (*suspend)(struct device *, pm_message_t ); int (*resume)(struct device *); const struct dev_pm_ops *pm; const struct iommu_ops *iommu_ops; struct subsys_private *p; struct lock_class_key lock_key; } ; 138 struct device_type ; 195 struct of_device_id ; 195 struct acpi_device_id ; 195 struct device_driver { const char *name; struct bus_type *bus; struct module *owner; const char *mod_name; bool suppress_bind_attrs; const struct of_device_id *of_match_table; const struct acpi_device_id *acpi_match_table; int (*probe)(struct device *); int (*remove)(struct device *); void (*shutdown)(struct device *); int (*suspend)(struct device *, pm_message_t ); int (*resume)(struct device *); const struct attribute_group **groups; const struct dev_pm_ops *pm; struct driver_private *p; } ; 321 struct class_attribute ; 321 struct class { const char *name; struct module *owner; struct class_attribute *class_attrs; const struct attribute_group **dev_groups; struct kobject *dev_kobj; int (*dev_uevent)(struct device *, struct kobj_uevent_env *); char * (*devnode)(struct device *, umode_t *); void (*class_release)(struct class *); void (*dev_release)(struct device *); int (*suspend)(struct device *, pm_message_t ); int (*resume)(struct device *); const struct kobj_ns_type_operations *ns_type; const void * (*namespace)(struct device *); const struct dev_pm_ops *pm; struct subsys_private *p; } ; 414 struct class_attribute { struct attribute attr; ssize_t (*show)(struct class *, struct class_attribute *, char *); ssize_t (*store)(struct class *, struct class_attribute *, const char *, size_t ); } ; 482 struct device_type { const char *name; const struct attribute_group **groups; int (*uevent)(struct device *, struct kobj_uevent_env *); char * (*devnode)(struct device *, umode_t *, kuid_t *, kgid_t *); void (*release)(struct device *); const struct dev_pm_ops *pm; } ; 510 struct device_attribute { struct attribute attr; ssize_t (*show)(struct device *, struct device_attribute *, char *); ssize_t (*store)(struct device *, struct device_attribute *, const char *, size_t ); } ; 642 struct device_dma_parameters { unsigned int max_segment_size; unsigned long segment_boundary_mask; } ; 651 struct acpi_device ; 652 struct acpi_dev_node { struct acpi_device *companion; } ; 658 struct dma_coherent_mem ; 658 struct cma ; 658 struct device { struct device *parent; struct device_private *p; struct kobject kobj; const char *init_name; const struct device_type *type; struct mutex mutex; struct bus_type *bus; struct device_driver *driver; void *platform_data; void *driver_data; struct dev_pm_info power; struct dev_pm_domain *pm_domain; struct dev_pin_info *pins; int numa_node; u64 *dma_mask; u64 coherent_dma_mask; unsigned long dma_pfn_offset; struct device_dma_parameters *dma_parms; struct list_head dma_pools; struct dma_coherent_mem *dma_mem; struct cma *cma_area; struct dev_archdata archdata; struct device_node *of_node; struct acpi_dev_node acpi_node; dev_t devt; u32 id; spinlock_t devres_lock; struct list_head devres_head; struct klist_node knode_class; struct class *class; const struct attribute_group **groups; void (*release)(struct device *); struct iommu_group *iommu_group; bool offline_disabled; bool offline; } ; 805 struct wakeup_source { const char *name; struct list_head entry; spinlock_t lock; struct timer_list timer; unsigned long timer_expires; ktime_t total_time; ktime_t max_time; ktime_t last_time; ktime_t start_prevent_time; ktime_t prevent_sleep_time; unsigned long event_count; unsigned long active_count; unsigned long relax_count; unsigned long expire_count; unsigned long wakeup_count; bool active; bool autosleep_enabled; } ; 188 struct vm_fault { unsigned int flags; unsigned long pgoff; void *virtual_address; struct page *page; unsigned long max_pgoff; pte_t *pte; } ; 221 struct vm_operations_struct { void (*open)(struct vm_area_struct *); void (*close)(struct vm_area_struct *); int (*fault)(struct vm_area_struct *, struct vm_fault *); void (*map_pages)(struct vm_area_struct *, struct vm_fault *); int (*page_mkwrite)(struct vm_area_struct *, struct vm_fault *); int (*access)(struct vm_area_struct *, unsigned long, void *, int, int); const char * (*name)(struct vm_area_struct *); int (*set_policy)(struct vm_area_struct *, struct mempolicy *); struct mempolicy * (*get_policy)(struct vm_area_struct *, unsigned long); int (*migrate)(struct vm_area_struct *, const nodemask_t *, const nodemask_t *, unsigned long); int (*remap_pages)(struct vm_area_struct *, unsigned long, unsigned long, unsigned long); } ; 2119 struct scatterlist { unsigned long sg_magic; unsigned long page_link; unsigned int offset; unsigned int length; dma_addr_t dma_address; unsigned int dma_length; } ; 17 struct sg_table { struct scatterlist *sgl; unsigned int nents; unsigned int orig_nents; } ; 38 typedef s32 dma_cookie_t; 1164 struct dma_attrs { unsigned long flags[1U]; } ; 70 enum dma_data_direction { DMA_BIDIRECTIONAL = 0, DMA_TO_DEVICE = 1, DMA_FROM_DEVICE = 2, DMA_NONE = 3 } ; 77 struct dma_map_ops { void * (*alloc)(struct device *, size_t , dma_addr_t *, gfp_t , struct dma_attrs *); void (*free)(struct device *, size_t , void *, dma_addr_t , struct dma_attrs *); int (*mmap)(struct device *, struct vm_area_struct *, void *, dma_addr_t , size_t , struct dma_attrs *); int (*get_sgtable)(struct device *, struct sg_table *, void *, dma_addr_t , size_t , struct dma_attrs *); dma_addr_t (*map_page)(struct device *, struct page *, unsigned long, size_t , enum dma_data_direction , struct dma_attrs *); void (*unmap_page)(struct device *, dma_addr_t , size_t , enum dma_data_direction , struct dma_attrs *); int (*map_sg)(struct device *, struct scatterlist *, int, enum dma_data_direction , struct dma_attrs *); void (*unmap_sg)(struct device *, struct scatterlist *, int, enum dma_data_direction , struct dma_attrs *); void (*sync_single_for_cpu)(struct device *, dma_addr_t , size_t , enum dma_data_direction ); void (*sync_single_for_device)(struct device *, dma_addr_t , size_t , enum dma_data_direction ); void (*sync_sg_for_cpu)(struct device *, struct scatterlist *, int, enum dma_data_direction ); void (*sync_sg_for_device)(struct device *, struct scatterlist *, int, enum dma_data_direction ); int (*mapping_error)(struct device *, dma_addr_t ); int (*dma_supported)(struct device *, u64 ); int (*set_dma_mask)(struct device *, u64 ); int is_phys; } ; 33 struct nf_conntrack { atomic_t use; } ; 136 struct nf_bridge_info { atomic_t use; unsigned int mask; struct net_device *physindev; struct net_device *physoutdev; unsigned long data[4U]; } ; 146 struct sk_buff_head { struct sk_buff *next; struct sk_buff *prev; __u32 qlen; spinlock_t lock; } ; 361 typedef unsigned int sk_buff_data_t; 362 struct __anonstruct_ldv_30927_208 { u32 stamp_us; u32 stamp_jiffies; } ; 362 union __anonunion_ldv_30928_207 { u64 v64; struct __anonstruct_ldv_30927_208 ldv_30927; } ; 362 struct skb_mstamp { union __anonunion_ldv_30928_207 ldv_30928; } ; 415 union __anonunion_ldv_30947_209 { ktime_t tstamp; struct skb_mstamp skb_mstamp; } ; 415 struct sec_path ; 415 struct __anonstruct_ldv_30963_211 { __u16 csum_start; __u16 csum_offset; } ; 415 union __anonunion_ldv_30964_210 { __wsum csum; struct __anonstruct_ldv_30963_211 ldv_30963; } ; 415 union __anonunion_ldv_31004_212 { unsigned int napi_id; dma_cookie_t dma_cookie; } ; 415 union __anonunion_ldv_31010_213 { __u32 mark; __u32 dropcount; __u32 reserved_tailroom; } ; 415 struct sk_buff { struct sk_buff *next; struct sk_buff *prev; union __anonunion_ldv_30947_209 ldv_30947; struct sock *sk; struct net_device *dev; char cb[48U]; unsigned long _skb_refdst; struct sec_path *sp; unsigned int len; unsigned int data_len; __u16 mac_len; __u16 hdr_len; union __anonunion_ldv_30964_210 ldv_30964; __u32 priority; unsigned char ignore_df; unsigned char cloned; unsigned char ip_summed; unsigned char nohdr; unsigned char nfctinfo; unsigned char pkt_type; unsigned char fclone; unsigned char ipvs_property; unsigned char peeked; unsigned char nf_trace; __be16 protocol; void (*destructor)(struct sk_buff *); struct nf_conntrack *nfct; struct nf_bridge_info *nf_bridge; int skb_iif; __u32 hash; __be16 vlan_proto; __u16 vlan_tci; __u16 tc_index; __u16 tc_verd; __u16 queue_mapping; unsigned char ndisc_nodetype; unsigned char pfmemalloc; unsigned char ooo_okay; unsigned char l4_hash; unsigned char sw_hash; unsigned char wifi_acked_valid; unsigned char wifi_acked; unsigned char no_fcs; unsigned char head_frag; unsigned char encapsulation; unsigned char encap_hdr_csum; unsigned char csum_valid; unsigned char csum_complete_sw; union __anonunion_ldv_31004_212 ldv_31004; __u32 secmark; union __anonunion_ldv_31010_213 ldv_31010; __be16 inner_protocol; __u16 inner_transport_header; __u16 inner_network_header; __u16 inner_mac_header; __u16 transport_header; __u16 network_header; __u16 mac_header; sk_buff_data_t tail; sk_buff_data_t end; unsigned char *head; unsigned char *data; unsigned int truesize; atomic_t users; } ; 337 struct nf_logger ; 338 struct netns_nf { struct proc_dir_entry *proc_netfilter; const struct nf_logger *nf_loggers[13U]; struct ctl_table_header *nf_log_dir_header; } ; 17 struct ebt_table ; 18 struct netns_xt { struct list_head tables[13U]; bool notrack_deprecated_warning; struct ebt_table *broute_table; struct ebt_table *frame_filter; struct ebt_table *frame_nat; } ; 18 struct hlist_nulls_node ; 18 struct hlist_nulls_head { struct hlist_nulls_node *first; } ; 20 struct hlist_nulls_node { struct hlist_nulls_node *next; struct hlist_nulls_node **pprev; } ; 32 struct nf_proto_net { struct ctl_table_header *ctl_table_header; struct ctl_table *ctl_table; struct ctl_table_header *ctl_compat_header; struct ctl_table *ctl_compat_table; unsigned int users; } ; 25 struct nf_generic_net { struct nf_proto_net pn; unsigned int timeout; } ; 30 struct nf_tcp_net { struct nf_proto_net pn; unsigned int timeouts[14U]; unsigned int tcp_loose; unsigned int tcp_be_liberal; unsigned int tcp_max_retrans; } ; 44 struct nf_udp_net { struct nf_proto_net pn; unsigned int timeouts[2U]; } ; 49 struct nf_icmp_net { struct nf_proto_net pn; unsigned int timeout; } ; 54 struct nf_ip_net { struct nf_generic_net generic; struct nf_tcp_net tcp; struct nf_udp_net udp; struct nf_icmp_net icmp; struct nf_icmp_net icmpv6; struct ctl_table_header *ctl_table_header; struct ctl_table *ctl_table; } ; 65 struct ct_pcpu { spinlock_t lock; struct hlist_nulls_head unconfirmed; struct hlist_nulls_head dying; struct hlist_nulls_head tmpl; } ; 73 struct ip_conntrack_stat ; 73 struct nf_ct_event_notifier ; 73 struct nf_exp_event_notifier ; 73 struct netns_ct { atomic_t count; unsigned int expect_count; struct delayed_work ecache_dwork; bool ecache_dwork_pending; struct ctl_table_header *sysctl_header; struct ctl_table_header *acct_sysctl_header; struct ctl_table_header *tstamp_sysctl_header; struct ctl_table_header *event_sysctl_header; struct ctl_table_header *helper_sysctl_header; char *slabname; unsigned int sysctl_log_invalid; int sysctl_events; int sysctl_acct; int sysctl_auto_assign_helper; bool auto_assign_helper_warned; int sysctl_tstamp; int sysctl_checksum; unsigned int htable_size; seqcount_t generation; struct kmem_cache *nf_conntrack_cachep; struct hlist_nulls_head *hash; struct hlist_head *expect_hash; struct ct_pcpu *pcpu_lists; struct ip_conntrack_stat *stat; struct nf_ct_event_notifier *nf_conntrack_event_cb; struct nf_exp_event_notifier *nf_expect_event_cb; struct nf_ip_net nf_ct_proto; unsigned int labels_used; u8 label_words; struct hlist_head *nat_bysource; unsigned int nat_htable_size; } ; 115 struct nft_af_info ; 116 struct netns_nftables { struct list_head af_info; struct list_head commit_list; struct nft_af_info *ipv4; struct nft_af_info *ipv6; struct nft_af_info *inet; struct nft_af_info *arp; struct nft_af_info *bridge; unsigned int base_seq; u8 gencursor; } ; 450 struct tasklet_struct { struct tasklet_struct *next; unsigned long state; atomic_t count; void (*func)(unsigned long); unsigned long data; } ; 663 struct flow_cache_percpu { struct hlist_head *hash_table; int hash_count; u32 hash_rnd; int hash_rnd_recalc; struct tasklet_struct flush_tasklet; } ; 16 struct flow_cache { u32 hash_shift; struct flow_cache_percpu *percpu; struct notifier_block hotcpu_notifier; int low_watermark; int high_watermark; struct timer_list rnd_timer; } ; 25 struct xfrm_policy_hash { struct hlist_head *table; unsigned int hmask; } ; 17 struct netns_xfrm { struct list_head state_all; struct hlist_head *state_bydst; struct hlist_head *state_bysrc; struct hlist_head *state_byspi; unsigned int state_hmask; unsigned int state_num; struct work_struct state_hash_work; struct hlist_head state_gc_list; struct work_struct state_gc_work; struct list_head policy_all; struct hlist_head *policy_byidx; unsigned int policy_idx_hmask; struct hlist_head policy_inexact[6U]; struct xfrm_policy_hash policy_bydst[6U]; unsigned int policy_count[6U]; struct work_struct policy_hash_work; struct sock *nlsk; struct sock *nlsk_stash; u32 sysctl_aevent_etime; u32 sysctl_aevent_rseqth; int sysctl_larval_drop; u32 sysctl_acq_expires; struct ctl_table_header *sysctl_hdr; struct dst_ops xfrm4_dst_ops; struct dst_ops xfrm6_dst_ops; spinlock_t xfrm_state_lock; rwlock_t xfrm_policy_lock; struct mutex xfrm_cfg_mutex; struct flow_cache flow_cache_global; atomic_t flow_cache_genid; struct list_head flow_cache_gc_list; spinlock_t flow_cache_gc_lock; struct work_struct flow_cache_gc_work; struct work_struct flow_cache_flush_work; struct mutex flow_flush_sem; } ; 74 struct net_generic ; 75 struct netns_ipvs ; 76 struct net { atomic_t passive; atomic_t count; spinlock_t rules_mod_lock; struct list_head list; struct list_head cleanup_list; struct list_head exit_list; struct user_namespace *user_ns; unsigned int proc_inum; struct proc_dir_entry *proc_net; struct proc_dir_entry *proc_net_stat; struct ctl_table_set sysctls; struct sock *rtnl; struct sock *genl_sock; struct list_head dev_base_head; struct hlist_head *dev_name_head; struct hlist_head *dev_index_head; unsigned int dev_base_seq; int ifindex; unsigned int dev_unreg_count; struct list_head rules_ops; struct net_device *loopback_dev; struct netns_core core; struct netns_mib mib; struct netns_packet packet; struct netns_unix unx; struct netns_ipv4 ipv4; struct netns_ipv6 ipv6; struct netns_ieee802154_lowpan ieee802154_lowpan; struct netns_sctp sctp; struct netns_dccp dccp; struct netns_nf nf; struct netns_xt xt; struct netns_ct ct; struct netns_nftables nft; struct netns_nf_frag nf_frag; struct sock *nfnl; struct sock *nfnl_stash; struct sk_buff_head wext_nlevents; struct net_generic *gen; struct netns_xfrm xfrm; struct netns_ipvs *ipvs; struct sock *diag_nlsk; atomic_t fnhe_genid; } ; 25 struct __anonstruct_i32_229 { u32 ino; u32 gen; u32 parent_ino; u32 parent_gen; } ; 25 struct __anonstruct_udf_230 { u32 block; u16 partref; u16 parent_partref; u32 generation; u32 parent_block; u32 parent_generation; } ; 25 union __anonunion_ldv_34941_228 { struct __anonstruct_i32_229 i32; struct __anonstruct_udf_230 udf; __u32 raw[0U]; } ; 25 struct fid { union __anonunion_ldv_34941_228 ldv_34941; } ; 123 struct export_operations { int (*encode_fh)(struct inode *, __u32 *, int *, struct inode *); struct dentry * (*fh_to_dentry)(struct super_block *, struct fid *, int, int); struct dentry * (*fh_to_parent)(struct super_block *, struct fid *, int, int); int (*get_name)(struct dentry *, char *, struct dentry *); struct dentry * (*get_parent)(struct dentry *); int (*commit_metadata)(struct inode *); } ; 11 typedef void * mempool_alloc_t(gfp_t , void *); 12 typedef void mempool_free_t(void *, void *); 13 struct mempool_s { spinlock_t lock; int min_nr; int curr_nr; void **elements; void *pool_data; mempool_alloc_t *alloc; mempool_free_t *free; wait_queue_head_t wait; } ; 24 typedef struct mempool_s mempool_t; 38 struct ceph_entity_name { __u8 type; __le64 num; } ; 58 struct ceph_entity_addr { __le32 type; __le32 nonce; struct __kernel_sockaddr_storage in_addr; } ; 67 struct ceph_entity_inst { struct ceph_entity_name name; struct ceph_entity_addr addr; } ; 72 struct ceph_msg_connect { __le64 features; __le32 host_type; __le32 global_seq; __le32 connect_seq; __le32 protocol_version; __le32 authorizer_protocol; __le32 authorizer_len; __u8 flags; } ; 106 struct ceph_msg_connect_reply { __u8 tag; __le64 features; __le32 global_seq; __le32 connect_seq; __le32 protocol_version; __le32 authorizer_len; __u8 flags; } ; 140 struct ceph_msg_header { __le64 seq; __le64 tid; __le16 type; __le16 priority; __le16 version; __le32 front_len; __le32 middle_len; __le32 data_len; __le16 data_off; struct ceph_entity_name src; __le32 reserved; __le32 crc; } ; 158 struct ceph_msg_footer { __le32 front_crc; __le32 middle_crc; __le32 data_crc; __u8 flags; } ; 171 struct ceph_fsid { unsigned char fsid[16U]; } ; 28 struct ceph_timespec { __le32 tv_sec; __le32 tv_nsec; } ; 27 struct ceph_buffer { struct kref kref; struct kvec vec; size_t alloc_len; } ; 37 struct ceph_msg ; 38 struct ceph_connection ; 39 struct ceph_auth_handshake ; 39 struct ceph_connection_operations { struct ceph_connection * (*get)(struct ceph_connection *); void (*put)(struct ceph_connection *); void (*dispatch)(struct ceph_connection *, struct ceph_msg *); struct ceph_auth_handshake * (*get_authorizer)(struct ceph_connection *, int *, int); int (*verify_authorizer_reply)(struct ceph_connection *, int); int (*invalidate_authorizer)(struct ceph_connection *); void (*fault)(struct ceph_connection *); void (*peer_reset)(struct ceph_connection *); struct ceph_msg * (*alloc_msg)(struct ceph_connection *, struct ceph_msg_header *, int *); } ; 44 struct ceph_messenger { struct ceph_entity_inst inst; struct ceph_entity_addr my_enc_addr; atomic_t stopping; bool nocrc; u32 global_seq; spinlock_t global_seq_lock; u64 supported_features; u64 required_features; } ; 67 enum ceph_msg_data_type { CEPH_MSG_DATA_NONE = 0, CEPH_MSG_DATA_PAGES = 1, CEPH_MSG_DATA_PAGELIST = 2, CEPH_MSG_DATA_BIO = 3 } ; 91 struct __anonstruct_ldv_36463_250 { struct bio *bio; size_t bio_length; } ; 91 struct __anonstruct_ldv_36468_251 { struct page **pages; size_t length; unsigned int alignment; } ; 91 struct ceph_pagelist ; 91 union __anonunion_ldv_36471_249 { struct __anonstruct_ldv_36463_250 ldv_36463; struct __anonstruct_ldv_36468_251 ldv_36468; struct ceph_pagelist *pagelist; } ; 91 struct ceph_msg_data { struct list_head links; enum ceph_msg_data_type type; union __anonunion_ldv_36471_249 ldv_36471; } ; 110 struct __anonstruct_ldv_36483_253 { struct bio *bio; struct bvec_iter bvec_iter; } ; 110 struct __anonstruct_ldv_36488_254 { unsigned int page_offset; unsigned short page_index; unsigned short page_count; } ; 110 struct __anonstruct_ldv_36492_255 { struct page *page; size_t offset; } ; 110 union __anonunion_ldv_36493_252 { struct __anonstruct_ldv_36483_253 ldv_36483; struct __anonstruct_ldv_36488_254 ldv_36488; struct __anonstruct_ldv_36492_255 ldv_36492; } ; 110 struct ceph_msg_data_cursor { size_t total_resid; struct list_head *data_head; struct ceph_msg_data *data; size_t resid; bool last_piece; bool need_crc; union __anonunion_ldv_36493_252 ldv_36493; } ; 137 struct ceph_msgpool ; 137 struct ceph_msg { struct ceph_msg_header hdr; struct ceph_msg_footer footer; struct kvec front; struct ceph_buffer *middle; size_t data_length; struct list_head data; struct ceph_msg_data_cursor cursor; struct ceph_connection *con; struct list_head list_head; struct kref kref; bool more_to_follow; bool needs_out_seq; int front_alloc_len; unsigned long ack_stamp; struct ceph_msgpool *pool; } ; 164 struct ceph_connection { void *private; const struct ceph_connection_operations *ops; struct ceph_messenger *msgr; atomic_t sock_state; struct socket *sock; struct ceph_entity_addr peer_addr; struct ceph_entity_addr peer_addr_for_me; unsigned long flags; unsigned long state; const char *error_msg; struct ceph_entity_name peer_name; u64 peer_features; u32 connect_seq; u32 peer_global_seq; int auth_retry; void *auth_reply_buf; int auth_reply_buf_len; struct mutex mutex; struct list_head out_queue; struct list_head out_sent; u64 out_seq; u64 in_seq; u64 in_seq_acked; char in_banner[30U]; struct ceph_msg_connect out_connect; struct ceph_msg_connect_reply in_reply; struct ceph_entity_addr actual_peer_addr; struct ceph_msg *out_msg; bool out_msg_done; struct kvec out_kvec[8U]; struct kvec *out_kvec_cur; int out_kvec_left; int out_skip; int out_kvec_bytes; bool out_kvec_is_msg; int out_more; __le64 out_temp_ack; struct ceph_msg_header in_hdr; struct ceph_msg *in_msg; u32 in_front_crc; u32 in_middle_crc; u32 in_data_crc; char in_tag; int in_base_pos; __le64 in_temp_ack; struct delayed_work work; unsigned long delay; } ; 293 struct ceph_msgpool { const char *name; mempool_t *pool; int type; int front_len; } ; 25 struct ceph_client ; 27 struct ceph_auth_client ; 28 struct ceph_monmap { struct ceph_fsid fsid; u32 epoch; u32 num_mon; struct ceph_entity_inst mon_inst[0U]; } ; 23 struct ceph_mon_client ; 58 struct ceph_mon_client { struct ceph_client *client; struct ceph_monmap *monmap; struct mutex mutex; struct delayed_work delayed_work; struct ceph_auth_client *auth; struct ceph_msg *m_auth; struct ceph_msg *m_auth_reply; struct ceph_msg *m_subscribe; struct ceph_msg *m_subscribe_ack; int pending_auth; bool hunting; int cur_mon; unsigned long sub_sent; unsigned long sub_renew_after; struct ceph_connection con; struct rb_root generic_request_tree; int num_generic_requests; u64 last_tid; int want_mdsmap; int want_next_osdmap; u32 have_osdmap; u32 have_mdsmap; struct dentry *debugfs_file; } ; 219 struct crush_rule_step { __u32 op; __s32 arg1; __s32 arg2; } ; 53 struct crush_rule_mask { __u8 ruleset; __u8 type; __u8 min_size; __u8 max_size; } ; 75 struct crush_rule { __u32 len; struct crush_rule_mask mask; struct crush_rule_step steps[0U]; } ; 108 struct crush_bucket { __s32 id; __u16 type; __u8 alg; __u8 hash; __u32 weight; __u32 size; __s32 *items; __u32 perm_x; __u32 perm_n; __u32 *perm; } ; 151 struct crush_map { struct crush_bucket **buckets; struct crush_rule **rules; __s32 max_buckets; __u32 max_rules; __s32 max_devices; __u32 choose_local_tries; __u32 choose_local_fallback_tries; __u32 choose_total_tries; __u32 chooseleaf_descend_once; __u8 chooseleaf_vary_r; } ; 86 struct ceph_osdmap { struct ceph_fsid fsid; u32 epoch; u32 mkfs_epoch; struct ceph_timespec created; struct ceph_timespec modified; u32 flags; u32 max_osd; u8 *osd_state; u32 *osd_weight; struct ceph_entity_addr *osd_addr; struct rb_root pg_temp; struct rb_root primary_temp; u32 *osd_primary_affinity; struct rb_root pg_pools; u32 pool_max; struct crush_map *crush; struct mutex crush_scratch_mutex; int crush_scratch_ary[48U]; } ; 224 struct ceph_authorizer ; 225 struct ceph_auth_handshake { struct ceph_authorizer *authorizer; void *authorizer_buf; size_t authorizer_buf_len; void *authorizer_reply_buf; size_t authorizer_reply_buf_len; } ; 24 struct ceph_auth_client_ops { const char *name; int (*is_authenticated)(struct ceph_auth_client *); int (*should_authenticate)(struct ceph_auth_client *); int (*build_request)(struct ceph_auth_client *, void *, void *); int (*handle_reply)(struct ceph_auth_client *, int, void *, void *); int (*create_authorizer)(struct ceph_auth_client *, int, struct ceph_auth_handshake *); int (*update_authorizer)(struct ceph_auth_client *, int, struct ceph_auth_handshake *); int (*verify_authorizer_reply)(struct ceph_auth_client *, struct ceph_authorizer *, size_t ); void (*destroy_authorizer)(struct ceph_auth_client *, struct ceph_authorizer *); void (*invalidate_authorizer)(struct ceph_auth_client *, int); void (*reset)(struct ceph_auth_client *); void (*destroy)(struct ceph_auth_client *); } ; 70 struct ceph_crypto_key ; 70 struct ceph_auth_client { u32 protocol; void *private; const struct ceph_auth_client_ops *ops; bool negotiating; const char *name; u64 global_id; const struct ceph_crypto_key *key; unsigned int want_keys; struct mutex mutex; } ; 114 struct ceph_pagelist { struct list_head head; void *mapped_tail; size_t length; size_t room; struct list_head free_list; size_t num_pages_free; } ; 76 struct ceph_osd_client ; 194 struct ceph_osd_client { struct ceph_client *client; struct ceph_osdmap *osdmap; struct rw_semaphore map_sem; struct completion map_waiters; u64 last_requested_map; struct mutex request_mutex; struct rb_root osds; struct list_head osd_lru; u64 timeout_tid; u64 last_tid; struct rb_root requests; struct list_head req_lru; struct list_head req_unsent; struct list_head req_notarget; struct list_head req_linger; int num_requests; struct delayed_work timeout_work; struct delayed_work osds_timeout_work; struct dentry *debugfs_file; mempool_t *req_mempool; struct ceph_msgpool msgpool_op; struct ceph_msgpool msgpool_op_reply; spinlock_t event_lock; struct rb_root event_tree; u64 event_count; struct workqueue_struct *notify_wq; } ; 365 struct ceph_options { int flags; struct ceph_fsid fsid; struct ceph_entity_addr my_addr; int mount_timeout; int osd_idle_ttl; int osd_keepalive_timeout; struct ceph_entity_addr *mon_addr; int num_mon; char *name; struct ceph_crypto_key *key; } ; 103 struct ceph_client { struct ceph_fsid fsid; bool have_fsid; void *private; struct ceph_options *options; struct mutex mount_mutex; wait_queue_head_t auth_wq; int auth_err; int (*extra_mon_dispatch)(struct ceph_client *, struct ceph_msg *); u64 supported_features; u64 required_features; struct ceph_messenger msgr; struct ceph_mon_client monc; struct ceph_osd_client osdc; struct dentry *debugfs_dir; struct dentry *debugfs_monmap; struct dentry *debugfs_osdmap; } ; 31 struct ceph_crypto_key { int type; struct ceph_timespec created; int len; void *key; } ; 886 typedef int ldv_func_ret_type; 15 typedef signed char s8; 35 typedef __u32 __be32; 106 typedef __u8 uint8_t; 111 typedef __u64 uint64_t; 63 struct blocking_notifier_head { struct rw_semaphore rwsem; struct notifier_block *head; } ; 12 struct plist_head { struct list_head node_list; } ; 77 union __anonunion_ldv_27330_194 { struct list_head q_node; struct kmem_cache *__rcu_icq_cache; } ; 77 union __anonunion_ldv_27334_195 { struct hlist_node ioc_node; struct callback_head __rcu_head; } ; 77 struct io_cq { struct request_queue *q; struct io_context *ioc; union __anonunion_ldv_27330_194 ldv_27330; union __anonunion_ldv_27334_195 ldv_27334; unsigned int flags; } ; 92 struct io_context { atomic_long_t refcount; atomic_t active_ref; atomic_t nr_tasks; spinlock_t lock; unsigned short ioprio; int nr_batch_requests; unsigned long last_waited; struct radix_tree_root icq_tree; struct io_cq *icq_hint; struct hlist_head icq_list; struct work_struct release_work; } ; 278 struct bio_integrity_payload { struct bio *bip_bio; struct bvec_iter bip_iter; void *bip_buf; bio_end_io_t *bip_end_io; unsigned short bip_slab; unsigned short bip_vcnt; unsigned short bip_max_vcnt; unsigned char bip_owns_buf; struct work_struct bip_work; struct bio_vec *bip_vec; struct bio_vec bip_inline_vecs[0U]; } ; 490 struct bio_list { struct bio *head; struct bio *tail; } ; 611 struct bio_set { struct kmem_cache *bio_slab; unsigned int front_pad; mempool_t *bio_pool; mempool_t *bvec_pool; mempool_t *bio_integrity_pool; mempool_t *bvec_integrity_pool; spinlock_t rescue_lock; struct bio_list rescue_list; struct work_struct rescue_work; struct workqueue_struct *rescue_workqueue; } ; 161 struct in6_addr ; 15 typedef u64 netdev_features_t; 712 struct rtable ; 84 struct pm_qos_request { struct plist_node node; int pm_qos_class; struct delayed_work work; } ; 48 struct pm_qos_flags_request { struct list_head node; s32 flags; } ; 53 enum dev_pm_qos_req_type { DEV_PM_QOS_RESUME_LATENCY = 1, DEV_PM_QOS_LATENCY_TOLERANCE = 2, DEV_PM_QOS_FLAGS = 3 } ; 59 union __anonunion_data_206 { struct plist_node pnode; struct pm_qos_flags_request flr; } ; 59 struct dev_pm_qos_request { enum dev_pm_qos_req_type type; union __anonunion_data_206 data; struct device *dev; } ; 68 enum pm_qos_type { PM_QOS_UNITIALIZED = 0, PM_QOS_MAX = 1, PM_QOS_MIN = 2 } ; 74 struct pm_qos_constraints { struct plist_head list; s32 target_value; s32 default_value; s32 no_constraint_value; enum pm_qos_type type; struct blocking_notifier_head *notifiers; } ; 88 struct pm_qos_flags { struct list_head list; s32 effective_flags; } ; 93 struct dev_pm_qos { struct pm_qos_constraints resume_latency; struct pm_qos_constraints latency_tolerance; struct pm_qos_flags flags; struct dev_pm_qos_request *resume_latency_req; struct dev_pm_qos_request *latency_tolerance_req; struct dev_pm_qos_request *flags_req; } ; 54 struct dql { unsigned int num_queued; unsigned int adj_limit; unsigned int last_obj_cnt; unsigned int limit; unsigned int num_completed; unsigned int prev_ovlimit; unsigned int prev_num_queued; unsigned int prev_last_obj_cnt; unsigned int lowest_slack; unsigned long slack_start_time; unsigned int max_limit; unsigned int min_limit; unsigned int slack_hold_time; } ; 43 struct __anonstruct_sync_serial_settings_207 { unsigned int clock_rate; unsigned int clock_type; unsigned short loopback; } ; 43 typedef struct __anonstruct_sync_serial_settings_207 sync_serial_settings; 50 struct __anonstruct_te1_settings_208 { unsigned int clock_rate; unsigned int clock_type; unsigned short loopback; unsigned int slot_map; } ; 50 typedef struct __anonstruct_te1_settings_208 te1_settings; 55 struct __anonstruct_raw_hdlc_proto_209 { unsigned short encoding; unsigned short parity; } ; 55 typedef struct __anonstruct_raw_hdlc_proto_209 raw_hdlc_proto; 65 struct __anonstruct_fr_proto_210 { unsigned int t391; unsigned int t392; unsigned int n391; unsigned int n392; unsigned int n393; unsigned short lmi; unsigned short dce; } ; 65 typedef struct __anonstruct_fr_proto_210 fr_proto; 69 struct __anonstruct_fr_proto_pvc_211 { unsigned int dlci; } ; 69 typedef struct __anonstruct_fr_proto_pvc_211 fr_proto_pvc; 74 struct __anonstruct_fr_proto_pvc_info_212 { unsigned int dlci; char master[16U]; } ; 74 typedef struct __anonstruct_fr_proto_pvc_info_212 fr_proto_pvc_info; 79 struct __anonstruct_cisco_proto_213 { unsigned int interval; unsigned int timeout; } ; 79 typedef struct __anonstruct_cisco_proto_213 cisco_proto; 117 struct ifmap { unsigned long mem_start; unsigned long mem_end; unsigned short base_addr; unsigned char irq; unsigned char dma; unsigned char port; } ; 177 union __anonunion_ifs_ifsu_214 { raw_hdlc_proto *raw_hdlc; cisco_proto *cisco; fr_proto *fr; fr_proto_pvc *fr_pvc; fr_proto_pvc_info *fr_pvc_info; sync_serial_settings *sync; te1_settings *te1; } ; 177 struct if_settings { unsigned int type; unsigned int size; union __anonunion_ifs_ifsu_214 ifs_ifsu; } ; 195 union __anonunion_ifr_ifrn_215 { char ifrn_name[16U]; } ; 195 union __anonunion_ifr_ifru_216 { struct sockaddr ifru_addr; struct sockaddr ifru_dstaddr; struct sockaddr ifru_broadaddr; struct sockaddr ifru_netmask; struct sockaddr ifru_hwaddr; short ifru_flags; int ifru_ivalue; int ifru_mtu; struct ifmap ifru_map; char ifru_slave[16U]; char ifru_newname[16U]; void *ifru_data; struct if_settings ifru_settings; } ; 195 struct ifreq { union __anonunion_ifr_ifrn_215 ifr_ifrn; union __anonunion_ifr_ifru_216 ifr_ifru; } ; 39 typedef s32 compat_long_t; 44 typedef u32 compat_uptr_t; 276 struct compat_robust_list { compat_uptr_t next; } ; 280 struct compat_robust_list_head { struct compat_robust_list list; compat_long_t futex_offset; compat_uptr_t list_op_pending; } ; 703 struct ethhdr { unsigned char h_dest[6U]; unsigned char h_source[6U]; __be16 h_proto; } ; 34 struct ethtool_cmd { __u32 cmd; __u32 supported; __u32 advertising; __u16 speed; __u8 duplex; __u8 port; __u8 phy_address; __u8 transceiver; __u8 autoneg; __u8 mdio_support; __u32 maxtxpkt; __u32 maxrxpkt; __u16 speed_hi; __u8 eth_tp_mdix; __u8 eth_tp_mdix_ctrl; __u32 lp_advertising; __u32 reserved[2U]; } ; 125 struct ethtool_drvinfo { __u32 cmd; char driver[32U]; char version[32U]; char fw_version[32U]; char bus_info[32U]; char reserved1[32U]; char reserved2[12U]; __u32 n_priv_flags; __u32 n_stats; __u32 testinfo_len; __u32 eedump_len; __u32 regdump_len; } ; 187 struct ethtool_wolinfo { __u32 cmd; __u32 supported; __u32 wolopts; __u8 sopass[6U]; } ; 211 struct ethtool_regs { __u32 cmd; __u32 version; __u32 len; __u8 data[0U]; } ; 233 struct ethtool_eeprom { __u32 cmd; __u32 magic; __u32 offset; __u32 len; __u8 data[0U]; } ; 259 struct ethtool_eee { __u32 cmd; __u32 supported; __u32 advertised; __u32 lp_advertised; __u32 eee_active; __u32 eee_enabled; __u32 tx_lpi_enabled; __u32 tx_lpi_timer; __u32 reserved[2U]; } ; 288 struct ethtool_modinfo { __u32 cmd; __u32 type; __u32 eeprom_len; __u32 reserved[8U]; } ; 305 struct ethtool_coalesce { __u32 cmd; __u32 rx_coalesce_usecs; __u32 rx_max_coalesced_frames; __u32 rx_coalesce_usecs_irq; __u32 rx_max_coalesced_frames_irq; __u32 tx_coalesce_usecs; __u32 tx_max_coalesced_frames; __u32 tx_coalesce_usecs_irq; __u32 tx_max_coalesced_frames_irq; __u32 stats_block_coalesce_usecs; __u32 use_adaptive_rx_coalesce; __u32 use_adaptive_tx_coalesce; __u32 pkt_rate_low; __u32 rx_coalesce_usecs_low; __u32 rx_max_coalesced_frames_low; __u32 tx_coalesce_usecs_low; __u32 tx_max_coalesced_frames_low; __u32 pkt_rate_high; __u32 rx_coalesce_usecs_high; __u32 rx_max_coalesced_frames_high; __u32 tx_coalesce_usecs_high; __u32 tx_max_coalesced_frames_high; __u32 rate_sample_interval; } ; 404 struct ethtool_ringparam { __u32 cmd; __u32 rx_max_pending; __u32 rx_mini_max_pending; __u32 rx_jumbo_max_pending; __u32 tx_max_pending; __u32 rx_pending; __u32 rx_mini_pending; __u32 rx_jumbo_pending; __u32 tx_pending; } ; 441 struct ethtool_channels { __u32 cmd; __u32 max_rx; __u32 max_tx; __u32 max_other; __u32 max_combined; __u32 rx_count; __u32 tx_count; __u32 other_count; __u32 combined_count; } ; 469 struct ethtool_pauseparam { __u32 cmd; __u32 autoneg; __u32 rx_pause; __u32 tx_pause; } ; 568 struct ethtool_test { __u32 cmd; __u32 flags; __u32 reserved; __u32 len; __u64 data[0U]; } ; 600 struct ethtool_stats { __u32 cmd; __u32 n_stats; __u64 data[0U]; } ; 642 struct ethtool_tcpip4_spec { __be32 ip4src; __be32 ip4dst; __be16 psrc; __be16 pdst; __u8 tos; } ; 675 struct ethtool_ah_espip4_spec { __be32 ip4src; __be32 ip4dst; __be32 spi; __u8 tos; } ; 691 struct ethtool_usrip4_spec { __be32 ip4src; __be32 ip4dst; __be32 l4_4_bytes; __u8 tos; __u8 ip_ver; __u8 proto; } ; 711 union ethtool_flow_union { struct ethtool_tcpip4_spec tcp_ip4_spec; struct ethtool_tcpip4_spec udp_ip4_spec; struct ethtool_tcpip4_spec sctp_ip4_spec; struct ethtool_ah_espip4_spec ah_ip4_spec; struct ethtool_ah_espip4_spec esp_ip4_spec; struct ethtool_usrip4_spec usr_ip4_spec; struct ethhdr ether_spec; __u8 hdata[52U]; } ; 722 struct ethtool_flow_ext { __u8 padding[2U]; unsigned char h_dest[6U]; __be16 vlan_etype; __be16 vlan_tci; __be32 data[2U]; } ; 741 struct ethtool_rx_flow_spec { __u32 flow_type; union ethtool_flow_union h_u; struct ethtool_flow_ext h_ext; union ethtool_flow_union m_u; struct ethtool_flow_ext m_ext; __u64 ring_cookie; __u32 location; } ; 767 struct ethtool_rxnfc { __u32 cmd; __u32 flow_type; __u64 data; struct ethtool_rx_flow_spec fs; __u32 rule_cnt; __u32 rule_locs[0U]; } ; 933 struct ethtool_flash { __u32 cmd; __u32 region; char data[128U]; } ; 941 struct ethtool_dump { __u32 cmd; __u32 version; __u32 flag; __u32 len; __u8 data[0U]; } ; 1017 struct ethtool_ts_info { __u32 cmd; __u32 so_timestamping; __s32 phc_index; __u32 tx_types; __u32 tx_reserved[3U]; __u32 rx_filters; __u32 rx_reserved[3U]; } ; 44 enum ethtool_phys_id_state { ETHTOOL_ID_INACTIVE = 0, ETHTOOL_ID_ACTIVE = 1, ETHTOOL_ID_ON = 2, ETHTOOL_ID_OFF = 3 } ; 79 struct ethtool_ops { int (*get_settings)(struct net_device *, struct ethtool_cmd *); int (*set_settings)(struct net_device *, struct ethtool_cmd *); void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *); int (*get_regs_len)(struct net_device *); void (*get_regs)(struct net_device *, struct ethtool_regs *, void *); void (*get_wol)(struct net_device *, struct ethtool_wolinfo *); int (*set_wol)(struct net_device *, struct ethtool_wolinfo *); u32 (*get_msglevel)(struct net_device *); void (*set_msglevel)(struct net_device *, u32 ); int (*nway_reset)(struct net_device *); u32 (*get_link)(struct net_device *); int (*get_eeprom_len)(struct net_device *); int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *); int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *); int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *); int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *); void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *); int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *); void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam *); int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam *); void (*self_test)(struct net_device *, struct ethtool_test *, u64 *); void (*get_strings)(struct net_device *, u32 , u8 *); int (*set_phys_id)(struct net_device *, enum ethtool_phys_id_state ); void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *); int (*begin)(struct net_device *); void (*complete)(struct net_device *); u32 (*get_priv_flags)(struct net_device *); int (*set_priv_flags)(struct net_device *, u32 ); int (*get_sset_count)(struct net_device *, int); int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, u32 *); int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *); int (*flash_device)(struct net_device *, struct ethtool_flash *); int (*reset)(struct net_device *, u32 *); u32 (*get_rxfh_key_size)(struct net_device *); u32 (*get_rxfh_indir_size)(struct net_device *); int (*get_rxfh)(struct net_device *, u32 *, u8 *); int (*set_rxfh)(struct net_device *, const u32 *, const u8 *); void (*get_channels)(struct net_device *, struct ethtool_channels *); int (*set_channels)(struct net_device *, struct ethtool_channels *); int (*get_dump_flag)(struct net_device *, struct ethtool_dump *); int (*get_dump_data)(struct net_device *, struct ethtool_dump *, void *); int (*set_dump)(struct net_device *, struct ethtool_dump *); int (*get_ts_info)(struct net_device *, struct ethtool_ts_info *); int (*get_module_info)(struct net_device *, struct ethtool_modinfo *); int (*get_module_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *); int (*get_eee)(struct net_device *, struct ethtool_eee *); int (*set_eee)(struct net_device *, struct ethtool_eee *); } ; 261 union __anonunion_in6_u_234 { __u8 u6_addr8[16U]; __be16 u6_addr16[8U]; __be32 u6_addr32[4U]; } ; 261 struct in6_addr { union __anonunion_in6_u_234 in6_u; } ; 40 struct sockaddr_in6 { unsigned short sin6_family; __be16 sin6_port; __be32 sin6_flowinfo; struct in6_addr sin6_addr; __u32 sin6_scope_id; } ; 79 struct icmpv6_mib_device { atomic_long_t mibs[6U]; } ; 89 struct icmpv6msg_mib_device { atomic_long_t mibs[512U]; } ; 110 struct in_addr { __be32 s_addr; } ; 214 struct sockaddr_in { __kernel_sa_family_t sin_family; __be16 sin_port; struct in_addr sin_addr; unsigned char __pad[8U]; } ; 324 struct nlattr ; 400 struct dsa_chip_data { struct device *mii_bus; int sw_addr; char *port_names[12U]; s8 *rtable; } ; 46 struct dsa_platform_data { struct device *netdev; int nr_chips; struct dsa_chip_data *chip; } ; 61 struct dsa_switch ; 61 struct dsa_switch_tree { struct dsa_platform_data *pd; struct net_device *master_netdev; __be16 tag_protocol; s8 cpu_switch; s8 cpu_port; int link_poll_needed; struct work_struct link_poll_work; struct timer_list link_poll_timer; struct dsa_switch *ds[4U]; } ; 94 struct dsa_switch_driver ; 94 struct mii_bus ; 94 struct dsa_switch { struct dsa_switch_tree *dst; int index; struct dsa_chip_data *pd; struct dsa_switch_driver *drv; struct mii_bus *master_mii_bus; u32 dsa_port_mask; u32 phys_port_mask; struct mii_bus *slave_mii_bus; struct net_device *ports[12U]; } ; 146 struct dsa_switch_driver { struct list_head list; __be16 tag_protocol; int priv_size; char * (*probe)(struct mii_bus *, int); int (*setup)(struct dsa_switch *); int (*set_addr)(struct dsa_switch *, u8 *); int (*phy_read)(struct dsa_switch *, int, int); int (*phy_write)(struct dsa_switch *, int, int, u16 ); void (*poll_link)(struct dsa_switch *); void (*get_strings)(struct dsa_switch *, int, uint8_t *); void (*get_ethtool_stats)(struct dsa_switch *, int, uint64_t *); int (*get_sset_count)(struct dsa_switch *); } ; 205 struct ieee_ets { __u8 willing; __u8 ets_cap; __u8 cbs; __u8 tc_tx_bw[8U]; __u8 tc_rx_bw[8U]; __u8 tc_tsa[8U]; __u8 prio_tc[8U]; __u8 tc_reco_bw[8U]; __u8 tc_reco_tsa[8U]; __u8 reco_prio_tc[8U]; } ; 69 struct ieee_maxrate { __u64 tc_maxrate[8U]; } ; 80 struct ieee_pfc { __u8 pfc_cap; __u8 pfc_en; __u8 mbc; __u16 delay; __u64 requests[8U]; __u64 indications[8U]; } ; 100 struct cee_pg { __u8 willing; __u8 error; __u8 pg_en; __u8 tcs_supported; __u8 pg_bw[8U]; __u8 prio_pg[8U]; } ; 123 struct cee_pfc { __u8 willing; __u8 error; __u8 pfc_en; __u8 tcs_supported; } ; 138 struct dcb_app { __u8 selector; __u8 priority; __u16 protocol; } ; 168 struct dcb_peer_app_info { __u8 willing; __u8 error; } ; 40 struct dcbnl_rtnl_ops { int (*ieee_getets)(struct net_device *, struct ieee_ets *); int (*ieee_setets)(struct net_device *, struct ieee_ets *); int (*ieee_getmaxrate)(struct net_device *, struct ieee_maxrate *); int (*ieee_setmaxrate)(struct net_device *, struct ieee_maxrate *); int (*ieee_getpfc)(struct net_device *, struct ieee_pfc *); int (*ieee_setpfc)(struct net_device *, struct ieee_pfc *); int (*ieee_getapp)(struct net_device *, struct dcb_app *); int (*ieee_setapp)(struct net_device *, struct dcb_app *); int (*ieee_delapp)(struct net_device *, struct dcb_app *); int (*ieee_peer_getets)(struct net_device *, struct ieee_ets *); int (*ieee_peer_getpfc)(struct net_device *, struct ieee_pfc *); u8 (*getstate)(struct net_device *); u8 (*setstate)(struct net_device *, u8 ); void (*getpermhwaddr)(struct net_device *, u8 *); void (*setpgtccfgtx)(struct net_device *, int, u8 , u8 , u8 , u8 ); void (*setpgbwgcfgtx)(struct net_device *, int, u8 ); void (*setpgtccfgrx)(struct net_device *, int, u8 , u8 , u8 , u8 ); void (*setpgbwgcfgrx)(struct net_device *, int, u8 ); void (*getpgtccfgtx)(struct net_device *, int, u8 *, u8 *, u8 *, u8 *); void (*getpgbwgcfgtx)(struct net_device *, int, u8 *); void (*getpgtccfgrx)(struct net_device *, int, u8 *, u8 *, u8 *, u8 *); void (*getpgbwgcfgrx)(struct net_device *, int, u8 *); void (*setpfccfg)(struct net_device *, int, u8 ); void (*getpfccfg)(struct net_device *, int, u8 *); u8 (*setall)(struct net_device *); u8 (*getcap)(struct net_device *, int, u8 *); int (*getnumtcs)(struct net_device *, int, u8 *); int (*setnumtcs)(struct net_device *, int, u8 ); u8 (*getpfcstate)(struct net_device *); void (*setpfcstate)(struct net_device *, u8 ); void (*getbcncfg)(struct net_device *, int, u32 *); void (*setbcncfg)(struct net_device *, int, u32 ); void (*getbcnrp)(struct net_device *, int, u8 *); void (*setbcnrp)(struct net_device *, int, u8 ); int (*setapp)(struct net_device *, u8 , u16 , u8 ); int (*getapp)(struct net_device *, u8 , u16 ); u8 (*getfeatcfg)(struct net_device *, int, u8 *); u8 (*setfeatcfg)(struct net_device *, int, u8 ); u8 (*getdcbx)(struct net_device *); u8 (*setdcbx)(struct net_device *, u8 ); int (*peer_getappinfo)(struct net_device *, struct dcb_peer_app_info *, u16 *); int (*peer_getapptable)(struct net_device *, struct dcb_app *); int (*cee_peer_getpg)(struct net_device *, struct cee_pg *); int (*cee_peer_getpfc)(struct net_device *, struct cee_pfc *); } ; 102 struct taskstats { __u16 version; __u32 ac_exitcode; __u8 ac_flag; __u8 ac_nice; __u64 cpu_count; __u64 cpu_delay_total; __u64 blkio_count; __u64 blkio_delay_total; __u64 swapin_count; __u64 swapin_delay_total; __u64 cpu_run_real_total; __u64 cpu_run_virtual_total; char ac_comm[32U]; __u8 ac_sched; __u8 ac_pad[3U]; __u32 ac_uid; __u32 ac_gid; __u32 ac_pid; __u32 ac_ppid; __u32 ac_btime; __u64 ac_etime; __u64 ac_utime; __u64 ac_stime; __u64 ac_minflt; __u64 ac_majflt; __u64 coremem; __u64 virtmem; __u64 hiwater_rss; __u64 hiwater_vm; __u64 read_char; __u64 write_char; __u64 read_syscalls; __u64 write_syscalls; __u64 read_bytes; __u64 write_bytes; __u64 cancelled_write_bytes; __u64 nvcsw; __u64 nivcsw; __u64 ac_utimescaled; __u64 ac_stimescaled; __u64 cpu_scaled_run_real_total; __u64 freepages_count; __u64 freepages_delay_total; } ; 58 struct percpu_ref ; 54 typedef void percpu_ref_func_t(struct percpu_ref *); 55 struct percpu_ref { atomic_t count; unsigned long pcpu_count_ptr; percpu_ref_func_t *release; percpu_ref_func_t *confirm_kill; struct callback_head rcu; } ; 227 struct cgroup_root ; 228 struct cgroup_subsys ; 229 struct cgroup ; 58 struct cgroup_subsys_state { struct cgroup *cgroup; struct cgroup_subsys *ss; struct percpu_ref refcnt; struct cgroup_subsys_state *parent; struct list_head sibling; struct list_head children; int id; unsigned int flags; u64 serial_nr; struct callback_head callback_head; struct work_struct destroy_work; } ; 167 struct cgroup { struct cgroup_subsys_state self; unsigned long flags; int id; int populated_cnt; struct kernfs_node *kn; struct kernfs_node *populated_kn; unsigned int subtree_control; unsigned int child_subsys_mask; struct cgroup_subsys_state *subsys[12U]; struct cgroup_root *root; struct list_head cset_links; struct list_head e_csets[12U]; struct list_head release_list; struct list_head pidlists; struct mutex pidlist_mutex; wait_queue_head_t offline_waitq; } ; 260 struct cgroup_root { struct kernfs_root *kf_root; unsigned int subsys_mask; int hierarchy_id; struct cgroup cgrp; atomic_t nr_cgrps; struct list_head root_list; unsigned int flags; struct idr cgroup_idr; char release_agent_path[4096U]; char name[64U]; } ; 299 struct css_set { atomic_t refcount; struct hlist_node hlist; struct list_head tasks; struct list_head mg_tasks; struct list_head cgrp_links; struct cgroup *dfl_cgrp; struct cgroup_subsys_state *subsys[12U]; struct list_head mg_preload_node; struct list_head mg_node; struct cgroup *mg_src_cgrp; struct css_set *mg_dst_cset; struct list_head e_cset_node[12U]; struct callback_head callback_head; } ; 382 struct cftype { char name[64U]; int private; umode_t mode; size_t max_write_len; unsigned int flags; struct cgroup_subsys *ss; struct list_head node; struct kernfs_ops *kf_ops; u64 (*read_u64)(struct cgroup_subsys_state *, struct cftype *); s64 (*read_s64)(struct cgroup_subsys_state *, struct cftype *); int (*seq_show)(struct seq_file *, void *); void * (*seq_start)(struct seq_file *, loff_t *); void * (*seq_next)(struct seq_file *, void *, loff_t *); void (*seq_stop)(struct seq_file *, void *); int (*write_u64)(struct cgroup_subsys_state *, struct cftype *, u64 ); int (*write_s64)(struct cgroup_subsys_state *, struct cftype *, s64 ); ssize_t (*write)(struct kernfs_open_file *, char *, size_t , loff_t ); struct lock_class_key lockdep_key; } ; 600 struct cgroup_taskset ; 608 struct cgroup_subsys { struct cgroup_subsys_state * (*css_alloc)(struct cgroup_subsys_state *); int (*css_online)(struct cgroup_subsys_state *); void (*css_offline)(struct cgroup_subsys_state *); void (*css_free)(struct cgroup_subsys_state *); void (*css_reset)(struct cgroup_subsys_state *); int (*can_attach)(struct cgroup_subsys_state *, struct cgroup_taskset *); void (*cancel_attach)(struct cgroup_subsys_state *, struct cgroup_taskset *); void (*attach)(struct cgroup_subsys_state *, struct cgroup_taskset *); void (*fork)(struct task_struct *); void (*exit)(struct cgroup_subsys_state *, struct cgroup_subsys_state *, struct task_struct *); void (*bind)(struct cgroup_subsys_state *); int disabled; int early_init; bool broken_hierarchy; bool warned_broken_hierarchy; int id; const char *name; struct cgroup_root *root; struct idr css_idr; struct list_head cfts; struct cftype *dfl_cftypes; struct cftype *legacy_cftypes; unsigned int depends_on; } ; 924 struct netprio_map { struct callback_head rcu; u32 priomap_len; u32 priomap[]; } ; 103 struct xfrm_policy ; 104 struct xfrm_state ; 124 struct request_sock ; 41 struct nlmsghdr { __u32 nlmsg_len; __u16 nlmsg_type; __u16 nlmsg_flags; __u32 nlmsg_seq; __u32 nlmsg_pid; } ; 145 struct nlattr { __u16 nla_len; __u16 nla_type; } ; 104 struct netlink_callback { struct sk_buff *skb; const struct nlmsghdr *nlh; int (*dump)(struct sk_buff *, struct netlink_callback *); int (*done)(struct netlink_callback *); void *data; struct module *module; u16 family; u16 min_dump_alloc; unsigned int prev_seq; unsigned int seq; long args[6U]; } ; 180 struct ndmsg { __u8 ndm_family; __u8 ndm_pad1; __u16 ndm_pad2; __s32 ndm_ifindex; __u16 ndm_state; __u8 ndm_flags; __u8 ndm_type; } ; 39 struct rtnl_link_stats64 { __u64 rx_packets; __u64 tx_packets; __u64 rx_bytes; __u64 tx_bytes; __u64 rx_errors; __u64 tx_errors; __u64 rx_dropped; __u64 tx_dropped; __u64 multicast; __u64 collisions; __u64 rx_length_errors; __u64 rx_over_errors; __u64 rx_crc_errors; __u64 rx_frame_errors; __u64 rx_fifo_errors; __u64 rx_missed_errors; __u64 tx_aborted_errors; __u64 tx_carrier_errors; __u64 tx_fifo_errors; __u64 tx_heartbeat_errors; __u64 tx_window_errors; __u64 rx_compressed; __u64 tx_compressed; } ; 553 struct ifla_vf_info { __u32 vf; __u8 mac[32U]; __u32 vlan; __u32 qos; __u32 spoofchk; __u32 linkstate; __u32 min_tx_rate; __u32 max_tx_rate; } ; 28 struct netpoll_info ; 29 struct phy_device ; 30 struct wireless_dev ; 61 enum netdev_tx { __NETDEV_TX_MIN = -2147483648, NETDEV_TX_OK = 0, NETDEV_TX_BUSY = 16, NETDEV_TX_LOCKED = 32 } ; 106 typedef enum netdev_tx netdev_tx_t; 125 struct net_device_stats { unsigned long rx_packets; unsigned long tx_packets; unsigned long rx_bytes; unsigned long tx_bytes; unsigned long rx_errors; unsigned long tx_errors; unsigned long rx_dropped; unsigned long tx_dropped; unsigned long multicast; unsigned long collisions; unsigned long rx_length_errors; unsigned long rx_over_errors; unsigned long rx_crc_errors; unsigned long rx_frame_errors; unsigned long rx_fifo_errors; unsigned long rx_missed_errors; unsigned long tx_aborted_errors; unsigned long tx_carrier_errors; unsigned long tx_fifo_errors; unsigned long tx_heartbeat_errors; unsigned long tx_window_errors; unsigned long rx_compressed; unsigned long tx_compressed; } ; 186 struct neigh_parms ; 207 struct netdev_hw_addr_list { struct list_head list; int count; } ; 212 struct hh_cache { u16 hh_len; u16 __pad; seqlock_t hh_lock; unsigned long hh_data[16U]; } ; 241 struct header_ops { int (*create)(struct sk_buff *, struct net_device *, unsigned short, const void *, const void *, unsigned int); int (*parse)(const struct sk_buff *, unsigned char *); int (*rebuild)(struct sk_buff *); int (*cache)(const struct neighbour *, struct hh_cache *, __be16 ); void (*cache_update)(struct hh_cache *, const struct net_device *, const unsigned char *); } ; 292 struct napi_struct { struct list_head poll_list; unsigned long state; int weight; unsigned int gro_count; int (*poll)(struct napi_struct *, int); spinlock_t poll_lock; int poll_owner; struct net_device *dev; struct sk_buff *gro_list; struct sk_buff *skb; struct list_head dev_list; struct hlist_node napi_hash_node; unsigned int napi_id; } ; 336 enum rx_handler_result { RX_HANDLER_CONSUMED = 0, RX_HANDLER_ANOTHER = 1, RX_HANDLER_EXACT = 2, RX_HANDLER_PASS = 3 } ; 384 typedef enum rx_handler_result rx_handler_result_t; 385 typedef rx_handler_result_t rx_handler_func_t(struct sk_buff **); 522 struct Qdisc ; 522 struct netdev_queue { struct net_device *dev; struct Qdisc *qdisc; struct Qdisc *qdisc_sleeping; struct kobject kobj; int numa_node; spinlock_t _xmit_lock; int xmit_lock_owner; unsigned long trans_start; unsigned long trans_timeout; unsigned long state; struct dql dql; } ; 591 struct rps_map { unsigned int len; struct callback_head rcu; u16 cpus[0U]; } ; 603 struct rps_dev_flow { u16 cpu; u16 filter; unsigned int last_qtail; } ; 615 struct rps_dev_flow_table { unsigned int mask; struct callback_head rcu; struct rps_dev_flow flows[0U]; } ; 666 struct netdev_rx_queue { struct rps_map *rps_map; struct rps_dev_flow_table *rps_flow_table; struct kobject kobj; struct net_device *dev; } ; 689 struct xps_map { unsigned int len; unsigned int alloc_len; struct callback_head rcu; u16 queues[0U]; } ; 702 struct xps_dev_maps { struct callback_head rcu; struct xps_map *cpu_map[0U]; } ; 713 struct netdev_tc_txq { u16 count; u16 offset; } ; 724 struct netdev_fcoe_hbainfo { char manufacturer[64U]; char serial_number[64U]; char hardware_version[64U]; char driver_version[64U]; char optionrom_version[64U]; char firmware_version[64U]; char model[256U]; char model_description[256U]; } ; 740 struct netdev_phys_port_id { unsigned char id[32U]; unsigned char id_len; } ; 753 struct net_device_ops { int (*ndo_init)(struct net_device *); void (*ndo_uninit)(struct net_device *); int (*ndo_open)(struct net_device *); int (*ndo_stop)(struct net_device *); netdev_tx_t (*ndo_start_xmit)(struct sk_buff *, struct net_device *); u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, void *, u16 (*)(struct net_device *, struct sk_buff *)); void (*ndo_change_rx_flags)(struct net_device *, int); void (*ndo_set_rx_mode)(struct net_device *); int (*ndo_set_mac_address)(struct net_device *, void *); int (*ndo_validate_addr)(struct net_device *); int (*ndo_do_ioctl)(struct net_device *, struct ifreq *, int); int (*ndo_set_config)(struct net_device *, struct ifmap *); int (*ndo_change_mtu)(struct net_device *, int); int (*ndo_neigh_setup)(struct net_device *, struct neigh_parms *); void (*ndo_tx_timeout)(struct net_device *); struct rtnl_link_stats64 * (*ndo_get_stats64)(struct net_device *, struct rtnl_link_stats64 *); struct net_device_stats * (*ndo_get_stats)(struct net_device *); int (*ndo_vlan_rx_add_vid)(struct net_device *, __be16 , u16 ); int (*ndo_vlan_rx_kill_vid)(struct net_device *, __be16 , u16 ); void (*ndo_poll_controller)(struct net_device *); int (*ndo_netpoll_setup)(struct net_device *, struct netpoll_info *); void (*ndo_netpoll_cleanup)(struct net_device *); int (*ndo_busy_poll)(struct napi_struct *); int (*ndo_set_vf_mac)(struct net_device *, int, u8 *); int (*ndo_set_vf_vlan)(struct net_device *, int, u16 , u8 ); int (*ndo_set_vf_rate)(struct net_device *, int, int, int); int (*ndo_set_vf_spoofchk)(struct net_device *, int, bool ); int (*ndo_get_vf_config)(struct net_device *, int, struct ifla_vf_info *); int (*ndo_set_vf_link_state)(struct net_device *, int, int); int (*ndo_set_vf_port)(struct net_device *, int, struct nlattr **); int (*ndo_get_vf_port)(struct net_device *, int, struct sk_buff *); int (*ndo_setup_tc)(struct net_device *, u8 ); int (*ndo_fcoe_enable)(struct net_device *); int (*ndo_fcoe_disable)(struct net_device *); int (*ndo_fcoe_ddp_setup)(struct net_device *, u16 , struct scatterlist *, unsigned int); int (*ndo_fcoe_ddp_done)(struct net_device *, u16 ); int (*ndo_fcoe_ddp_target)(struct net_device *, u16 , struct scatterlist *, unsigned int); int (*ndo_fcoe_get_hbainfo)(struct net_device *, struct netdev_fcoe_hbainfo *); int (*ndo_fcoe_get_wwn)(struct net_device *, u64 *, int); int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16 , u32 ); int (*ndo_add_slave)(struct net_device *, struct net_device *); int (*ndo_del_slave)(struct net_device *, struct net_device *); netdev_features_t (*ndo_fix_features)(struct net_device *, netdev_features_t ); int (*ndo_set_features)(struct net_device *, netdev_features_t ); int (*ndo_neigh_construct)(struct neighbour *); void (*ndo_neigh_destroy)(struct neighbour *); int (*ndo_fdb_add)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16 ); int (*ndo_fdb_del)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *); int (*ndo_fdb_dump)(struct sk_buff *, struct netlink_callback *, struct net_device *, struct net_device *, int); int (*ndo_bridge_setlink)(struct net_device *, struct nlmsghdr *); int (*ndo_bridge_getlink)(struct sk_buff *, u32 , u32 , struct net_device *, u32 ); int (*ndo_bridge_dellink)(struct net_device *, struct nlmsghdr *); int (*ndo_change_carrier)(struct net_device *, bool ); int (*ndo_get_phys_port_id)(struct net_device *, struct netdev_phys_port_id *); void (*ndo_add_vxlan_port)(struct net_device *, sa_family_t , __be16 ); void (*ndo_del_vxlan_port)(struct net_device *, sa_family_t , __be16 ); void * (*ndo_dfwd_add_station)(struct net_device *, struct net_device *); void (*ndo_dfwd_del_station)(struct net_device *, void *); netdev_tx_t (*ndo_dfwd_start_xmit)(struct sk_buff *, struct net_device *, void *); int (*ndo_get_lock_subclass)(struct net_device *); } ; 1189 struct __anonstruct_adj_list_243 { struct list_head upper; struct list_head lower; } ; 1189 struct __anonstruct_all_adj_list_244 { struct list_head upper; struct list_head lower; } ; 1189 struct iw_handler_def ; 1189 struct iw_public_data ; 1189 struct forwarding_accel_ops ; 1189 struct vlan_info ; 1189 struct tipc_bearer ; 1189 struct in_device ; 1189 struct dn_dev ; 1189 struct inet6_dev ; 1189 struct cpu_rmap ; 1189 struct pcpu_lstats ; 1189 struct pcpu_sw_netstats ; 1189 struct pcpu_dstats ; 1189 struct pcpu_vstats ; 1189 union __anonunion_ldv_40273_245 { void *ml_priv; struct pcpu_lstats *lstats; struct pcpu_sw_netstats *tstats; struct pcpu_dstats *dstats; struct pcpu_vstats *vstats; } ; 1189 struct garp_port ; 1189 struct mrp_port ; 1189 struct rtnl_link_ops ; 1189 struct net_device { char name[16U]; struct hlist_node name_hlist; char *ifalias; unsigned long mem_end; unsigned long mem_start; unsigned long base_addr; int irq; unsigned long state; struct list_head dev_list; struct list_head napi_list; struct list_head unreg_list; struct list_head close_list; struct __anonstruct_adj_list_243 adj_list; struct __anonstruct_all_adj_list_244 all_adj_list; netdev_features_t features; netdev_features_t hw_features; netdev_features_t wanted_features; netdev_features_t vlan_features; netdev_features_t hw_enc_features; netdev_features_t mpls_features; int ifindex; int iflink; struct net_device_stats stats; atomic_long_t rx_dropped; atomic_long_t tx_dropped; atomic_t carrier_changes; const struct iw_handler_def *wireless_handlers; struct iw_public_data *wireless_data; const struct net_device_ops *netdev_ops; const struct ethtool_ops *ethtool_ops; const struct forwarding_accel_ops *fwd_ops; const struct header_ops *header_ops; unsigned int flags; unsigned int priv_flags; unsigned short gflags; unsigned short padded; unsigned char operstate; unsigned char link_mode; unsigned char if_port; unsigned char dma; unsigned int mtu; unsigned short type; unsigned short hard_header_len; unsigned short needed_headroom; unsigned short needed_tailroom; unsigned char perm_addr[32U]; unsigned char addr_assign_type; unsigned char addr_len; unsigned short neigh_priv_len; unsigned short dev_id; unsigned short dev_port; spinlock_t addr_list_lock; struct netdev_hw_addr_list uc; struct netdev_hw_addr_list mc; struct netdev_hw_addr_list dev_addrs; struct kset *queues_kset; unsigned char name_assign_type; bool uc_promisc; unsigned int promiscuity; unsigned int allmulti; struct vlan_info *vlan_info; struct dsa_switch_tree *dsa_ptr; struct tipc_bearer *tipc_ptr; void *atalk_ptr; struct in_device *ip_ptr; struct dn_dev *dn_ptr; struct inet6_dev *ip6_ptr; void *ax25_ptr; struct wireless_dev *ieee80211_ptr; unsigned long last_rx; unsigned char *dev_addr; struct netdev_rx_queue *_rx; unsigned int num_rx_queues; unsigned int real_num_rx_queues; rx_handler_func_t *rx_handler; void *rx_handler_data; struct netdev_queue *ingress_queue; unsigned char broadcast[32U]; struct netdev_queue *_tx; unsigned int num_tx_queues; unsigned int real_num_tx_queues; struct Qdisc *qdisc; unsigned long tx_queue_len; spinlock_t tx_global_lock; struct xps_dev_maps *xps_maps; struct cpu_rmap *rx_cpu_rmap; unsigned long trans_start; int watchdog_timeo; struct timer_list watchdog_timer; int *pcpu_refcnt; struct list_head todo_list; struct hlist_node index_hlist; struct list_head link_watch_list; unsigned char reg_state; bool dismantle; unsigned short rtnl_link_state; void (*destructor)(struct net_device *); struct netpoll_info *npinfo; struct net *nd_net; union __anonunion_ldv_40273_245 ldv_40273; struct garp_port *garp_port; struct mrp_port *mrp_port; struct device dev; const struct attribute_group *sysfs_groups[4U]; const struct attribute_group *sysfs_rx_queue_group; const struct rtnl_link_ops *rtnl_link_ops; unsigned int gso_max_size; u16 gso_max_segs; const struct dcbnl_rtnl_ops *dcbnl_ops; u8 num_tc; struct netdev_tc_txq tc_to_txq[16U]; u8 prio_tc_map[16U]; unsigned int fcoe_ddp_xid; struct netprio_map *priomap; struct phy_device *phydev; struct lock_class_key *qdisc_tx_busylock; int group; struct pm_qos_request pm_qos_req; } ; 1929 struct pcpu_sw_netstats { u64 rx_packets; u64 rx_bytes; u64 tx_packets; u64 tx_bytes; struct u64_stats_sync syncp; } ; 548 struct res_counter { unsigned long long usage; unsigned long long max_usage; unsigned long long limit; unsigned long long soft_limit; unsigned long long failcnt; spinlock_t lock; struct res_counter *parent; } ; 222 struct kioctx ; 30 typedef int kiocb_cancel_fn(struct kiocb *); 31 union __anonunion_ki_obj_246 { void *user; struct task_struct *tsk; } ; 31 struct eventfd_ctx ; 31 struct kiocb { struct file *ki_filp; struct kioctx *ki_ctx; kiocb_cancel_fn *ki_cancel; void *private; union __anonunion_ki_obj_246 ki_obj; __u64 ki_user_data; loff_t ki_pos; size_t ki_nbytes; struct list_head ki_list; struct eventfd_ctx *ki_eventfd; } ; 100 struct sock_filter { __u16 code; __u8 jt; __u8 jf; __u32 k; } ; 49 struct bpf_insn { __u8 code; unsigned char dst_reg; unsigned char src_reg; __s16 off; __s32 imm; } ; 316 struct sock_fprog_kern { u16 len; struct sock_filter *filter; } ; 322 union __anonunion_ldv_42065_247 { struct sock_filter insns[0U]; struct bpf_insn insnsi[0U]; struct work_struct work; } ; 322 struct bpf_prog { unsigned char jited; unsigned int len; struct sock_fprog_kern *orig_prog; unsigned int (*bpf_func)(const struct sk_buff *, const struct bpf_insn *); union __anonunion_ldv_42065_247 ldv_42065; } ; 339 struct sk_filter { atomic_t refcnt; struct callback_head rcu; struct bpf_prog *prog; } ; 32 struct poll_table_struct { void (*_qproc)(struct file *, wait_queue_head_t *, struct poll_table_struct *); unsigned long _key; } ; 114 struct nla_policy { u16 type; u16 len; } ; 25 struct rtnl_link_ops { struct list_head list; const char *kind; size_t priv_size; void (*setup)(struct net_device *); int maxtype; const struct nla_policy *policy; int (*validate)(struct nlattr **, struct nlattr **); int (*newlink)(struct net *, struct net_device *, struct nlattr **, struct nlattr **); int (*changelink)(struct net_device *, struct nlattr **, struct nlattr **); void (*dellink)(struct net_device *, struct list_head *); size_t (*get_size)(const struct net_device *); int (*fill_info)(struct sk_buff *, const struct net_device *); size_t (*get_xstats_size)(const struct net_device *); int (*fill_xstats)(struct sk_buff *, const struct net_device *); unsigned int (*get_num_tx_queues)(); unsigned int (*get_num_rx_queues)(); int slave_maxtype; const struct nla_policy *slave_policy; int (*slave_validate)(struct nlattr **, struct nlattr **); int (*slave_changelink)(struct net_device *, struct net_device *, struct nlattr **, struct nlattr **); size_t (*get_slave_size)(const struct net_device *, const struct net_device *); int (*fill_slave_info)(struct sk_buff *, const struct net_device *, const struct net_device *); } ; 168 struct neigh_table ; 168 struct neigh_parms { struct net *net; struct net_device *dev; struct neigh_parms *next; int (*neigh_setup)(struct neighbour *); void (*neigh_cleanup)(struct neighbour *); struct neigh_table *tbl; void *sysctl_table; int dead; atomic_t refcnt; struct callback_head callback_head; int reachable_time; int data[12U]; unsigned long data_state[1U]; } ; 111 struct neigh_statistics { unsigned long allocs; unsigned long destroys; unsigned long hash_grows; unsigned long res_failed; unsigned long lookups; unsigned long hits; unsigned long rcv_probes_mcast; unsigned long rcv_probes_ucast; unsigned long periodic_gc_runs; unsigned long forced_gc_runs; unsigned long unres_discards; } ; 130 struct neigh_ops ; 130 struct neighbour { struct neighbour *next; struct neigh_table *tbl; struct neigh_parms *parms; unsigned long confirmed; unsigned long updated; rwlock_t lock; atomic_t refcnt; struct sk_buff_head arp_queue; unsigned int arp_queue_len_bytes; struct timer_list timer; unsigned long used; atomic_t probes; __u8 flags; __u8 nud_state; __u8 type; __u8 dead; seqlock_t ha_lock; unsigned char ha[32U]; struct hh_cache hh; int (*output)(struct neighbour *, struct sk_buff *); const struct neigh_ops *ops; struct callback_head rcu; struct net_device *dev; u8 primary_key[0U]; } ; 159 struct neigh_ops { int family; void (*solicit)(struct neighbour *, struct sk_buff *); void (*error_report)(struct neighbour *, struct sk_buff *); int (*output)(struct neighbour *, struct sk_buff *); int (*connected_output)(struct neighbour *, struct sk_buff *); } ; 167 struct pneigh_entry { struct pneigh_entry *next; struct net *net; struct net_device *dev; u8 flags; u8 key[0U]; } ; 177 struct neigh_hash_table { struct neighbour **hash_buckets; unsigned int hash_shift; __u32 hash_rnd[4U]; struct callback_head rcu; } ; 190 struct neigh_table { struct neigh_table *next; int family; int entry_size; int key_len; __u32 (*hash)(const void *, const struct net_device *, __u32 *); int (*constructor)(struct neighbour *); int (*pconstructor)(struct pneigh_entry *); void (*pdestructor)(struct pneigh_entry *); void (*proxy_redo)(struct sk_buff *); char *id; struct neigh_parms parms; int gc_interval; int gc_thresh1; int gc_thresh2; int gc_thresh3; unsigned long last_flush; struct delayed_work gc_work; struct timer_list proxy_timer; struct sk_buff_head proxy_queue; atomic_t entries; rwlock_t lock; unsigned long last_rand; struct neigh_statistics *stats; struct neigh_hash_table *nht; struct pneigh_entry **phash_buckets; } ; 461 struct dn_route ; 461 union __anonunion_ldv_43574_252 { struct dst_entry *next; struct rtable *rt_next; struct rt6_info *rt6_next; struct dn_route *dn_next; } ; 461 struct dst_entry { struct callback_head callback_head; struct dst_entry *child; struct net_device *dev; struct dst_ops *ops; unsigned long _metrics; unsigned long expires; struct dst_entry *path; struct dst_entry *from; struct xfrm_state *xfrm; int (*input)(struct sk_buff *); int (*output)(struct sock *, struct sk_buff *); unsigned short flags; unsigned short pending_confirm; short error; short obsolete; unsigned short header_len; unsigned short trailer_len; __u32 tclassid; long __pad_to_align_refcnt[2U]; atomic_t __refcnt; int __use; unsigned long lastuse; union __anonunion_ldv_43574_252 ldv_43574; } ; 124 struct __anonstruct_socket_lock_t_253 { spinlock_t slock; int owned; wait_queue_head_t wq; struct lockdep_map dep_map; } ; 124 typedef struct __anonstruct_socket_lock_t_253 socket_lock_t; 124 struct proto ; 130 typedef __u32 __portpair; 131 typedef __u64 __addrpair; 132 struct __anonstruct_ldv_43846_255 { __be32 skc_daddr; __be32 skc_rcv_saddr; } ; 132 union __anonunion_ldv_43847_254 { __addrpair skc_addrpair; struct __anonstruct_ldv_43846_255 ldv_43846; } ; 132 union __anonunion_ldv_43851_256 { unsigned int skc_hash; __u16 skc_u16hashes[2U]; } ; 132 struct __anonstruct_ldv_43857_258 { __be16 skc_dport; __u16 skc_num; } ; 132 union __anonunion_ldv_43858_257 { __portpair skc_portpair; struct __anonstruct_ldv_43857_258 ldv_43857; } ; 132 union __anonunion_ldv_43868_259 { struct hlist_node skc_bind_node; struct hlist_nulls_node skc_portaddr_node; } ; 132 union __anonunion_ldv_43877_260 { struct hlist_node skc_node; struct hlist_nulls_node skc_nulls_node; } ; 132 struct sock_common { union __anonunion_ldv_43847_254 ldv_43847; union __anonunion_ldv_43851_256 ldv_43851; union __anonunion_ldv_43858_257 ldv_43858; unsigned short skc_family; volatile unsigned char skc_state; unsigned char skc_reuse; unsigned char skc_reuseport; unsigned char skc_ipv6only; int skc_bound_dev_if; union __anonunion_ldv_43868_259 ldv_43868; struct proto *skc_prot; struct net *skc_net; struct in6_addr skc_v6_daddr; struct in6_addr skc_v6_rcv_saddr; int skc_dontcopy_begin[0U]; union __anonunion_ldv_43877_260 ldv_43877; int skc_tx_queue_mapping; atomic_t skc_refcnt; int skc_dontcopy_end[0U]; } ; 218 struct cg_proto ; 219 struct __anonstruct_sk_backlog_261 { atomic_t rmem_alloc; int len; struct sk_buff *head; struct sk_buff *tail; } ; 219 struct sock { struct sock_common __sk_common; socket_lock_t sk_lock; struct sk_buff_head sk_receive_queue; struct __anonstruct_sk_backlog_261 sk_backlog; int sk_forward_alloc; __u32 sk_rxhash; __u32 sk_txhash; unsigned int sk_napi_id; unsigned int sk_ll_usec; atomic_t sk_drops; int sk_rcvbuf; struct sk_filter *sk_filter; struct socket_wq *sk_wq; struct xfrm_policy *sk_policy[2U]; unsigned long sk_flags; struct dst_entry *sk_rx_dst; struct dst_entry *sk_dst_cache; spinlock_t sk_dst_lock; atomic_t sk_wmem_alloc; atomic_t sk_omem_alloc; int sk_sndbuf; struct sk_buff_head sk_write_queue; unsigned char sk_shutdown; unsigned char sk_no_check_tx; unsigned char sk_no_check_rx; unsigned char sk_userlocks; unsigned char sk_protocol; unsigned short sk_type; int sk_wmem_queued; gfp_t sk_allocation; u32 sk_pacing_rate; u32 sk_max_pacing_rate; netdev_features_t sk_route_caps; netdev_features_t sk_route_nocaps; int sk_gso_type; unsigned int sk_gso_max_size; u16 sk_gso_max_segs; int sk_rcvlowat; unsigned long sk_lingertime; struct sk_buff_head sk_error_queue; struct proto *sk_prot_creator; rwlock_t sk_callback_lock; int sk_err; int sk_err_soft; unsigned short sk_ack_backlog; unsigned short sk_max_ack_backlog; __u32 sk_priority; __u32 sk_cgrp_prioidx; struct pid *sk_peer_pid; const struct cred *sk_peer_cred; long sk_rcvtimeo; long sk_sndtimeo; void *sk_protinfo; struct timer_list sk_timer; ktime_t sk_stamp; u16 sk_tsflags; u32 sk_tskey; struct socket *sk_socket; void *sk_user_data; struct page_frag sk_frag; struct sk_buff *sk_send_head; __s32 sk_peek_off; int sk_write_pending; void *sk_security; __u32 sk_mark; u32 sk_classid; struct cg_proto *sk_cgrp; void (*sk_state_change)(struct sock *); void (*sk_data_ready)(struct sock *); void (*sk_write_space)(struct sock *); void (*sk_error_report)(struct sock *); int (*sk_backlog_rcv)(struct sock *, struct sk_buff *); void (*sk_destruct)(struct sock *); } ; 919 struct request_sock_ops ; 920 struct timewait_sock_ops ; 921 struct inet_hashinfo ; 922 struct raw_hashinfo ; 937 struct udp_table ; 937 union __anonunion_h_262 { struct inet_hashinfo *hashinfo; struct udp_table *udp_table; struct raw_hashinfo *raw_hash; } ; 937 struct proto { void (*close)(struct sock *, long); int (*connect)(struct sock *, struct sockaddr *, int); int (*disconnect)(struct sock *, int); struct sock * (*accept)(struct sock *, int, int *); int (*ioctl)(struct sock *, int, unsigned long); int (*init)(struct sock *); void (*destroy)(struct sock *); void (*shutdown)(struct sock *, int); int (*setsockopt)(struct sock *, int, int, char *, unsigned int); int (*getsockopt)(struct sock *, int, int, char *, int *); int (*compat_setsockopt)(struct sock *, int, int, char *, unsigned int); int (*compat_getsockopt)(struct sock *, int, int, char *, int *); int (*compat_ioctl)(struct sock *, unsigned int, unsigned long); int (*sendmsg)(struct kiocb *, struct sock *, struct msghdr *, size_t ); int (*recvmsg)(struct kiocb *, struct sock *, struct msghdr *, size_t , int, int, int *); int (*sendpage)(struct sock *, struct page *, int, size_t , int); int (*bind)(struct sock *, struct sockaddr *, int); int (*backlog_rcv)(struct sock *, struct sk_buff *); void (*release_cb)(struct sock *); void (*hash)(struct sock *); void (*unhash)(struct sock *); void (*rehash)(struct sock *); int (*get_port)(struct sock *, unsigned short); void (*clear_sk)(struct sock *, int); unsigned int inuse_idx; bool (*stream_memory_free)(const struct sock *); void (*enter_memory_pressure)(struct sock *); atomic_long_t *memory_allocated; struct percpu_counter *sockets_allocated; int *memory_pressure; long *sysctl_mem; int *sysctl_wmem; int *sysctl_rmem; int max_header; bool no_autobind; struct kmem_cache *slab; unsigned int obj_size; int slab_flags; struct percpu_counter *orphan_count; struct request_sock_ops *rsk_prot; struct timewait_sock_ops *twsk_prot; union __anonunion_h_262 h; struct module *owner; char name[32U]; struct list_head node; int (*init_cgroup)(struct mem_cgroup *, struct cgroup_subsys *); void (*destroy_cgroup)(struct mem_cgroup *); struct cg_proto * (*proto_cgroup)(struct mem_cgroup *); } ; 1061 struct cg_proto { struct res_counter memory_allocated; struct percpu_counter sockets_allocated; int memory_pressure; long sysctl_mem[3U]; unsigned long flags; struct mem_cgroup *memcg; } ; 169 struct request_sock_ops { int family; int obj_size; struct kmem_cache *slab; char *slab_name; int (*rtx_syn_ack)(struct sock *, struct request_sock *); void (*send_ack)(struct sock *, struct sk_buff *, struct request_sock *); void (*send_reset)(struct sock *, struct sk_buff *); void (*destructor)(struct request_sock *); void (*syn_ack_timeout)(struct sock *, struct request_sock *); } ; 47 struct request_sock { struct sock_common __req_common; struct request_sock *dl_next; u16 mss; u8 num_retrans; unsigned char cookie_ts; unsigned char num_timeout; u32 window_clamp; u32 rcv_wnd; u32 ts_recent; unsigned long expires; const struct request_sock_ops *rsk_ops; struct sock *sk; u32 secid; u32 peer_secid; } ; 373 struct timewait_sock_ops { struct kmem_cache *twsk_slab; char *twsk_slab_name; unsigned int twsk_obj_size; int (*twsk_unique)(struct sock *, struct sock *, void *); void (*twsk_destructor)(struct sock *); } ; 167 struct ipv6_devconf { __s32 forwarding; __s32 hop_limit; __s32 mtu6; __s32 accept_ra; __s32 accept_redirects; __s32 autoconf; __s32 dad_transmits; __s32 rtr_solicits; __s32 rtr_solicit_interval; __s32 rtr_solicit_delay; __s32 force_mld_version; __s32 mldv1_unsolicited_report_interval; __s32 mldv2_unsolicited_report_interval; __s32 use_tempaddr; __s32 temp_valid_lft; __s32 temp_prefered_lft; __s32 regen_max_retry; __s32 max_desync_factor; __s32 max_addresses; __s32 accept_ra_defrtr; __s32 accept_ra_pinfo; __s32 accept_ra_rtr_pref; __s32 rtr_probe_interval; __s32 accept_ra_rt_info_max_plen; __s32 proxy_ndp; __s32 accept_source_route; __s32 accept_ra_from_local; __s32 optimistic_dad; __s32 mc_forwarding; __s32 disable_ipv6; __s32 accept_dad; __s32 force_tllao; __s32 ndisc_notify; __s32 suppress_frag_ndisc; void *sysctl; } ; 101 struct ip6_sf_list { struct ip6_sf_list *sf_next; struct in6_addr sf_addr; unsigned long sf_count[2U]; unsigned char sf_gsresp; unsigned char sf_oldin; unsigned char sf_crcount; } ; 110 struct ifmcaddr6 { struct in6_addr mca_addr; struct inet6_dev *idev; struct ifmcaddr6 *next; struct ip6_sf_list *mca_sources; struct ip6_sf_list *mca_tomb; unsigned int mca_sfmode; unsigned char mca_crcount; unsigned long mca_sfcount[2U]; struct timer_list mca_timer; unsigned int mca_flags; int mca_users; atomic_t mca_refcnt; spinlock_t mca_lock; unsigned long mca_cstamp; unsigned long mca_tstamp; } ; 142 struct ifacaddr6 { struct in6_addr aca_addr; struct inet6_dev *aca_idev; struct rt6_info *aca_rt; struct ifacaddr6 *aca_next; int aca_users; atomic_t aca_refcnt; spinlock_t aca_lock; unsigned long aca_cstamp; unsigned long aca_tstamp; } ; 154 struct ipv6_devstat { struct proc_dir_entry *proc_dir_entry; struct ipstats_mib *ipv6; struct icmpv6_mib_device *icmpv6dev; struct icmpv6msg_mib_device *icmpv6msgdev; } ; 165 struct inet6_dev { struct net_device *dev; struct list_head addr_list; struct ifmcaddr6 *mc_list; struct ifmcaddr6 *mc_tomb; spinlock_t mc_lock; unsigned char mc_qrv; unsigned char mc_gq_running; unsigned char mc_ifc_count; unsigned char mc_dad_count; unsigned long mc_v1_seen; unsigned long mc_qi; unsigned long mc_qri; unsigned long mc_maxdelay; struct timer_list mc_gq_timer; struct timer_list mc_ifc_timer; struct timer_list mc_dad_timer; struct ifacaddr6 *ac_list; rwlock_t lock; atomic_t refcnt; __u32 if_flags; int dead; u8 rndid[8U]; struct timer_list regen_timer; struct list_head tempaddr_list; struct in6_addr token; struct neigh_parms *nd_parms; struct ipv6_devconf cnf; struct ipv6_devstat stats; struct timer_list rs_timer; __u8 rs_probes; __u8 addr_gen_mode; unsigned long tstamp; struct callback_head rcu; } ; 917 union __anonunion_ldv_48246_277 { __be32 a4; __be32 a6[4U]; } ; 917 struct inetpeer_addr_base { union __anonunion_ldv_48246_277 ldv_48246; } ; 24 struct inetpeer_addr { struct inetpeer_addr_base addr; __u16 family; } ; 29 union __anonunion_ldv_48261_278 { struct list_head gc_list; struct callback_head gc_rcu; } ; 29 struct __anonstruct_ldv_48265_280 { atomic_t rid; } ; 29 union __anonunion_ldv_48268_279 { struct __anonstruct_ldv_48265_280 ldv_48265; struct callback_head rcu; struct inet_peer *gc_next; } ; 29 struct inet_peer { struct inet_peer *avl_left; struct inet_peer *avl_right; struct inetpeer_addr daddr; __u32 avl_height; u32 metrics[15U]; u32 rate_tokens; unsigned long rate_last; union __anonunion_ldv_48261_278 ldv_48261; union __anonunion_ldv_48268_279 ldv_48268; __u32 dtime; atomic_t refcnt; } ; 60 struct inet_peer_base { struct inet_peer *root; seqlock_t lock; u32 flush_seq; int total; } ; 50 struct rtable { struct dst_entry dst; int rt_genid; unsigned int rt_flags; __u16 rt_type; __u8 rt_is_input; __u8 rt_uses_gateway; int rt_iif; __be32 rt_gateway; u32 rt_pmtu; struct list_head rt_uncached; } ; 315 struct inet_ehash_bucket { struct hlist_nulls_head chain; } ; 95 struct inet_bind_hashbucket { spinlock_t lock; struct hlist_head chain; } ; 103 struct inet_listen_hashbucket { spinlock_t lock; struct hlist_nulls_head head; } ; 115 struct inet_hashinfo { struct inet_ehash_bucket *ehash; spinlock_t *ehash_locks; unsigned int ehash_mask; unsigned int ehash_locks_mask; struct inet_bind_hashbucket *bhash; unsigned int bhash_size; struct kmem_cache *bind_bucket_cachep; struct inet_listen_hashbucket listening_hash[32U]; atomic_t bsockets; } ; 14 struct ceph_pagelist_cursor { struct ceph_pagelist *pl; struct list_head *page_lru; size_t room; } ; 104 struct ceph_mon_request_header { __le64 have_version; __le16 session_mon; __le64 session_mon_tid; } ; 177 struct ceph_mon_statfs { struct ceph_mon_request_header monhdr; struct ceph_fsid fsid; } ; 182 struct ceph_statfs { __le64 kb; __le64 kb_used; __le64 kb_avail; __le64 num_objects; } ; 187 struct ceph_mon_statfs_reply { struct ceph_fsid fsid; __le64 version; struct ceph_statfs st; } ; 195 struct ceph_mon_poolop { struct ceph_mon_request_header monhdr; struct ceph_fsid fsid; __le32 pool; __le32 op; __le64 auid; __le64 snapid; __le32 name_len; } ; 205 struct ceph_mon_poolop_reply { struct ceph_mon_request_header monhdr; struct ceph_fsid fsid; __le32 reply_code; __le32 epoch; char has_data; char data[0U]; } ; 233 struct ceph_mon_subscribe_item { __le64 have_version; __le64 have; __u8 onetime; } ; 240 struct ceph_mon_subscribe_ack { __le32 duration; struct ceph_fsid fsid; } ; 24 struct ceph_mon_generic_request ; 41 struct ceph_mon_generic_request { struct kref kref; u64 tid; struct rb_node node; int result; void *buf; int buf_len; struct completion completion; struct ceph_msg *request; struct ceph_msg *reply; } ; 112 struct ceph_eversion { __le32 epoch; __le64 version; } ; 375 struct __anonstruct_extent_205 { __le64 offset; __le64 length; __le64 truncate_size; __le32 truncate_seq; } ; 375 struct __anonstruct_xattr_206 { __le32 name_len; __le32 value_len; __u8 cmp_op; __u8 cmp_mode; } ; 375 struct __anonstruct_cls_207 { __u8 class_len; __u8 method_len; __u8 argc; __le32 indata_len; } ; 375 struct __anonstruct_pgls_208 { __le64 cookie; __le64 count; } ; 375 struct __anonstruct_snap_209 { __le64 snapid; } ; 375 struct __anonstruct_watch_210 { __le64 cookie; __le64 ver; __u8 flag; } ; 375 struct __anonstruct_clonerange_211 { __le64 offset; __le64 length; __le64 src_offset; } ; 375 struct __anonstruct_alloc_hint_212 { __le64 expected_object_size; __le64 expected_write_size; } ; 375 union __anonunion_ldv_29384_204 { struct __anonstruct_extent_205 extent; struct __anonstruct_xattr_206 xattr; struct __anonstruct_cls_207 cls; struct __anonstruct_pgls_208 pgls; struct __anonstruct_snap_209 snap; struct __anonstruct_watch_210 watch; struct __anonstruct_clonerange_211 clonerange; struct __anonstruct_alloc_hint_212 alloc_hint; } ; 375 struct ceph_osd_op { __le16 op; __le32 flags; union __anonunion_ldv_29384_204 ldv_29384; __le32 payload_len; } ; 434 struct ceph_file_layout { __le32 fl_stripe_unit; __le32 fl_stripe_count; __le32 fl_object_size; __le32 fl_cas_hash; __le32 fl_object_stripe_unit; __le32 fl_unused; __le32 fl_pg_pool; } ; 12 struct ceph_vino { u64 ino; u64 snap; } ; 200 struct ceph_pg { uint64_t pool; uint32_t seed; } ; 26 struct ceph_pg_pool_info { struct rb_node node; s64 id; u8 type; u8 size; u8 crush_ruleset; u8 object_hash; u32 pg_num; u32 pgp_num; int pg_num_mask; int pgp_num_mask; s64 read_tier; s64 write_tier; u64 flags; char *name; } ; 56 struct ceph_object_locator { s64 pool; } ; 59 struct ceph_object_id { char name[100U]; int name_len; } ; 74 struct ceph_snap_context ; 75 struct ceph_osd_request ; 27 struct ceph_osd { atomic_t o_ref; struct ceph_osd_client *o_osdc; int o_osd; int o_incarnation; struct rb_node o_node; struct ceph_connection o_con; struct list_head o_requests; struct list_head o_linger_requests; struct list_head o_osd_lru; struct ceph_auth_handshake o_auth; unsigned long lru_ttl; int o_marked_for_keepalive; struct list_head o_keepalive_item; } ; 44 enum ceph_osd_data_type { CEPH_OSD_DATA_TYPE_NONE = 0, CEPH_OSD_DATA_TYPE_PAGES = 1, CEPH_OSD_DATA_TYPE_PAGELIST = 2, CEPH_OSD_DATA_TYPE_BIO = 3 } ; 51 struct __anonstruct_ldv_31142_233 { struct page **pages; u64 length; u32 alignment; bool pages_from_pool; bool own_pages; } ; 51 struct __anonstruct_ldv_31147_234 { struct bio *bio; size_t bio_length; } ; 51 union __anonunion_ldv_31148_232 { struct __anonstruct_ldv_31142_233 ldv_31142; struct ceph_pagelist *pagelist; struct __anonstruct_ldv_31147_234 ldv_31147; } ; 51 struct ceph_osd_data { enum ceph_osd_data_type type; union __anonunion_ldv_31148_232 ldv_31148; } ; 75 struct __anonstruct_extent_236 { u64 offset; u64 length; u64 truncate_size; u32 truncate_seq; struct ceph_osd_data osd_data; } ; 75 struct __anonstruct_cls_237 { const char *class_name; const char *method_name; struct ceph_osd_data request_info; struct ceph_osd_data request_data; struct ceph_osd_data response_data; __u8 class_len; __u8 method_len; __u8 argc; } ; 75 struct __anonstruct_watch_238 { u64 cookie; u64 ver; u32 prot_ver; u32 timeout; __u8 flag; } ; 75 struct __anonstruct_alloc_hint_239 { u64 expected_object_size; u64 expected_write_size; } ; 75 union __anonunion_ldv_31183_235 { struct ceph_osd_data raw_data_in; struct __anonstruct_extent_236 extent; struct __anonstruct_cls_237 cls; struct __anonstruct_watch_238 watch; struct __anonstruct_alloc_hint_239 alloc_hint; } ; 75 struct ceph_osd_req_op { u16 op; u32 flags; u32 payload_len; union __anonunion_ldv_31183_235 ldv_31183; } ; 112 struct ceph_osd_request { u64 r_tid; struct rb_node r_node; struct list_head r_req_lru_item; struct list_head r_osd_item; struct list_head r_linger_item; struct list_head r_linger_osd_item; struct ceph_osd *r_osd; struct ceph_pg r_pgid; int r_pg_osds[16U]; int r_num_pg_osds; struct ceph_msg *r_request; struct ceph_msg *r_reply; int r_flags; u32 r_sent; unsigned int r_num_ops; struct ceph_osd_req_op r_ops[3U]; __le32 *r_request_osdmap_epoch; __le32 *r_request_flags; __le64 *r_request_pool; void *r_request_pgid; __le32 *r_request_attempts; bool r_paused; struct ceph_eversion *r_request_reassert_version; int r_result; int r_reply_op_len[3U]; s32 r_reply_op_result[3U]; int r_got_reply; int r_linger; struct ceph_osd_client *r_osdc; struct kref r_kref; bool r_mempool; struct completion r_completion; struct completion r_safe_completion; void (*r_callback)(struct ceph_osd_request *, struct ceph_msg *); void (*r_unsafe_callback)(struct ceph_osd_request *, bool ); struct ceph_eversion r_reassert_version; struct list_head r_unsafe_item; struct inode *r_inode; void *r_priv; struct ceph_object_locator r_base_oloc; struct ceph_object_id r_base_oid; struct ceph_object_locator r_target_oloc; struct ceph_object_id r_target_oid; u64 r_snapid; unsigned long r_stamp; struct ceph_snap_context *r_snapc; } ; 171 struct ceph_request_redirect { struct ceph_object_locator oloc; } ; 175 struct ceph_osd_event { u64 cookie; int one_shot; struct ceph_osd_client *osdc; void (*cb)(u64 , u64 , u8 , void *); void *data; struct rb_node node; struct list_head osd_node; struct kref kref; } ; 186 struct ceph_osd_event_work { struct work_struct work; struct ceph_osd_event *event; u64 ver; u64 notify_id; u8 opcode; } ; 137 struct ceph_snap_context { atomic_t nref; u64 seq; u32 num_snaps; u64 snaps[]; } ; 29 typedef long long __s64; 126 struct crush_bucket_uniform { struct crush_bucket h; __u32 item_weight; } ; 131 struct crush_bucket_list { struct crush_bucket h; __u32 *item_weights; __u32 *sum_weights; } ; 137 struct crush_bucket_tree { struct crush_bucket h; __u8 num_nodes; __u32 *node_weights; } ; 145 struct crush_bucket_straw { struct crush_bucket h; __u32 *item_weights; __u32 *straws; } ; 71 struct __anonstruct_pg_temp_228 { int len; int osds[]; } ; 71 struct __anonstruct_primary_temp_229 { int osd; } ; 71 union __anonunion_ldv_30308_227 { struct __anonstruct_pg_temp_228 pg_temp; struct __anonstruct_primary_temp_229 primary_temp; } ; 71 struct ceph_pg_mapping { struct rb_node node; struct ceph_pg pgid; union __anonunion_ldv_30308_227 ldv_30308; } ; 114 struct ceph_none_authorizer { char buf[128U]; int buf_len; char reply_buf[0U]; } ; 19 struct ceph_auth_none_info { bool starting; bool built_authorizer; struct ceph_none_authorizer au; } ; 109 struct crypto_ablkcipher ; 110 struct crypto_async_request ; 111 struct crypto_aead ; 112 struct crypto_blkcipher ; 113 struct crypto_hash ; 114 struct crypto_rng ; 115 struct crypto_tfm ; 116 struct crypto_type ; 117 struct aead_givcrypt_request ; 118 struct skcipher_givcrypt_request ; 129 struct crypto_async_request { struct list_head list; void (*complete)(struct crypto_async_request *, int); void *data; struct crypto_tfm *tfm; u32 flags; } ; 138 struct ablkcipher_request { struct crypto_async_request base; unsigned int nbytes; void *info; struct scatterlist *src; struct scatterlist *dst; void *__ctx[]; } ; 151 struct aead_request { struct crypto_async_request base; unsigned int assoclen; unsigned int cryptlen; u8 *iv; struct scatterlist *assoc; struct scatterlist *src; struct scatterlist *dst; void *__ctx[]; } ; 177 struct blkcipher_desc { struct crypto_blkcipher *tfm; void *info; u32 flags; } ; 191 struct hash_desc { struct crypto_hash *tfm; u32 flags; } ; 196 struct ablkcipher_alg { int (*setkey)(struct crypto_ablkcipher *, const u8 *, unsigned int); int (*encrypt)(struct ablkcipher_request *); int (*decrypt)(struct ablkcipher_request *); int (*givencrypt)(struct skcipher_givcrypt_request *); int (*givdecrypt)(struct skcipher_givcrypt_request *); const char *geniv; unsigned int min_keysize; unsigned int max_keysize; unsigned int ivsize; } ; 215 struct aead_alg { int (*setkey)(struct crypto_aead *, const u8 *, unsigned int); int (*setauthsize)(struct crypto_aead *, unsigned int); int (*encrypt)(struct aead_request *); int (*decrypt)(struct aead_request *); int (*givencrypt)(struct aead_givcrypt_request *); int (*givdecrypt)(struct aead_givcrypt_request *); const char *geniv; unsigned int ivsize; unsigned int maxauthsize; } ; 230 struct blkcipher_alg { int (*setkey)(struct crypto_tfm *, const u8 *, unsigned int); int (*encrypt)(struct blkcipher_desc *, struct scatterlist *, struct scatterlist *, unsigned int); int (*decrypt)(struct blkcipher_desc *, struct scatterlist *, struct scatterlist *, unsigned int); const char *geniv; unsigned int min_keysize; unsigned int max_keysize; unsigned int ivsize; } ; 247 struct cipher_alg { unsigned int cia_min_keysize; unsigned int cia_max_keysize; int (*cia_setkey)(struct crypto_tfm *, const u8 *, unsigned int); void (*cia_encrypt)(struct crypto_tfm *, u8 *, const u8 *); void (*cia_decrypt)(struct crypto_tfm *, u8 *, const u8 *); } ; 256 struct compress_alg { int (*coa_compress)(struct crypto_tfm *, const u8 *, unsigned int, u8 *, unsigned int *); int (*coa_decompress)(struct crypto_tfm *, const u8 *, unsigned int, u8 *, unsigned int *); } ; 262 struct rng_alg { int (*rng_make_random)(struct crypto_rng *, u8 *, unsigned int); int (*rng_reset)(struct crypto_rng *, u8 *, unsigned int); unsigned int seedsize; } ; 271 union __anonunion_cra_u_152 { struct ablkcipher_alg ablkcipher; struct aead_alg aead; struct blkcipher_alg blkcipher; struct cipher_alg cipher; struct compress_alg compress; struct rng_alg rng; } ; 271 struct crypto_alg { struct list_head cra_list; struct list_head cra_users; u32 cra_flags; unsigned int cra_blocksize; unsigned int cra_ctxsize; unsigned int cra_alignmask; int cra_priority; atomic_t cra_refcnt; char cra_name[64U]; char cra_driver_name[64U]; const struct crypto_type *cra_type; union __anonunion_cra_u_152 cra_u; int (*cra_init)(struct crypto_tfm *); void (*cra_exit)(struct crypto_tfm *); void (*cra_destroy)(struct crypto_alg *); struct module *cra_module; } ; 325 struct ablkcipher_tfm { int (*setkey)(struct crypto_ablkcipher *, const u8 *, unsigned int); int (*encrypt)(struct ablkcipher_request *); int (*decrypt)(struct ablkcipher_request *); int (*givencrypt)(struct skcipher_givcrypt_request *); int (*givdecrypt)(struct skcipher_givcrypt_request *); struct crypto_ablkcipher *base; unsigned int ivsize; unsigned int reqsize; } ; 345 struct aead_tfm { int (*setkey)(struct crypto_aead *, const u8 *, unsigned int); int (*encrypt)(struct aead_request *); int (*decrypt)(struct aead_request *); int (*givencrypt)(struct aead_givcrypt_request *); int (*givdecrypt)(struct aead_givcrypt_request *); struct crypto_aead *base; unsigned int ivsize; unsigned int authsize; unsigned int reqsize; } ; 360 struct blkcipher_tfm { void *iv; int (*setkey)(struct crypto_tfm *, const u8 *, unsigned int); int (*encrypt)(struct blkcipher_desc *, struct scatterlist *, struct scatterlist *, unsigned int); int (*decrypt)(struct blkcipher_desc *, struct scatterlist *, struct scatterlist *, unsigned int); } ; 369 struct cipher_tfm { int (*cit_setkey)(struct crypto_tfm *, const u8 *, unsigned int); void (*cit_encrypt_one)(struct crypto_tfm *, u8 *, const u8 *); void (*cit_decrypt_one)(struct crypto_tfm *, u8 *, const u8 *); } ; 377 struct hash_tfm { int (*init)(struct hash_desc *); int (*update)(struct hash_desc *, struct scatterlist *, unsigned int); int (*final)(struct hash_desc *, u8 *); int (*digest)(struct hash_desc *, struct scatterlist *, unsigned int, u8 *); int (*setkey)(struct crypto_hash *, const u8 *, unsigned int); unsigned int digestsize; } ; 389 struct compress_tfm { int (*cot_compress)(struct crypto_tfm *, const u8 *, unsigned int, u8 *, unsigned int *); int (*cot_decompress)(struct crypto_tfm *, const u8 *, unsigned int, u8 *, unsigned int *); } ; 396 struct rng_tfm { int (*rng_gen_random)(struct crypto_rng *, u8 *, unsigned int); int (*rng_reset)(struct crypto_rng *, u8 *, unsigned int); } ; 404 union __anonunion_crt_u_153 { struct ablkcipher_tfm ablkcipher; struct aead_tfm aead; struct blkcipher_tfm blkcipher; struct cipher_tfm cipher; struct hash_tfm hash; struct compress_tfm compress; struct rng_tfm rng; } ; 404 struct crypto_tfm { u32 crt_flags; union __anonunion_crt_u_153 crt_u; void (*exit)(struct crypto_tfm *); struct crypto_alg *__crt_alg; void *__crt_ctx[]; } ; 433 struct crypto_ablkcipher { struct crypto_tfm base; } ; 437 struct crypto_aead { struct crypto_tfm base; } ; 441 struct crypto_blkcipher { struct crypto_tfm base; } ; 453 struct crypto_hash { struct crypto_tfm base; } ; 457 struct crypto_rng { struct crypto_tfm base; } ; 357 struct key_construction { struct key *key; struct key *authkey; } ; 28 struct key_preparsed_payload { char *description; void *type_data[2U]; void *payload[2U]; const void *data; size_t datalen; size_t quotalen; time_t expiry; bool trusted; } ; 53 struct key_type { const char *name; size_t def_datalen; unsigned int def_lookup_type; int (*vet_description)(const char *); int (*preparse)(struct key_preparsed_payload *); void (*free_preparse)(struct key_preparsed_payload *); int (*instantiate)(struct key *, struct key_preparsed_payload *); int (*update)(struct key *, struct key_preparsed_payload *); int (*match)(const struct key *, const void *); void (*revoke)(struct key *); void (*destroy)(struct key *); void (*describe)(const struct key *, struct seq_file *); long int (*read)(const struct key *, char *, size_t ); int (*request_key)(struct key_construction *, const char *, void *); struct list_head link; struct lock_class_key lock_class; } ; 50 struct ceph_x_ticket_blob { __u8 struct_v; __le64 secret_id; __le32 blob_len; char blob[]; } ; 15 struct ceph_x_request_header { __le16 op; } ; 21 struct ceph_x_reply_header { __le16 op; __le32 result; } ; 26 struct ceph_x_server_challenge { __u8 struct_v; __le64 server_challenge; } ; 35 struct ceph_x_authenticate { __u8 struct_v; __le64 client_challenge; __le64 key; } ; 41 struct ceph_x_service_ticket_request { __u8 struct_v; __le32 keys; } ; 47 struct ceph_x_challenge_blob { __le64 server_challenge; __le64 client_challenge; } ; 52 struct ceph_x_authorize_a { __u8 struct_v; __le64 global_id; __le32 service_id; struct ceph_x_ticket_blob ticket_blob; } ; 68 struct ceph_x_authorize_b { __u8 struct_v; __le64 nonce; } ; 73 struct ceph_x_authorize_reply { __u8 struct_v; __le64 nonce_plus_one; } ; 78 struct ceph_x_encrypt_header { __u8 struct_v; __le64 magic; } ; 89 struct ceph_x_ticket_handler { struct rb_node node; unsigned int service; struct ceph_crypto_key session_key; struct ceph_timespec validity; u64 secret_id; struct ceph_buffer *ticket_blob; unsigned long renew_after; unsigned long expires; } ; 26 struct ceph_x_authorizer { struct ceph_buffer *buf; unsigned int service; u64 nonce; u64 secret_id; char reply_buf[128U]; } ; 35 struct ceph_x_info { struct ceph_crypto_key secret; bool starting; u64 server_challenge; unsigned int have_keys; struct rb_root ticket_handlers; struct ceph_x_authorizer auth_authorizer; } ; 75 typedef int pao_T__; 80 typedef int pao_T_____0; 23 struct nameidata { struct path path; struct qstr last; struct path root; struct inode *inode; unsigned int flags; unsigned int seq; unsigned int m_seq; int last_type; unsigned int depth; char *saved_names[9U]; } ; 1 void * __builtin_memcpy(void *, const void *, unsigned long); 1 long int __builtin_expect(long exp, long c); 142 int printk(const char *, ...); 45 int __dynamic_pr_debug(struct _ddebug *, const char *, ...); 403 int sscanf(const char *, const char *, ...); 87 void __bad_percpu_size(); 10 extern struct task_struct *current_task; 12 struct task_struct * get_current(); 24 void INIT_LIST_HEAD(struct list_head *list); 34 void * __memcpy(void *, const void *, size_t ); 60 int memcmp(const void *, const void *, size_t ); 64 int strcmp(const char *, const char *); 89 char * strsep(char **, const char *); 119 char * kstrndup(const char *, size_t , gfp_t ); 23 void * ERR_PTR(long error); 28 long int PTR_ERR(const void *ptr); 33 bool IS_ERR(const void *ptr); 37 void atomic_set(atomic_t *v, int i); 120 void __mutex_init(struct mutex *, const char *, struct lock_class_key *); 174 int mutex_trylock(struct mutex *); 177 int ldv_mutex_trylock_6(struct mutex *ldv_func_arg1); 179 void mutex_unlock(struct mutex *); 182 void ldv_mutex_unlock_1(struct mutex *ldv_func_arg1); 186 void ldv_mutex_unlock_4(struct mutex *ldv_func_arg1); 190 void ldv_mutex_unlock_7(struct mutex *ldv_func_arg1); 194 void ldv_mutex_unlock_9(struct mutex *ldv_func_arg1); 7 void mutex_lock(struct mutex *); 10 void ldv_mutex_lock_2(struct mutex *ldv_func_arg1); 14 void ldv_mutex_lock_3(struct mutex *ldv_func_arg1); 18 void ldv_mutex_lock_5(struct mutex *ldv_func_arg1); 22 void ldv_mutex_lock_8(struct mutex *ldv_func_arg1); 35 void ldv_mutex_lock_i_mutex_of_inode(struct mutex *lock); 39 void ldv_mutex_unlock_i_mutex_of_inode(struct mutex *lock); 43 void ldv_mutex_lock_lock(struct mutex *lock); 47 void ldv_mutex_unlock_lock(struct mutex *lock); 51 void ldv_mutex_lock_mount_mutex_of_ceph_client(struct mutex *lock); 55 void ldv_mutex_unlock_mount_mutex_of_ceph_client(struct mutex *lock); 83 void ldv_mutex_lock_mutex_of_device(struct mutex *lock); 84 int ldv_mutex_trylock_mutex_of_device(struct mutex *lock); 87 void ldv_mutex_unlock_mutex_of_device(struct mutex *lock); 15 const char * ceph_file_part(const char *s, int len); 77 extern volatile unsigned long jiffies; 69 void __init_waitqueue_head(wait_queue_head_t *, const char *, struct lock_class_key *); 825 long int prepare_to_wait_event(wait_queue_head_t *, wait_queue_t *, int); 826 void finish_wait(wait_queue_head_t *, wait_queue_t *); 75 void * __vmalloc(unsigned long, gfp_t , pgprot_t ); 79 void vfree(const void *); 229 void key_put(struct key *); 247 struct key * request_key(struct key_type *, const char *, const char *); 377 long int schedule_timeout(long); 18 extern const unsigned char _ctype[]; 6 struct key_type key_type_ceph; 28 int match_token(char *, const struct match_token *, substring_t *); 29 int match_int(substring_t *, int *); 144 void kfree(const void *); 315 void * __kmalloc(size_t , gfp_t ); 445 void * kmalloc(size_t size, gfp_t flags); 559 void * kmalloc_array(size_t n, size_t size, gfp_t flags); 572 void * kcalloc(size_t n, size_t size, gfp_t flags); 637 void * kzalloc(size_t size, gfp_t flags); 360 int is_vmalloc_addr(const void *x); 7 extern struct net init_net; 18 int ceph_fsid_compare(const struct ceph_fsid *a, const struct ceph_fsid *b); 247 int ceph_parse_ips(const char *c, const char *end, struct ceph_entity_addr *addr, int max_count, int *count); 252 int ceph_msgr_init(); 253 void ceph_msgr_exit(); 256 void ceph_messenger_init(struct ceph_messenger *msgr, struct ceph_entity_addr *myaddr, u64 supported_features, u64 required_features, bool nocrc); 91 int ceph_monmap_contains(struct ceph_monmap *m, struct ceph_entity_addr *addr); 94 int ceph_monc_init(struct ceph_mon_client *monc, struct ceph_client *cl); 95 void ceph_monc_stop(struct ceph_mon_client *monc); 116 int ceph_monc_open_session(struct ceph_mon_client *monc); 232 int ceph_osdc_setup(); 233 void ceph_osdc_cleanup(); 235 int ceph_osdc_init(struct ceph_osd_client *osdc, struct ceph_client *client); 237 void ceph_osdc_stop(struct ceph_osd_client *osdc); 182 bool libceph_compatible(void *data); 184 const char * ceph_msg_type_name(int type); 185 int ceph_check_fsid(struct ceph_client *client, struct ceph_fsid *fsid); 186 void * ceph_kvmalloc(size_t size, gfp_t flags); 187 void ceph_kvfree(const void *ptr); 189 struct ceph_options * ceph_parse_options(char *options, const char *dev_name___0, const char *dev_name_end, int (*parse_extra_token)(char *, void *), void *private); 193 void ceph_destroy_options(struct ceph_options *opt); 194 int ceph_compare_options(struct ceph_options *new_opt, struct ceph_client *client); 196 struct ceph_client * ceph_create_client(struct ceph_options *opt, void *private, u64 supported_features, u64 required_features); 200 u64 ceph_client_id(struct ceph_client *client); 201 void ceph_destroy_client(struct ceph_client *client); 202 int __ceph_open_session(struct ceph_client *client, unsigned long started); 204 int ceph_open_session(struct ceph_client *client); 27 int ceph_debugfs_init(); 28 void ceph_debugfs_cleanup(); 30 void ceph_debugfs_client_cleanup(struct ceph_client *client); 17 void ceph_crypto_key_destroy(struct ceph_crypto_key *key); 23 int ceph_crypto_key_clone(struct ceph_crypto_key *dst, const struct ceph_crypto_key *src); 27 int ceph_crypto_key_unarmor(struct ceph_crypto_key *key, const char *inkey); 44 int ceph_crypto_init(); 45 void ceph_crypto_shutdown(); 127 const char __kstrtab_libceph_compatible[19U] = { 'l', 'i', 'b', 'c', 'e', 'p', 'h', '_', 'c', 'o', 'm', 'p', 'a', 't', 'i', 'b', 'l', 'e', '\x0' }; 127 const struct kernel_symbol __ksymtab_libceph_compatible; 127 const struct kernel_symbol __ksymtab_libceph_compatible = { (unsigned long)(&libceph_compatible), (const char *)(&__kstrtab_libceph_compatible) }; 140 const char __kstrtab_ceph_file_part[15U] = { 'c', 'e', 'p', 'h', '_', 'f', 'i', 'l', 'e', '_', 'p', 'a', 'r', 't', '\x0' }; 140 const struct kernel_symbol __ksymtab_ceph_file_part; 140 const struct kernel_symbol __ksymtab_ceph_file_part = { (unsigned long)(&ceph_file_part), (const char *)(&__kstrtab_ceph_file_part) }; 174 const char __kstrtab_ceph_msg_type_name[19U] = { 'c', 'e', 'p', 'h', '_', 'm', 's', 'g', '_', 't', 'y', 'p', 'e', '_', 'n', 'a', 'm', 'e', '\x0' }; 174 const struct kernel_symbol __ksymtab_ceph_msg_type_name; 174 const struct kernel_symbol __ksymtab_ceph_msg_type_name = { (unsigned long)(&ceph_msg_type_name), (const char *)(&__kstrtab_ceph_msg_type_name) }; 192 const char __kstrtab_ceph_check_fsid[16U] = { 'c', 'e', 'p', 'h', '_', 'c', 'h', 'e', 'c', 'k', '_', 'f', 's', 'i', 'd', '\x0' }; 192 const struct kernel_symbol __ksymtab_ceph_check_fsid; 192 const struct kernel_symbol __ksymtab_ceph_check_fsid = { (unsigned long)(&ceph_check_fsid), (const char *)(&__kstrtab_ceph_check_fsid) }; 194 int strcmp_null(const char *s1, const char *s2); 254 const char __kstrtab_ceph_compare_options[21U] = { 'c', 'e', 'p', 'h', '_', 'c', 'o', 'm', 'p', 'a', 'r', 'e', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\x0' }; 254 const struct kernel_symbol __ksymtab_ceph_compare_options; 254 const struct kernel_symbol __ksymtab_ceph_compare_options = { (unsigned long)(&ceph_compare_options), (const char *)(&__kstrtab_ceph_compare_options) }; 276 int parse_fsid(const char *str, struct ceph_fsid *fsid); 330 struct match_token opt_tokens[14U] = { { 0, "osdtimeout=%d" }, { 1, "osdkeepalive=%d" }, { 2, "mount_timeout=%d" }, { 3, "osd_idle_ttl=%d" }, { 5, "fsid=%s" }, { 6, "name=%s" }, { 7, "secret=%s" }, { 8, "key=%s" }, { 9, "ip=%s" }, { 11, "share" }, { 12, "noshare" }, { 13, "crc" }, { 14, "nocrc" }, { -1, (const char *)0 } }; 360 const char __kstrtab_ceph_destroy_options[21U] = { 'c', 'e', 'p', 'h', '_', 'd', 'e', 's', 't', 'r', 'o', 'y', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\x0' }; 360 const struct kernel_symbol __ksymtab_ceph_destroy_options; 360 const struct kernel_symbol __ksymtab_ceph_destroy_options = { (unsigned long)(&ceph_destroy_options), (const char *)(&__kstrtab_ceph_destroy_options) }; 363 int get_secret(struct ceph_crypto_key *dst, const char *name); 554 const char __kstrtab_ceph_parse_options[19U] = { 'c', 'e', 'p', 'h', '_', 'p', 'a', 'r', 's', 'e', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\x0' }; 554 const struct kernel_symbol __ksymtab_ceph_parse_options; 554 const struct kernel_symbol __ksymtab_ceph_parse_options = { (unsigned long)(&ceph_parse_options), (const char *)(&__kstrtab_ceph_parse_options) }; 560 const char __kstrtab_ceph_client_id[15U] = { 'c', 'e', 'p', 'h', '_', 'c', 'l', 'i', 'e', 'n', 't', '_', 'i', 'd', '\x0' }; 560 const struct kernel_symbol __ksymtab_ceph_client_id; 560 const struct kernel_symbol __ksymtab_ceph_client_id = { (unsigned long)(&ceph_client_id), (const char *)(&__kstrtab_ceph_client_id) }; 614 const char __kstrtab_ceph_create_client[19U] = { 'c', 'e', 'p', 'h', '_', 'c', 'r', 'e', 'a', 't', 'e', '_', 'c', 'l', 'i', 'e', 'n', 't', '\x0' }; 614 const struct kernel_symbol __ksymtab_ceph_create_client; 614 const struct kernel_symbol __ksymtab_ceph_create_client = { (unsigned long)(&ceph_create_client), (const char *)(&__kstrtab_ceph_create_client) }; 634 const char __kstrtab_ceph_destroy_client[20U] = { 'c', 'e', 'p', 'h', '_', 'd', 'e', 's', 't', 'r', 'o', 'y', '_', 'c', 'l', 'i', 'e', 'n', 't', '\x0' }; 634 const struct kernel_symbol __ksymtab_ceph_destroy_client; 634 const struct kernel_symbol __ksymtab_ceph_destroy_client = { (unsigned long)(&ceph_destroy_client), (const char *)(&__kstrtab_ceph_destroy_client) }; 639 int have_mon_and_osd_map(struct ceph_client *client); 676 const char __kstrtab___ceph_open_session[20U] = { '_', '_', 'c', 'e', 'p', 'h', '_', 'o', 'p', 'e', 'n', '_', 's', 'e', 's', 's', 'i', 'o', 'n', '\x0' }; 676 const struct kernel_symbol __ksymtab___ceph_open_session; 676 const struct kernel_symbol __ksymtab___ceph_open_session = { (unsigned long)(&__ceph_open_session), (const char *)(&__kstrtab___ceph_open_session) }; 692 const char __kstrtab_ceph_open_session[18U] = { 'c', 'e', 'p', 'h', '_', 'o', 'p', 'e', 'n', '_', 's', 'e', 's', 's', 'i', 'o', 'n', '\x0' }; 692 const struct kernel_symbol __ksymtab_ceph_open_session; 692 const struct kernel_symbol __ksymtab_ceph_open_session = { (unsigned long)(&ceph_open_session), (const char *)(&__kstrtab_ceph_open_session) }; 695 int init_ceph_lib(); 730 void exit_ceph_lib(); 764 void ldv_check_final_state(); 773 void ldv_initialize(); 776 void ldv_handler_precall(); 779 int nondet_int(); 782 int LDV_IN_INTERRUPT = 0; 785 void ldv_main0_sequence_infinite_withcheck_stateful(); 72 void set_bit(long nr, volatile unsigned long *addr); 110 void clear_bit(long nr, volatile unsigned long *addr); 204 int test_and_set_bit(long nr, volatile unsigned long *addr); 250 int test_and_clear_bit(long nr, volatile unsigned long *addr); 308 int constant_test_bit(long nr, const volatile unsigned long *addr); 314 int variable_test_bit(long nr, const volatile unsigned long *addr); 46 __u16 __fswab16(__u16 val); 414 void print_hex_dump(const char *, const char *, int, int, int, const void *, size_t , bool ); 165 void __might_sleep(const char *, int, int); 391 int snprintf(char *, size_t , const char *, ...); 47 void __list_add(struct list_head *, struct list_head *, struct list_head *); 74 void list_add_tail(struct list_head *new, struct list_head *head); 111 void __list_del_entry(struct list_head *); 142 void list_del_init(struct list_head *entry); 164 void list_move_tail(struct list_head *list, struct list_head *head); 176 int list_is_last(const struct list_head *list, const struct list_head *head); 186 int list_empty(const struct list_head *head); 273 void __list_splice(const struct list_head *list, struct list_head *prev, struct list_head *next); 318 void list_splice_init(struct list_head *list, struct list_head *head); 23 unsigned long int __phys_addr(unsigned long); 55 void * memset(void *, int, size_t ); 61 size_t strlen(const char *); 114 void * memchr(const void *, int, __kernel_size_t ); 66 void warn_slowpath_fmt(const char *, const int, const char *, ...); 71 void warn_slowpath_null(const char *, const int); 13 void __xchg_wrong_size(); 17 void __xadd_wrong_size(); 25 int atomic_read(const atomic_t *v); 79 int atomic_sub_and_test(int i, atomic_t *v); 90 void atomic_inc(atomic_t *v); 155 int atomic_add_return(int i, atomic_t *v); 180 int atomic_xchg(atomic_t *v, int new); 279 void lockdep_init_map(struct lockdep_map *, const char *, struct lock_class_key *, int); 177 int ldv_mutex_trylock_24(struct mutex *ldv_func_arg1); 182 void ldv_mutex_unlock_19(struct mutex *ldv_func_arg1); 186 void ldv_mutex_unlock_22(struct mutex *ldv_func_arg1); 190 void ldv_mutex_unlock_25(struct mutex *ldv_func_arg1); 194 void ldv_mutex_unlock_27(struct mutex *ldv_func_arg1); 198 void ldv_mutex_unlock_29(struct mutex *ldv_func_arg1); 202 void ldv_mutex_unlock_30(struct mutex *ldv_func_arg1); 206 void ldv_mutex_unlock_32(struct mutex *ldv_func_arg1); 210 void ldv_mutex_unlock_34(struct mutex *ldv_func_arg1); 214 void ldv_mutex_unlock_37(struct mutex *ldv_func_arg1); 218 void ldv_mutex_unlock_39(struct mutex *ldv_func_arg1); 222 void ldv_mutex_unlock_40(struct mutex *ldv_func_arg1); 226 void ldv_mutex_unlock_42(struct mutex *ldv_func_arg1); 230 void ldv_mutex_unlock_44(struct mutex *ldv_func_arg1); 234 void ldv_mutex_unlock_46(struct mutex *ldv_func_arg1); 238 void ldv_mutex_unlock_47(struct mutex *ldv_func_arg1); 10 void ldv_mutex_lock_20(struct mutex *ldv_func_arg1); 14 void ldv_mutex_lock_21(struct mutex *ldv_func_arg1); 18 void ldv_mutex_lock_23(struct mutex *ldv_func_arg1); 22 void ldv_mutex_lock_26(struct mutex *ldv_func_arg1); 26 void ldv_mutex_lock_28(struct mutex *ldv_func_arg1); 30 void ldv_mutex_lock_31(struct mutex *ldv_func_arg1); 34 void ldv_mutex_lock_33(struct mutex *ldv_func_arg1); 38 void ldv_mutex_lock_35(struct mutex *ldv_func_arg1); 42 void ldv_mutex_lock_36(struct mutex *ldv_func_arg1); 46 void ldv_mutex_lock_38(struct mutex *ldv_func_arg1); 50 void ldv_mutex_lock_41(struct mutex *ldv_func_arg1); 54 void ldv_mutex_lock_43(struct mutex *ldv_func_arg1); 58 void ldv_mutex_lock_45(struct mutex *ldv_func_arg1); 62 void ldv_mutex_lock_48(struct mutex *ldv_func_arg1); 107 void ldv_mutex_lock_mutex_of_ceph_connection(struct mutex *lock); 111 void ldv_mutex_unlock_mutex_of_ceph_connection(struct mutex *lock); 6 u32 crc32c(u32 , const void *, unsigned int); 93 void __raw_spin_lock_init(raw_spinlock_t *, const char *, struct lock_class_key *); 22 void _raw_spin_lock(raw_spinlock_t *); 39 void _raw_spin_unlock(raw_spinlock_t *); 290 raw_spinlock_t * spinlock_check(spinlock_t *lock); 301 void spin_lock(spinlock_t *lock); 341 void spin_unlock(spinlock_t *lock); 8 void dump_page(struct page *, const char *); 94 void init_timer_key(struct timer_list *, unsigned int, const char *, struct lock_class_key *); 260 unsigned long int round_jiffies_relative(unsigned long); 20 void delayed_work_timer_fn(unsigned long); 180 void __init_work(struct work_struct *, int); 364 struct workqueue_struct * __alloc_workqueue_key(const char *, unsigned int, int, struct lock_class_key *, const char *, ...); 424 void destroy_workqueue(struct workqueue_struct *); 433 bool queue_delayed_work_on(int, struct workqueue_struct *, struct delayed_work *, unsigned long); 438 void flush_workqueue(struct workqueue_struct *); 450 bool cancel_delayed_work(struct delayed_work *); 485 bool queue_delayed_work(struct workqueue_struct *wq, struct delayed_work *dwork, unsigned long delay); 26 extern unsigned long empty_zero_page[512U]; 356 int PageTail(const struct page *page); 416 struct page * compound_head_by_tail(struct page *tail); 431 struct page * compound_head(struct page *page); 453 int page_count(struct page *page); 498 bool __get_page_tail(struct page *); 500 void get_page(struct page *page); 556 void put_page(struct page *); 912 void * lowmem_page_address(const struct page *page); 56 void * kmap(struct page *page); 62 void kunmap(struct page *page); 55 int in4_pton(const char *, int, u8 *, int, const char **); 56 int in6_pton(const char *, int, u8 *, int, const char **); 16 void get_random_bytes(void *, int); 213 int sock_create_kern(int, int, int, struct socket **); 215 void sock_release(struct socket *); 265 int kernel_sendmsg(struct socket *, struct msghdr *, struct kvec *, size_t , size_t ); 267 int kernel_recvmsg(struct socket *, struct msghdr *, struct kvec *, size_t , size_t , int); 283 int kernel_sendpage(struct socket *, struct page *, int, size_t , int); 115 struct kmem_cache * kmem_cache_create(const char *, size_t , size_t , unsigned long, void (*)(void *)); 123 void kmem_cache_destroy(struct kmem_cache *); 125 void kmem_cache_free(struct kmem_cache *, void *); 316 void * kmem_cache_alloc(struct kmem_cache *, gfp_t ); 32 void kref_init(struct kref *kref); 41 void kref_get(struct kref *kref); 68 int kref_sub(struct kref *kref, unsigned int count, void (*release)(struct kref *)); 97 int kref_put(struct kref *kref, void (*release)(struct kref *)); 627 void * kmem_cache_zalloc(struct kmem_cache *k, gfp_t flags); 207 void bvec_iter_advance(struct bio_vec *bv, struct bvec_iter *iter, unsigned int bytes); 234 void bio_advance_iter(struct bio *bio, struct bvec_iter *iter, unsigned int bytes); 29 int dns_query(const char *, const char *, size_t , const char *, char **, time_t *); 780 int sk_stream_min_wspace(const struct sock *sk); 785 int sk_stream_wspace(const struct sock *sk); 1141 bool sk_stream_memory_free(const struct sock *sk); 1150 bool sk_stream_is_writeable(const struct sock *sk); 67 u64 ceph_sanitize_features(u64 features); 57 const char * ceph_entity_type_name(int type); 22 struct ceph_buffer * ceph_buffer_new(size_t len, gfp_t gfp); 23 void ceph_buffer_release(struct kref *kref); 31 void ceph_buffer_put(struct ceph_buffer *b); 77 bool ceph_msg_data_type_valid(enum ceph_msg_data_type type); 246 const char * ceph_pr_addr(const struct __kernel_sockaddr_storage *ss); 254 void ceph_msgr_flush(); 262 void ceph_con_init(struct ceph_connection *con, void *private, const struct ceph_connection_operations *ops, struct ceph_messenger *msgr); 265 void ceph_con_open(struct ceph_connection *con, __u8 entity_type, __u64 entity_num, struct ceph_entity_addr *addr); 268 bool ceph_con_opened(struct ceph_connection *con); 269 void ceph_con_close(struct ceph_connection *con); 270 void ceph_con_send(struct ceph_connection *con, struct ceph_msg *msg); 272 void ceph_msg_revoke(struct ceph_msg *msg); 273 void ceph_msg_revoke_incoming(struct ceph_msg *msg); 275 void ceph_con_keepalive(struct ceph_connection *con); 277 void ceph_msg_data_add_pages(struct ceph_msg *msg, struct page **pages, size_t length, size_t alignment); 279 void ceph_msg_data_add_pagelist(struct ceph_msg *msg, struct ceph_pagelist *pagelist); 282 void ceph_msg_data_add_bio(struct ceph_msg *msg, struct bio *bio, size_t length); 286 struct ceph_msg * ceph_msg_new(int type, int front_len, gfp_t flags, bool can_fail); 289 struct ceph_msg * ceph_msg_get(struct ceph_msg *msg); 290 void ceph_msg_put(struct ceph_msg *msg); 292 void ceph_msg_dump(struct ceph_msg *msg); 24 void ceph_msgpool_put(struct ceph_msgpool *pool, struct ceph_msg *msg); 153 void ceph_encode_addr(struct ceph_entity_addr *a); 158 void ceph_decode_addr(struct ceph_entity_addr *a); 31 int ceph_pagelist_release(struct ceph_pagelist *pl); 170 int calc_pages_for(u64 off, u64 len); 185 bool con_flag_valid(unsigned long con_flag); 199 void con_flag_clear(struct ceph_connection *con, unsigned long con_flag); 206 void con_flag_set(struct ceph_connection *con, unsigned long con_flag); 213 bool con_flag_test(struct ceph_connection *con, unsigned long con_flag); 220 bool con_flag_test_and_clear(struct ceph_connection *con, unsigned long con_flag); 228 bool con_flag_test_and_set(struct ceph_connection *con, unsigned long con_flag); 238 struct kmem_cache *ceph_msg_cache = 0; 239 struct kmem_cache *ceph_msg_data_cache = 0; 242 char tag_msg = 7; 243 char tag_ack = 8; 244 char tag_keepalive = 9; 247 struct lock_class_key socket_class = { }; 256 void queue_con(struct ceph_connection *con); 257 void cancel_con(struct ceph_connection *con); 258 void con_work(struct work_struct *work); 259 void con_fault(struct ceph_connection *con); 270 char addr_str[32U][64U] = { }; 271 atomic_t addr_str_seq = { 0 }; 273 struct page *zero_page = 0; 303 const char __kstrtab_ceph_pr_addr[13U] = { 'c', 'e', 'p', 'h', '_', 'p', 'r', '_', 'a', 'd', 'd', 'r', '\x0' }; 303 const struct kernel_symbol __ksymtab_ceph_pr_addr; 303 const struct kernel_symbol __ksymtab_ceph_pr_addr = { (unsigned long)(&ceph_pr_addr), (const char *)(&__kstrtab_ceph_pr_addr) }; 305 void encode_my_addr(struct ceph_messenger *msgr); 314 struct workqueue_struct *ceph_msgr_wq = 0; 316 int ceph_msgr_slab_init(); 340 void ceph_msgr_slab_exit(); 351 void _ceph_msgr_exit(); 384 const char __kstrtab_ceph_msgr_init[15U] = { 'c', 'e', 'p', 'h', '_', 'm', 's', 'g', 'r', '_', 'i', 'n', 'i', 't', '\x0' }; 384 const struct kernel_symbol __ksymtab_ceph_msgr_init; 384 const struct kernel_symbol __ksymtab_ceph_msgr_init = { (unsigned long)(&ceph_msgr_init), (const char *)(&__kstrtab_ceph_msgr_init) }; 392 const char __kstrtab_ceph_msgr_exit[15U] = { 'c', 'e', 'p', 'h', '_', 'm', 's', 'g', 'r', '_', 'e', 'x', 'i', 't', '\x0' }; 392 const struct kernel_symbol __ksymtab_ceph_msgr_exit; 392 const struct kernel_symbol __ksymtab_ceph_msgr_exit = { (unsigned long)(&ceph_msgr_exit), (const char *)(&__kstrtab_ceph_msgr_exit) }; 398 const char __kstrtab_ceph_msgr_flush[16U] = { 'c', 'e', 'p', 'h', '_', 'm', 's', 'g', 'r', '_', 'f', 'l', 'u', 's', 'h', '\x0' }; 398 const struct kernel_symbol __ksymtab_ceph_msgr_flush; 398 const struct kernel_symbol __ksymtab_ceph_msgr_flush = { (unsigned long)(&ceph_msgr_flush), (const char *)(&__kstrtab_ceph_msgr_flush) }; 402 void con_sock_state_init(struct ceph_connection *con); 413 void con_sock_state_connecting(struct ceph_connection *con); 424 void con_sock_state_connected(struct ceph_connection *con); 435 void con_sock_state_closing(struct ceph_connection *con); 448 void con_sock_state_closed(struct ceph_connection *con); 467 void ceph_sock_data_ready(struct sock *sk); 482 void ceph_sock_write_space(struct sock *sk); 505 void ceph_sock_state_change(struct sock *sk); 534 void set_sock_callbacks(struct socket *sock, struct ceph_connection *con); 552 int ceph_tcp_connect(struct ceph_connection *con); 592 int ceph_tcp_recvmsg(struct socket *sock, void *buf, size_t len); 604 int ceph_tcp_recvpage(struct socket *sock, struct page *page, int page_offset___0, size_t length); 624 int ceph_tcp_sendmsg(struct socket *sock, struct kvec *iov, size_t kvlen, size_t len, int more); 641 int __ceph_tcp_sendpage(struct socket *sock, struct page *page, int offset, size_t size, bool more); 654 int ceph_tcp_sendpage(struct socket *sock, struct page *page, int offset, size_t size, bool more); 676 int con_close_socket(struct ceph_connection *con); 703 void ceph_msg_remove(struct ceph_msg *msg); 712 void ceph_msg_remove_list(struct list_head *head); 721 void reset_connection(struct ceph_connection *con); 768 const char __kstrtab_ceph_con_close[15U] = { 'c', 'e', 'p', 'h', '_', 'c', 'o', 'n', '_', 'c', 'l', 'o', 's', 'e', '\x0' }; 768 const struct kernel_symbol __ksymtab_ceph_con_close; 768 const struct kernel_symbol __ksymtab_ceph_con_close = { (unsigned long)(&ceph_con_close), (const char *)(&__kstrtab_ceph_con_close) }; 791 const char __kstrtab_ceph_con_open[14U] = { 'c', 'e', 'p', 'h', '_', 'c', 'o', 'n', '_', 'o', 'p', 'e', 'n', '\x0' }; 791 const struct kernel_symbol __ksymtab_ceph_con_open; 791 const struct kernel_symbol __ksymtab_ceph_con_open = { (unsigned long)(&ceph_con_open), (const char *)(&__kstrtab_ceph_con_open) }; 823 const char __kstrtab_ceph_con_init[14U] = { 'c', 'e', 'p', 'h', '_', 'c', 'o', 'n', '_', 'i', 'n', 'i', 't', '\x0' }; 823 const struct kernel_symbol __ksymtab_ceph_con_init; 823 const struct kernel_symbol __ksymtab_ceph_con_init = { (unsigned long)(&ceph_con_init), (const char *)(&__kstrtab_ceph_con_init) }; 830 u32 get_global_seq(struct ceph_messenger *msgr, u32 gt); 842 void con_out_kvec_reset(struct ceph_connection *con); 849 void con_out_kvec_add(struct ceph_connection *con, size_t size, void *data); 870 void ceph_msg_data_bio_cursor_init(struct ceph_msg_data_cursor *cursor, size_t length); 888 struct page * ceph_msg_data_bio_next(struct ceph_msg_data_cursor *cursor, size_t *page_offset___0, size_t *length); 915 bool ceph_msg_data_bio_advance(struct ceph_msg_data_cursor *cursor, size_t bytes); 966 void ceph_msg_data_pages_cursor_init(struct ceph_msg_data_cursor *cursor, size_t length); 988 struct page * ceph_msg_data_pages_next(struct ceph_msg_data_cursor *cursor, size_t *page_offset___0, size_t *length); 1007 bool ceph_msg_data_pages_advance(struct ceph_msg_data_cursor *cursor, size_t bytes); 1038 void ceph_msg_data_pagelist_cursor_init(struct ceph_msg_data_cursor *cursor, size_t length); 1063 struct page * ceph_msg_data_pagelist_next(struct ceph_msg_data_cursor *cursor, size_t *page_offset___0, size_t *length); 1087 bool ceph_msg_data_pagelist_advance(struct ceph_msg_data_cursor *cursor, size_t bytes); 1129 void __ceph_msg_data_cursor_init(struct ceph_msg_data_cursor *cursor); 1153 void ceph_msg_data_cursor_init(struct ceph_msg *msg, size_t length); 1175 struct page * ceph_msg_data_next(struct ceph_msg_data_cursor *cursor, size_t *page_offset___0, size_t *length, bool *last_piece); 1211 bool ceph_msg_data_advance(struct ceph_msg_data_cursor *cursor, size_t bytes); 1248 void prepare_message_data(struct ceph_msg *msg, u32 data_len); 1262 void prepare_write_message_footer(struct ceph_connection *con); 1282 void prepare_write_message(struct ceph_connection *con); 1368 void prepare_write_ack(struct ceph_connection *con); 1389 void prepare_write_seq(struct ceph_connection *con); 1407 void prepare_write_keepalive(struct ceph_connection *con); 1419 struct ceph_auth_handshake * get_connect_authorizer(struct ceph_connection *con, int *auth_proto); 1448 void prepare_write_banner(struct ceph_connection *con); 1458 int prepare_write_connect(struct ceph_connection *con); 1516 int write_partial_kvec(struct ceph_connection *con); 1553 u32 ceph_crc32c_page(u32 crc, struct page *page, unsigned int page_offset___0, unsigned int length); 1573 int write_partial_message_data(struct ceph_connection *con); 1633 int write_partial_skip(struct ceph_connection *con); 1653 void prepare_read_banner(struct ceph_connection *con); 1659 void prepare_read_connect(struct ceph_connection *con); 1665 void prepare_read_ack(struct ceph_connection *con); 1671 void prepare_read_seq(struct ceph_connection *con); 1678 void prepare_read_tag(struct ceph_connection *con); 1688 int prepare_read_message(struct ceph_connection *con); 1698 int read_partial(struct ceph_connection *con, int end, int size, void *object); 1716 int read_partial_banner(struct ceph_connection *con); 1747 int read_partial_connect(struct ceph_connection *con); 1779 int verify_hello(struct ceph_connection *con); 1790 bool addr_is_blank(struct __kernel_sockaddr_storage *ss); 1805 int addr_port(struct __kernel_sockaddr_storage *ss); 1816 void addr_set_port(struct __kernel_sockaddr_storage *ss, int p); 1831 int ceph_pton(const char *str, size_t len, struct __kernel_sockaddr_storage *ss, char delim, const char **ipend); 1856 int ceph_dns_resolve_name(const char *name, size_t namelen, struct __kernel_sockaddr_storage *ss, char delim, const char **ipend); 1911 int ceph_parse_server_name(const char *name, size_t namelen, struct __kernel_sockaddr_storage *ss, char delim, const char **ipend); 1999 const char __kstrtab_ceph_parse_ips[15U] = { 'c', 'e', 'p', 'h', '_', 'p', 'a', 'r', 's', 'e', '_', 'i', 'p', 's', '\x0' }; 1999 const struct kernel_symbol __ksymtab_ceph_parse_ips; 1999 const struct kernel_symbol __ksymtab_ceph_parse_ips = { (unsigned long)(&ceph_parse_ips), (const char *)(&__kstrtab_ceph_parse_ips) }; 2001 int process_banner(struct ceph_connection *con); 2047 int process_connect(struct ceph_connection *con); 2219 int read_partial_ack(struct ceph_connection *con); 2230 void process_ack(struct ceph_connection *con); 2251 int read_partial_message_section(struct ceph_connection *con, struct kvec *section, unsigned int sec_len, u32 *crc); 2274 int read_partial_msg_data(struct ceph_connection *con); 2315 int ceph_con_in_msg_alloc(struct ceph_connection *con, int *skip); 2317 int read_partial_message(struct ceph_connection *con); 2474 void process_message(struct ceph_connection *con); 2509 int try_write(struct ceph_connection *con); 2602 int try_read(struct ceph_connection *con); 2747 int queue_con_delay(struct ceph_connection *con, unsigned long delay); 2777 bool con_sock_closed(struct ceph_connection *con); 2806 bool con_backoff(struct ceph_connection *con); 2826 void con_fault_finish(struct ceph_connection *con); 2987 const char __kstrtab_ceph_messenger_init[20U] = { 'c', 'e', 'p', 'h', '_', 'm', 'e', 's', 's', 'e', 'n', 'g', 'e', 'r', '_', 'i', 'n', 'i', 't', '\x0' }; 2987 const struct kernel_symbol __ksymtab_ceph_messenger_init; 2987 const struct kernel_symbol __ksymtab_ceph_messenger_init = { (unsigned long)(&ceph_messenger_init), (const char *)(&__kstrtab_ceph_messenger_init) }; 2989 void clear_standby(struct ceph_connection *con); 3041 const char __kstrtab_ceph_con_send[14U] = { 'c', 'e', 'p', 'h', '_', 'c', 'o', 'n', '_', 's', 'e', 'n', 'd', '\x0' }; 3041 const struct kernel_symbol __ksymtab_ceph_con_send; 3041 const struct kernel_symbol __ksymtab_ceph_con_send = { (unsigned long)(&ceph_con_send), (const char *)(&__kstrtab_ceph_con_send) }; 3131 const char __kstrtab_ceph_con_keepalive[19U] = { 'c', 'e', 'p', 'h', '_', 'c', 'o', 'n', '_', 'k', 'e', 'e', 'p', 'a', 'l', 'i', 'v', 'e', '\x0' }; 3131 const struct kernel_symbol __ksymtab_ceph_con_keepalive; 3131 const struct kernel_symbol __ksymtab_ceph_con_keepalive = { (unsigned long)(&ceph_con_keepalive), (const char *)(&__kstrtab_ceph_con_keepalive) }; 3133 struct ceph_msg_data * ceph_msg_data_create(enum ceph_msg_data_type type); 3148 void ceph_msg_data_destroy(struct ceph_msg_data *data); 3178 const char __kstrtab_ceph_msg_data_add_pages[24U] = { 'c', 'e', 'p', 'h', '_', 'm', 's', 'g', '_', 'd', 'a', 't', 'a', '_', 'a', 'd', 'd', '_', 'p', 'a', 'g', 'e', 's', '\x0' }; 3178 const struct kernel_symbol __ksymtab_ceph_msg_data_add_pages; 3178 const struct kernel_symbol __ksymtab_ceph_msg_data_add_pages = { (unsigned long)(&ceph_msg_data_add_pages), (const char *)(&__kstrtab_ceph_msg_data_add_pages) }; 3195 const char __kstrtab_ceph_msg_data_add_pagelist[27U] = { 'c', 'e', 'p', 'h', '_', 'm', 's', 'g', '_', 'd', 'a', 't', 'a', '_', 'a', 'd', 'd', '_', 'p', 'a', 'g', 'e', 'l', 'i', 's', 't', '\x0' }; 3195 const struct kernel_symbol __ksymtab_ceph_msg_data_add_pagelist; 3195 const struct kernel_symbol __ksymtab_ceph_msg_data_add_pagelist = { (unsigned long)(&ceph_msg_data_add_pagelist), (const char *)(&__kstrtab_ceph_msg_data_add_pagelist) }; 3213 const char __kstrtab_ceph_msg_data_add_bio[22U] = { 'c', 'e', 'p', 'h', '_', 'm', 's', 'g', '_', 'd', 'a', 't', 'a', '_', 'a', 'd', 'd', '_', 'b', 'i', 'o', '\x0' }; 3213 const struct kernel_symbol __ksymtab_ceph_msg_data_add_bio; 3213 const struct kernel_symbol __ksymtab_ceph_msg_data_add_bio = { (unsigned long)(&ceph_msg_data_add_bio), (const char *)(&__kstrtab_ceph_msg_data_add_bio) }; 3266 const char __kstrtab_ceph_msg_new[13U] = { 'c', 'e', 'p', 'h', '_', 'm', 's', 'g', '_', 'n', 'e', 'w', '\x0' }; 3266 const struct kernel_symbol __ksymtab_ceph_msg_new; 3266 const struct kernel_symbol __ksymtab_ceph_msg_new = { (unsigned long)(&ceph_msg_new), (const char *)(&__kstrtab_ceph_msg_new) }; 3275 int ceph_alloc_middle(struct ceph_connection *con, struct ceph_msg *msg); 3358 void ceph_msg_free(struct ceph_msg *m); 3365 void ceph_msg_release(struct kref *kref); 3404 const char __kstrtab_ceph_msg_get[13U] = { 'c', 'e', 'p', 'h', '_', 'm', 's', 'g', '_', 'g', 'e', 't', '\x0' }; 3404 const struct kernel_symbol __ksymtab_ceph_msg_get; 3404 const struct kernel_symbol __ksymtab_ceph_msg_get = { (unsigned long)(&ceph_msg_get), (const char *)(&__kstrtab_ceph_msg_get) }; 3412 const char __kstrtab_ceph_msg_put[13U] = { 'c', 'e', 'p', 'h', '_', 'm', 's', 'g', '_', 'p', 'u', 't', '\x0' }; 3412 const struct kernel_symbol __ksymtab_ceph_msg_put; 3412 const struct kernel_symbol __ksymtab_ceph_msg_put = { (unsigned long)(&ceph_msg_put), (const char *)(&__kstrtab_ceph_msg_put) }; 3433 const char __kstrtab_ceph_msg_dump[14U] = { 'c', 'e', 'p', 'h', '_', 'm', 's', 'g', '_', 'd', 'u', 'm', 'p', '\x0' }; 3433 const struct kernel_symbol __ksymtab_ceph_msg_dump; 3433 const struct kernel_symbol __ksymtab_ceph_msg_dump = { (unsigned long)(&ceph_msg_dump), (const char *)(&__kstrtab_ceph_msg_dump) }; 3472 void ldv_main1_sequence_infinite_withcheck_stateful(); 178 void ldv_mutex_unlock_80(struct mutex *ldv_func_arg1); 10 void ldv_mutex_lock_79(struct mutex *ldv_func_arg1); 26 mempool_t * mempool_create(int, mempool_alloc_t *, mempool_free_t *, void *); 33 void mempool_destroy(mempool_t *); 34 void * mempool_alloc(mempool_t *, gfp_t ); 35 void mempool_free(void *, mempool_t *); 18 int ceph_msgpool_init(struct ceph_msgpool *pool, int type, int front_len, int size, bool blocking, const char *name); 21 void ceph_msgpool_destroy(struct ceph_msgpool *pool); 22 struct ceph_msg * ceph_msgpool_get(struct ceph_msgpool *pool, int front_len); 89 void * msgpool_alloc(gfp_t gfp_mask, void *arg); 104 void msgpool_free(void *element, void *arg); 55 __u32 __le32_to_cpup(const __le32 *p); 178 void ldv_mutex_unlock_84(struct mutex *ldv_func_arg1); 182 void ldv_mutex_unlock_85(struct mutex *ldv_func_arg1); 10 void ldv_mutex_lock_83(struct mutex *ldv_func_arg1); 14 void ldv_mutex_lock_86(struct mutex *ldv_func_arg1); 36 int ceph_decode_buffer(struct ceph_buffer **b, void **p, void *end); 12 u32 get_unaligned_le32(const void *p); 23 u32 ceph_decode_32(void **p); 41 void ceph_decode_copy(void **p, void *pv, size_t n); 50 int ceph_has_room(void **p, void *end, size_t n); 110 const char __kstrtab_ceph_buffer_new[16U] = { 'c', 'e', 'p', 'h', '_', 'b', 'u', 'f', 'f', 'e', 'r', '_', 'n', 'e', 'w', '\x0' }; 110 const struct kernel_symbol __ksymtab_ceph_buffer_new; 110 const struct kernel_symbol __ksymtab_ceph_buffer_new = { (unsigned long)(&ceph_buffer_new), (const char *)(&__kstrtab_ceph_buffer_new) }; 120 const char __kstrtab_ceph_buffer_release[20U] = { 'c', 'e', 'p', 'h', '_', 'b', 'u', 'f', 'f', 'e', 'r', '_', 'r', 'e', 'l', 'e', 'a', 's', 'e', '\x0' }; 120 const struct kernel_symbol __ksymtab_ceph_buffer_release; 120 const struct kernel_symbol __ksymtab_ceph_buffer_release = { (unsigned long)(&ceph_buffer_release), (const char *)(&__kstrtab_ceph_buffer_release) }; 112 void list_del(struct list_head *); 178 void ldv_mutex_unlock_92(struct mutex *ldv_func_arg1); 182 void ldv_mutex_unlock_93(struct mutex *ldv_func_arg1); 10 void ldv_mutex_lock_91(struct mutex *ldv_func_arg1); 14 void ldv_mutex_lock_94(struct mutex *ldv_func_arg1); 371 void __free_pages(struct page *, unsigned int); 231 struct page * __page_cache_alloc(gfp_t ); 33 int ceph_pagelist_append(struct ceph_pagelist *pl, const void *buf, size_t len); 35 int ceph_pagelist_reserve(struct ceph_pagelist *pl, size_t space); 37 int ceph_pagelist_free_reserve(struct ceph_pagelist *pl); 39 void ceph_pagelist_set_cursor(struct ceph_pagelist *pl, struct ceph_pagelist_cursor *c); 42 int ceph_pagelist_truncate(struct ceph_pagelist *pl, struct ceph_pagelist_cursor *c); 86 void ceph_pagelist_unmap_tail(struct ceph_pagelist *pl); 107 const char __kstrtab_ceph_pagelist_release[22U] = { 'c', 'e', 'p', 'h', '_', 'p', 'a', 'g', 'e', 'l', 'i', 's', 't', '_', 'r', 'e', 'l', 'e', 'a', 's', 'e', '\x0' }; 107 const struct kernel_symbol __ksymtab_ceph_pagelist_release; 107 const struct kernel_symbol __ksymtab_ceph_pagelist_release = { (unsigned long)(&ceph_pagelist_release), (const char *)(&__kstrtab_ceph_pagelist_release) }; 109 int ceph_pagelist_addpage(struct ceph_pagelist *pl); 151 const char __kstrtab_ceph_pagelist_append[21U] = { 'c', 'e', 'p', 'h', '_', 'p', 'a', 'g', 'e', 'l', 'i', 's', 't', '_', 'a', 'p', 'p', 'e', 'n', 'd', '\x0' }; 151 const struct kernel_symbol __ksymtab_ceph_pagelist_append; 151 const struct kernel_symbol __ksymtab_ceph_pagelist_append = { (unsigned long)(&ceph_pagelist_append), (const char *)(&__kstrtab_ceph_pagelist_append) }; 173 const char __kstrtab_ceph_pagelist_reserve[22U] = { 'c', 'e', 'p', 'h', '_', 'p', 'a', 'g', 'e', 'l', 'i', 's', 't', '_', 'r', 'e', 's', 'e', 'r', 'v', 'e', '\x0' }; 173 const struct kernel_symbol __ksymtab_ceph_pagelist_reserve; 173 const struct kernel_symbol __ksymtab_ceph_pagelist_reserve = { (unsigned long)(&ceph_pagelist_reserve), (const char *)(&__kstrtab_ceph_pagelist_reserve) }; 188 const char __kstrtab_ceph_pagelist_free_reserve[27U] = { 'c', 'e', 'p', 'h', '_', 'p', 'a', 'g', 'e', 'l', 'i', 's', 't', '_', 'f', 'r', 'e', 'e', '_', 'r', 'e', 's', 'e', 'r', 'v', 'e', '\x0' }; 188 const struct kernel_symbol __ksymtab_ceph_pagelist_free_reserve; 188 const struct kernel_symbol __ksymtab_ceph_pagelist_free_reserve = { (unsigned long)(&ceph_pagelist_free_reserve), (const char *)(&__kstrtab_ceph_pagelist_free_reserve) }; 198 const char __kstrtab_ceph_pagelist_set_cursor[25U] = { 'c', 'e', 'p', 'h', '_', 'p', 'a', 'g', 'e', 'l', 'i', 's', 't', '_', 's', 'e', 't', '_', 'c', 'u', 'r', 's', 'o', 'r', '\x0' }; 198 const struct kernel_symbol __ksymtab_ceph_pagelist_set_cursor; 198 const struct kernel_symbol __ksymtab_ceph_pagelist_set_cursor = { (unsigned long)(&ceph_pagelist_set_cursor), (const char *)(&__kstrtab_ceph_pagelist_set_cursor) }; 226 const char __kstrtab_ceph_pagelist_truncate[23U] = { 'c', 'e', 'p', 'h', '_', 'p', 'a', 'g', 'e', 'l', 'i', 's', 't', '_', 't', 'r', 'u', 'n', 'c', 'a', 't', 'e', '\x0' }; 226 const struct kernel_symbol __ksymtab_ceph_pagelist_truncate; 226 const struct kernel_symbol __ksymtab_ceph_pagelist_truncate = { (unsigned long)(&ceph_pagelist_truncate), (const char *)(&__kstrtab_ceph_pagelist_truncate) }; 47 __u64 __le64_to_cpup(const __le64 *p); 63 __u16 __le16_to_cpup(const __le16 *p); 178 void ldv_mutex_unlock_100(struct mutex *ldv_func_arg1); 182 void ldv_mutex_unlock_101(struct mutex *ldv_func_arg1); 186 void ldv_mutex_unlock_104(struct mutex *ldv_func_arg1); 190 void ldv_mutex_unlock_106(struct mutex *ldv_func_arg1); 194 void ldv_mutex_unlock_108(struct mutex *ldv_func_arg1); 198 void ldv_mutex_unlock_110(struct mutex *ldv_func_arg1); 202 void ldv_mutex_unlock_112(struct mutex *ldv_func_arg1); 206 void ldv_mutex_unlock_114(struct mutex *ldv_func_arg1); 210 void ldv_mutex_unlock_116(struct mutex *ldv_func_arg1); 214 void ldv_mutex_unlock_118(struct mutex *ldv_func_arg1); 218 void ldv_mutex_unlock_119(struct mutex *ldv_func_arg1); 222 void ldv_mutex_unlock_121(struct mutex *ldv_func_arg1); 226 void ldv_mutex_unlock_122(struct mutex *ldv_func_arg1); 230 void ldv_mutex_unlock_125(struct mutex *ldv_func_arg1); 234 void ldv_mutex_unlock_127(struct mutex *ldv_func_arg1); 238 void ldv_mutex_unlock_129(struct mutex *ldv_func_arg1); 242 void ldv_mutex_unlock_131(struct mutex *ldv_func_arg1); 246 void ldv_mutex_unlock_133(struct mutex *ldv_func_arg1); 250 void ldv_mutex_unlock_134(struct mutex *ldv_func_arg1); 254 void ldv_mutex_unlock_136(struct mutex *ldv_func_arg1); 258 void ldv_mutex_unlock_138(struct mutex *ldv_func_arg1); 262 void ldv_mutex_unlock_140(struct mutex *ldv_func_arg1); 266 void ldv_mutex_unlock_142(struct mutex *ldv_func_arg1); 270 void ldv_mutex_unlock_144(struct mutex *ldv_func_arg1); 10 void ldv_mutex_lock_99(struct mutex *ldv_func_arg1); 14 void ldv_mutex_lock_102(struct mutex *ldv_func_arg1); 18 void ldv_mutex_lock_103(struct mutex *ldv_func_arg1); 22 void ldv_mutex_lock_105(struct mutex *ldv_func_arg1); 26 void ldv_mutex_lock_107(struct mutex *ldv_func_arg1); 30 void ldv_mutex_lock_109(struct mutex *ldv_func_arg1); 34 void ldv_mutex_lock_111(struct mutex *ldv_func_arg1); 38 void ldv_mutex_lock_113(struct mutex *ldv_func_arg1); 42 void ldv_mutex_lock_115(struct mutex *ldv_func_arg1); 46 void ldv_mutex_lock_117(struct mutex *ldv_func_arg1); 50 void ldv_mutex_lock_120(struct mutex *ldv_func_arg1); 54 void ldv_mutex_lock_123(struct mutex *ldv_func_arg1); 58 void ldv_mutex_lock_124(struct mutex *ldv_func_arg1); 62 void ldv_mutex_lock_126(struct mutex *ldv_func_arg1); 66 void ldv_mutex_lock_128(struct mutex *ldv_func_arg1); 70 void ldv_mutex_lock_130(struct mutex *ldv_func_arg1); 74 void ldv_mutex_lock_132(struct mutex *ldv_func_arg1); 78 void ldv_mutex_lock_135(struct mutex *ldv_func_arg1); 82 void ldv_mutex_lock_137(struct mutex *ldv_func_arg1); 86 void ldv_mutex_lock_139(struct mutex *ldv_func_arg1); 90 void ldv_mutex_lock_141(struct mutex *ldv_func_arg1); 94 void ldv_mutex_lock_143(struct mutex *ldv_func_arg1); 147 void ldv_mutex_lock_mutex_of_ceph_mon_client(struct mutex *lock); 151 void ldv_mutex_unlock_mutex_of_ceph_mon_client(struct mutex *lock); 146 void __wake_up(wait_queue_head_t *, unsigned int, int, void *); 73 void init_completion(struct completion *x); 93 int wait_for_completion_interruptible(struct completion *); 106 void complete(struct completion *); 107 void complete_all(struct completion *); 355 extern struct workqueue_struct *system_wq; 451 bool cancel_delayed_work_sync(struct delayed_work *); 558 bool schedule_delayed_work(struct delayed_work *dwork, unsigned long delay); 61 void rb_insert_color(struct rb_node *, struct rb_root *); 62 void rb_erase(struct rb_node *, struct rb_root *); 66 struct rb_node * rb_next(const struct rb_node *); 68 struct rb_node * rb_first(const struct rb_root *); 79 void rb_link_node(struct rb_node *node, struct rb_node *parent, struct rb_node **rb_link); 90 struct ceph_monmap * ceph_monmap_decode(void *p, void *end); 103 int ceph_monc_got_mdsmap(struct ceph_mon_client *monc, u32 got); 104 int ceph_monc_got_osdmap(struct ceph_mon_client *monc, u32 got); 106 void ceph_monc_request_next_osdmap(struct ceph_mon_client *monc); 107 int ceph_monc_wait_osdmap(struct ceph_mon_client *monc, u32 epoch, unsigned long timeout); 110 int ceph_monc_do_statfs(struct ceph_mon_client *monc, struct ceph_statfs *buf); 113 int ceph_monc_do_get_version(struct ceph_mon_client *monc, const char *what, u64 *newest); 118 int ceph_monc_validate_auth(struct ceph_mon_client *monc); 120 int ceph_monc_create_snapid(struct ceph_mon_client *monc, u32 pool, u64 *snapid); 123 int ceph_monc_delete_snapid(struct ceph_mon_client *monc, u32 pool, u64 snapid); 7 u16 get_unaligned_le16(const void *p); 17 u64 get_unaligned_le64(const void *p); 42 void put_unaligned_le32(u32 val, void *p); 47 void put_unaligned_le64(u64 val, void *p); 17 u64 ceph_decode_64(void **p); 29 u16 ceph_decode_16(void **p); 168 void ceph_encode_64(void **p, u64 v); 173 void ceph_encode_32(void **p, u32 v); 210 void ceph_encode_string(void **p, void *end, const char *s, u32 len); 85 struct ceph_auth_client * ceph_auth_init(const char *name, const struct ceph_crypto_key *key); 87 void ceph_auth_destroy(struct ceph_auth_client *ac); 89 void ceph_auth_reset(struct ceph_auth_client *ac); 91 int ceph_auth_build_hello(struct ceph_auth_client *ac, void *buf, size_t len); 93 int ceph_handle_auth_reply(struct ceph_auth_client *ac, void *buf, size_t len, void *reply_buf, size_t reply_len); 98 int ceph_build_auth(struct ceph_auth_client *ac, void *msg_buf, size_t msg_len); 101 int ceph_auth_is_authenticated(struct ceph_auth_client *ac); 241 void ceph_osdc_handle_map(struct ceph_osd_client *osdc, struct ceph_msg *msg); 29 int ceph_debugfs_client_init(struct ceph_client *client); 113 const struct ceph_connection_operations mon_con_ops; 115 int __validate_auth(struct ceph_mon_client *monc); 184 void __send_prepared_auth_request(struct ceph_mon_client *monc, int len); 197 void __close_session(struct ceph_mon_client *monc); 213 int __open_session(struct ceph_mon_client *monc); 243 bool __sub_expired(struct ceph_mon_client *monc); 251 void __schedule_delayed(struct ceph_mon_client *monc); 266 void __send_subscribe(struct ceph_mon_client *monc); 318 void handle_subscribe_ack(struct ceph_mon_client *monc, struct ceph_msg *msg); 355 const char __kstrtab_ceph_monc_got_mdsmap[21U] = { 'c', 'e', 'p', 'h', '_', 'm', 'o', 'n', 'c', '_', 'g', 'o', 't', '_', 'm', 'd', 's', 'm', 'a', 'p', '\x0' }; 355 const struct kernel_symbol __ksymtab_ceph_monc_got_mdsmap; 355 const struct kernel_symbol __ksymtab_ceph_monc_got_mdsmap = { (unsigned long)(&ceph_monc_got_mdsmap), (const char *)(&__kstrtab_ceph_monc_got_mdsmap) }; 379 const char __kstrtab_ceph_monc_request_next_osdmap[30U] = { 'c', 'e', 'p', 'h', '_', 'm', 'o', 'n', 'c', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'n', 'e', 'x', 't', '_', 'o', 's', 'd', 'm', 'a', 'p', '\x0' }; 379 const struct kernel_symbol __ksymtab_ceph_monc_request_next_osdmap; 379 const struct kernel_symbol __ksymtab_ceph_monc_request_next_osdmap = { (unsigned long)(&ceph_monc_request_next_osdmap), (const char *)(&__kstrtab_ceph_monc_request_next_osdmap) }; 405 const char __kstrtab_ceph_monc_wait_osdmap[22U] = { 'c', 'e', 'p', 'h', '_', 'm', 'o', 'n', 'c', '_', 'w', 'a', 'i', 't', '_', 'o', 's', 'd', 'm', 'a', 'p', '\x0' }; 405 const struct kernel_symbol __ksymtab_ceph_monc_wait_osdmap; 405 const struct kernel_symbol __ksymtab_ceph_monc_wait_osdmap = { (unsigned long)(&ceph_monc_wait_osdmap), (const char *)(&__kstrtab_ceph_monc_wait_osdmap) }; 418 const char __kstrtab_ceph_monc_open_session[23U] = { 'c', 'e', 'p', 'h', '_', 'm', 'o', 'n', 'c', '_', 'o', 'p', 'e', 'n', '_', 's', 'e', 's', 's', 'i', 'o', 'n', '\x0' }; 418 const struct kernel_symbol __ksymtab_ceph_monc_open_session; 418 const struct kernel_symbol __ksymtab_ceph_monc_open_session = { (unsigned long)(&ceph_monc_open_session), (const char *)(&__kstrtab_ceph_monc_open_session) }; 424 bool have_debugfs_info(struct ceph_mon_client *monc); 435 void ceph_monc_handle_map(struct ceph_mon_client *monc, struct ceph_msg *msg); 495 struct ceph_mon_generic_request * __lookup_generic_req(struct ceph_mon_client *monc, u64 tid); 513 void __insert_generic_request(struct ceph_mon_client *monc, struct ceph_mon_generic_request *new); 535 void release_generic_request(struct kref *kref); 548 void put_generic_request(struct ceph_mon_generic_request *req); 553 void get_generic_request(struct ceph_mon_generic_request *req); 558 struct ceph_msg * get_generic_reply(struct ceph_connection *con, struct ceph_msg_header *hdr, int *skip); 587 int __do_generic_request(struct ceph_mon_client *monc, u64 tid, struct ceph_mon_generic_request *req); 611 int do_generic_request(struct ceph_mon_client *monc, struct ceph_mon_generic_request *req); 626 void handle_statfs_reply(struct ceph_mon_client *monc, struct ceph_msg *msg); 697 const char __kstrtab_ceph_monc_do_statfs[20U] = { 'c', 'e', 'p', 'h', '_', 'm', 'o', 'n', 'c', '_', 'd', 'o', '_', 's', 't', 'a', 't', 'f', 's', '\x0' }; 697 const struct kernel_symbol __ksymtab_ceph_monc_do_statfs; 697 const struct kernel_symbol __ksymtab_ceph_monc_do_statfs = { (unsigned long)(&ceph_monc_do_statfs), (const char *)(&__kstrtab_ceph_monc_do_statfs) }; 699 void handle_get_version_reply(struct ceph_mon_client *monc, struct ceph_msg *msg); 787 const char __kstrtab_ceph_monc_do_get_version[25U] = { 'c', 'e', 'p', 'h', '_', 'm', 'o', 'n', 'c', '_', 'd', 'o', '_', 'g', 'e', 't', '_', 'v', 'e', 'r', 's', 'i', 'o', 'n', '\x0' }; 787 const struct kernel_symbol __ksymtab_ceph_monc_do_get_version; 787 const struct kernel_symbol __ksymtab_ceph_monc_do_get_version = { (unsigned long)(&ceph_monc_do_get_version), (const char *)(&__kstrtab_ceph_monc_do_get_version) }; 792 int get_poolop_reply_buf(const char *src, size_t src_len, char *dst, size_t dst_len); 808 void handle_poolop_reply(struct ceph_mon_client *monc, struct ceph_msg *msg); 847 int do_poolop(struct ceph_mon_client *monc, u32 op, u32 pool, u64 snapid, char *buf, int len); 901 const char __kstrtab_ceph_monc_create_snapid[24U] = { 'c', 'e', 'p', 'h', '_', 'm', 'o', 'n', 'c', '_', 'c', 'r', 'e', 'a', 't', 'e', '_', 's', 'n', 'a', 'p', 'i', 'd', '\x0' }; 901 const struct kernel_symbol __ksymtab_ceph_monc_create_snapid; 901 const struct kernel_symbol __ksymtab_ceph_monc_create_snapid = { (unsigned long)(&ceph_monc_create_snapid), (const char *)(&__kstrtab_ceph_monc_create_snapid) }; 914 void __resend_generic_request(struct ceph_mon_client *monc); 932 void delayed_work(struct work_struct *work); 958 int build_initial_monmap(struct ceph_mon_client *monc); 1062 const char __kstrtab_ceph_monc_init[15U] = { 'c', 'e', 'p', 'h', '_', 'm', 'o', 'n', 'c', '_', 'i', 'n', 'i', 't', '\x0' }; 1062 const struct kernel_symbol __ksymtab_ceph_monc_init; 1062 const struct kernel_symbol __ksymtab_ceph_monc_init = { (unsigned long)(&ceph_monc_init), (const char *)(&__kstrtab_ceph_monc_init) }; 1091 const char __kstrtab_ceph_monc_stop[15U] = { 'c', 'e', 'p', 'h', '_', 'm', 'o', 'n', 'c', '_', 's', 't', 'o', 'p', '\x0' }; 1091 const struct kernel_symbol __ksymtab_ceph_monc_stop; 1091 const struct kernel_symbol __ksymtab_ceph_monc_stop = { (unsigned long)(&ceph_monc_stop), (const char *)(&__kstrtab_ceph_monc_stop) }; 1093 void handle_auth_reply(struct ceph_mon_client *monc, struct ceph_msg *msg); 1165 const char __kstrtab_ceph_monc_validate_auth[24U] = { 'c', 'e', 'p', 'h', '_', 'm', 'o', 'n', 'c', '_', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '_', 'a', 'u', 't', 'h', '\x0' }; 1165 const struct kernel_symbol __ksymtab_ceph_monc_validate_auth; 1165 const struct kernel_symbol __ksymtab_ceph_monc_validate_auth = { (unsigned long)(&ceph_monc_validate_auth), (const char *)(&__kstrtab_ceph_monc_validate_auth) }; 1170 void dispatch(struct ceph_connection *con, struct ceph_msg *msg); 1222 struct ceph_msg * mon_alloc_msg(struct ceph_connection *con, struct ceph_msg_header *hdr, int *skip); 1272 void mon_fault(struct ceph_connection *con); 1307 struct ceph_connection * con_get(struct ceph_connection *con); 1312 void con_put(struct ceph_connection *con); 1316 const struct ceph_connection_operations mon_con_ops = { &con_get, &con_put, &dispatch, 0, 0, 0, &mon_fault, 0, &mon_alloc_msg }; 1361 void ldv_main5_sequence_infinite_withcheck_stateful(); 60 void list_add(struct list_head *new, struct list_head *head); 153 void list_move(struct list_head *list, struct list_head *head); 292 void list_splice(const struct list_head *list, struct list_head *head); 15 void __cmpxchg_wrong_size(); 116 int atomic_dec_and_test(atomic_t *v); 175 int atomic_cmpxchg(atomic_t *v, int old, int new); 194 int __atomic_add_unless(atomic_t *v, int a, int u); 51 int atomic_add_unless(atomic_t *v, int a, int u); 178 void ldv_mutex_unlock_192(struct mutex *ldv_func_arg1); 182 void ldv_mutex_unlock_193(struct mutex *ldv_func_arg1); 186 void ldv_mutex_unlock_196(struct mutex *ldv_func_arg1); 190 void ldv_mutex_unlock_198(struct mutex *ldv_func_arg1); 194 void ldv_mutex_unlock_200(struct mutex *ldv_func_arg1); 198 void ldv_mutex_unlock_202(struct mutex *ldv_func_arg1); 202 void ldv_mutex_unlock_204(struct mutex *ldv_func_arg1); 206 void ldv_mutex_unlock_205(struct mutex *ldv_func_arg1); 210 void ldv_mutex_unlock_206(struct mutex *ldv_func_arg1); 214 void ldv_mutex_unlock_208(struct mutex *ldv_func_arg1); 218 void ldv_mutex_unlock_210(struct mutex *ldv_func_arg1); 222 void ldv_mutex_unlock_212(struct mutex *ldv_func_arg1); 226 void ldv_mutex_unlock_214(struct mutex *ldv_func_arg1); 230 void ldv_mutex_unlock_216(struct mutex *ldv_func_arg1); 234 void ldv_mutex_unlock_218(struct mutex *ldv_func_arg1); 238 void ldv_mutex_unlock_220(struct mutex *ldv_func_arg1); 10 void ldv_mutex_lock_191(struct mutex *ldv_func_arg1); 14 void ldv_mutex_lock_194(struct mutex *ldv_func_arg1); 18 void ldv_mutex_lock_195(struct mutex *ldv_func_arg1); 22 void ldv_mutex_lock_197(struct mutex *ldv_func_arg1); 26 void ldv_mutex_lock_199(struct mutex *ldv_func_arg1); 30 void ldv_mutex_lock_201(struct mutex *ldv_func_arg1); 34 void ldv_mutex_lock_203(struct mutex *ldv_func_arg1); 38 void ldv_mutex_lock_207(struct mutex *ldv_func_arg1); 42 void ldv_mutex_lock_209(struct mutex *ldv_func_arg1); 46 void ldv_mutex_lock_211(struct mutex *ldv_func_arg1); 50 void ldv_mutex_lock_213(struct mutex *ldv_func_arg1); 54 void ldv_mutex_lock_215(struct mutex *ldv_func_arg1); 58 void ldv_mutex_lock_217(struct mutex *ldv_func_arg1); 62 void ldv_mutex_lock_219(struct mutex *ldv_func_arg1); 131 void ldv_mutex_lock_request_mutex_of_ceph_osd_client(struct mutex *lock); 135 void ldv_mutex_unlock_request_mutex_of_ceph_osd_client(struct mutex *lock); 84 void __init_rwsem(struct rw_semaphore *, const char *, struct lock_class_key *); 108 void down_read(struct rw_semaphore *); 118 void down_write(struct rw_semaphore *); 128 void up_read(struct rw_semaphore *); 133 void up_write(struct rw_semaphore *); 138 void downgrade_write(struct rw_semaphore *); 91 void wait_for_completion(struct completion *); 431 bool queue_work_on(int, struct workqueue_struct *, struct work_struct *); 471 bool queue_work(struct workqueue_struct *wq, struct work_struct *work); 54 void * mempool_kmalloc(gfp_t , void *); 55 void mempool_kfree(void *, void *); 56 mempool_t * mempool_create_kmalloc_pool(int min_nr, size_t size); 37 void put_unaligned_le16(u16 val, void *p); 332 const char * ceph_osd_op_name(int op); 35 u8 ceph_decode_8(void **p); 143 void ceph_encode_timespec(struct ceph_timespec *tv, const struct timespec *ts); 178 void ceph_encode_16(void **p, u16 v); 183 void ceph_encode_8(void **p, u8 v); 132 void ceph_oid_copy(struct ceph_object_id *dest, struct ceph_object_id *src); 140 int ceph_osd_exists(struct ceph_osdmap *map, int osd); 146 int ceph_osd_is_up(struct ceph_osdmap *map, int osd); 157 bool ceph_osdmap_flag(struct ceph_osdmap *map, int flag); 165 struct ceph_entity_addr * ceph_osd_addr(struct ceph_osdmap *map, int osd); 173 int ceph_decode_pgid(void **p, void *end, struct ceph_pg *pgid); 196 struct ceph_osdmap * ceph_osdmap_decode(void **p, void *end); 197 struct ceph_osdmap * osdmap_apply_incremental(void **p, void *end, struct ceph_osdmap *map, struct ceph_messenger *msgr); 200 void ceph_osdmap_destroy(struct ceph_osdmap *map); 203 int ceph_calc_file_object_mapping(struct ceph_file_layout *layout, u64 off, u64 len, u64 *ono, u64 *oxoff, u64 *oxlen); 208 int ceph_oloc_oid_to_pg(struct ceph_osdmap *osdmap, struct ceph_object_locator *oloc, struct ceph_object_id *oid, struct ceph_pg *pg_out); 213 int ceph_calc_pg_acting(struct ceph_osdmap *osdmap, struct ceph_pg pgid, int *osds, int *primary); 219 struct ceph_pg_pool_info * ceph_pg_pool_by_id(struct ceph_osdmap *map, u64 id); 102 int ceph_auth_create_authorizer(struct ceph_auth_client *ac, int peer_type, struct ceph_auth_handshake *auth); 105 void ceph_auth_destroy_authorizer(struct ceph_auth_client *ac, struct ceph_authorizer *a); 107 int ceph_auth_update_authorizer(struct ceph_auth_client *ac, int peer_type, struct ceph_auth_handshake *a); 110 int ceph_auth_verify_authorizer_reply(struct ceph_auth_client *ac, struct ceph_authorizer *a, size_t len); 113 void ceph_auth_invalidate_authorizer(struct ceph_auth_client *ac, int peer_type); 21 void ceph_pagelist_init(struct ceph_pagelist *pl); 244 void osd_req_op_init(struct ceph_osd_request *osd_req, unsigned int which, u16 opcode); 247 void osd_req_op_raw_data_in_pages(struct ceph_osd_request *osd_req, unsigned int which, struct page **pages, u64 length, u32 alignment, bool pages_from_pool, bool own_pages); 253 void osd_req_op_extent_init(struct ceph_osd_request *osd_req, unsigned int which, u16 opcode, u64 offset, u64 length, u64 truncate_size, u32 truncate_seq); 257 void osd_req_op_extent_update(struct ceph_osd_request *osd_req, unsigned int which, u64 length); 260 struct ceph_osd_data * osd_req_op_extent_osd_data(struct ceph_osd_request *osd_req, unsigned int which); 263 struct ceph_osd_data * osd_req_op_cls_response_data(struct ceph_osd_request *osd_req, unsigned int which); 267 void osd_req_op_extent_osd_data_pages(struct ceph_osd_request *osd_req, unsigned int which, struct page **pages, u64 length, u32 alignment, bool pages_from_pool, bool own_pages); 272 void osd_req_op_extent_osd_data_pagelist(struct ceph_osd_request *osd_req, unsigned int which, struct ceph_pagelist *pagelist); 276 void osd_req_op_extent_osd_data_bio(struct ceph_osd_request *osd_req, unsigned int which, struct bio *bio, size_t bio_length); 281 void osd_req_op_cls_request_data_pagelist(struct ceph_osd_request *osd_req, unsigned int which, struct ceph_pagelist *pagelist); 284 void osd_req_op_cls_request_data_pages(struct ceph_osd_request *osd_req, unsigned int which, struct page **pages, u64 length, u32 alignment, bool pages_from_pool, bool own_pages); 289 void osd_req_op_cls_response_data_pages(struct ceph_osd_request *osd_req, unsigned int which, struct page **pages, u64 length, u32 alignment, bool pages_from_pool, bool own_pages); 295 void osd_req_op_cls_init(struct ceph_osd_request *osd_req, unsigned int which, u16 opcode, const char *class, const char *method); 298 void osd_req_op_watch_init(struct ceph_osd_request *osd_req, unsigned int which, u16 opcode, u64 cookie, u64 version, int flag); 301 void osd_req_op_alloc_hint_init(struct ceph_osd_request *osd_req, unsigned int which, u64 expected_object_size, u64 expected_write_size); 306 struct ceph_osd_request * ceph_osdc_alloc_request(struct ceph_osd_client *osdc, struct ceph_snap_context *snapc, unsigned int num_ops, bool use_mempool, gfp_t gfp_flags); 312 void ceph_osdc_build_request(struct ceph_osd_request *req, u64 off, struct ceph_snap_context *snapc, u64 snap_id, struct timespec *mtime); 317 struct ceph_osd_request * ceph_osdc_new_request(struct ceph_osd_client *osdc, struct ceph_file_layout *layout, struct ceph_vino vino, u64 off, u64 *plen, int num_ops, int opcode, int flags, struct ceph_snap_context *snapc, u32 truncate_seq, u64 truncate_size, bool use_mempool); 326 void ceph_osdc_set_request_linger(struct ceph_osd_client *osdc, struct ceph_osd_request *req); 329 void ceph_osdc_get_request(struct ceph_osd_request *req); 330 void ceph_osdc_put_request(struct ceph_osd_request *req); 332 int ceph_osdc_start_request(struct ceph_osd_client *osdc, struct ceph_osd_request *req, bool nofail); 335 void ceph_osdc_cancel_request(struct ceph_osd_request *req); 336 int ceph_osdc_wait_request(struct ceph_osd_client *osdc, struct ceph_osd_request *req); 338 void ceph_osdc_sync(struct ceph_osd_client *osdc); 340 void ceph_osdc_flush_notifies(struct ceph_osd_client *osdc); 342 int ceph_osdc_readpages(struct ceph_osd_client *osdc, struct ceph_vino vino, struct ceph_file_layout *layout, u64 off, u64 *plen, u32 truncate_seq, u64 truncate_size, struct page **pages, int num_pages, int page_align); 350 int ceph_osdc_writepages(struct ceph_osd_client *osdc, struct ceph_vino vino, struct ceph_file_layout *layout, struct ceph_snap_context *snapc, u64 off, u64 len, u32 truncate_seq, u64 truncate_size, struct timespec *mtime, struct page **pages, int num_pages); 360 int ceph_osdc_create_event(struct ceph_osd_client *osdc, void (*event_cb)(u64 , u64 , u8 , void *), void *data, struct ceph_osd_event **pevent); 363 void ceph_osdc_cancel_event(struct ceph_osd_event *event); 364 void ceph_osdc_put_event(struct ceph_osd_event *event); 162 struct ceph_snap_context * ceph_get_snap_context(struct ceph_snap_context *sc); 164 void ceph_put_snap_context(struct ceph_snap_context *sc); 207 void ceph_release_page_vector(struct page **pages, int num_pages); 105 struct kmem_cache *ceph_osd_request_cache = 0; 107 const struct ceph_connection_operations osd_con_ops; 109 void __send_queued(struct ceph_osd_client *osdc); 110 int __reset_osd(struct ceph_osd_client *osdc, struct ceph_osd *osd); 111 void __register_request(struct ceph_osd_client *osdc, struct ceph_osd_request *req); 113 void __unregister_linger_request(struct ceph_osd_client *osdc, struct ceph_osd_request *req); 115 void __send_request(struct ceph_osd_client *osdc, struct ceph_osd_request *req); 143 int calc_layout(struct ceph_file_layout *layout, u64 off, u64 *plen, u64 *objnum, u64 *objoff, u64 *objlen); 165 void ceph_osd_data_init(struct ceph_osd_data *osd_data); 171 void ceph_osd_data_pages_init(struct ceph_osd_data *osd_data, struct page **pages, u64 length, u32 alignment, bool pages_from_pool, bool own_pages); 183 void ceph_osd_data_pagelist_init(struct ceph_osd_data *osd_data, struct ceph_pagelist *pagelist); 191 void ceph_osd_data_bio_init(struct ceph_osd_data *osd_data, struct bio *bio, size_t bio_length); 207 struct ceph_osd_data * osd_req_op_raw_data_in(struct ceph_osd_request *osd_req, unsigned int which); 220 const char __kstrtab_osd_req_op_extent_osd_data[27U] = { 'o', 's', 'd', '_', 'r', 'e', 'q', '_', 'o', 'p', '_', 'e', 'x', 't', 'e', 'n', 't', '_', 'o', 's', 'd', '_', 'd', 'a', 't', 'a', '\x0' }; 220 const struct kernel_symbol __ksymtab_osd_req_op_extent_osd_data; 220 const struct kernel_symbol __ksymtab_osd_req_op_extent_osd_data = { (unsigned long)(&osd_req_op_extent_osd_data), (const char *)(&__kstrtab_osd_req_op_extent_osd_data) }; 228 const char __kstrtab_osd_req_op_cls_response_data[29U] = { 'o', 's', 'd', '_', 'r', 'e', 'q', '_', 'o', 'p', '_', 'c', 'l', 's', '_', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '_', 'd', 'a', 't', 'a', '\x0' }; 228 const struct kernel_symbol __ksymtab_osd_req_op_cls_response_data; 228 const struct kernel_symbol __ksymtab_osd_req_op_cls_response_data = { (unsigned long)(&osd_req_op_cls_response_data), (const char *)(&__kstrtab_osd_req_op_cls_response_data) }; 241 const char __kstrtab_osd_req_op_raw_data_in_pages[29U] = { 'o', 's', 'd', '_', 'r', 'e', 'q', '_', 'o', 'p', '_', 'r', 'a', 'w', '_', 'd', 'a', 't', 'a', '_', 'i', 'n', '_', 'p', 'a', 'g', 'e', 's', '\x0' }; 241 const struct kernel_symbol __ksymtab_osd_req_op_raw_data_in_pages; 241 const struct kernel_symbol __ksymtab_osd_req_op_raw_data_in_pages = { (unsigned long)(&osd_req_op_raw_data_in_pages), (const char *)(&__kstrtab_osd_req_op_raw_data_in_pages) }; 254 const char __kstrtab_osd_req_op_extent_osd_data_pages[33U] = { 'o', 's', 'd', '_', 'r', 'e', 'q', '_', 'o', 'p', '_', 'e', 'x', 't', 'e', 'n', 't', '_', 'o', 's', 'd', '_', 'd', 'a', 't', 'a', '_', 'p', 'a', 'g', 'e', 's', '\x0' }; 254 const struct kernel_symbol __ksymtab_osd_req_op_extent_osd_data_pages; 254 const struct kernel_symbol __ksymtab_osd_req_op_extent_osd_data_pages = { (unsigned long)(&osd_req_op_extent_osd_data_pages), (const char *)(&__kstrtab_osd_req_op_extent_osd_data_pages) }; 264 const char __kstrtab_osd_req_op_extent_osd_data_pagelist[36U] = { 'o', 's', 'd', '_', 'r', 'e', 'q', '_', 'o', 'p', '_', 'e', 'x', 't', 'e', 'n', 't', '_', 'o', 's', 'd', '_', 'd', 'a', 't', 'a', '_', 'p', 'a', 'g', 'e', 'l', 'i', 's', 't', '\x0' }; 264 const struct kernel_symbol __ksymtab_osd_req_op_extent_osd_data_pagelist; 264 const struct kernel_symbol __ksymtab_osd_req_op_extent_osd_data_pagelist = { (unsigned long)(&osd_req_op_extent_osd_data_pagelist), (const char *)(&__kstrtab_osd_req_op_extent_osd_data_pagelist) }; 275 const char __kstrtab_osd_req_op_extent_osd_data_bio[31U] = { 'o', 's', 'd', '_', 'r', 'e', 'q', '_', 'o', 'p', '_', 'e', 'x', 't', 'e', 'n', 't', '_', 'o', 's', 'd', '_', 'd', 'a', 't', 'a', '_', 'b', 'i', 'o', '\x0' }; 275 const struct kernel_symbol __ksymtab_osd_req_op_extent_osd_data_bio; 275 const struct kernel_symbol __ksymtab_osd_req_op_extent_osd_data_bio = { (unsigned long)(&osd_req_op_extent_osd_data_bio), (const char *)(&__kstrtab_osd_req_op_extent_osd_data_bio) }; 278 void osd_req_op_cls_request_info_pagelist(struct ceph_osd_request *osd_req, unsigned int which, struct ceph_pagelist *pagelist); 297 const char __kstrtab_osd_req_op_cls_request_data_pagelist[37U] = { 'o', 's', 'd', '_', 'r', 'e', 'q', '_', 'o', 'p', '_', 'c', 'l', 's', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'd', 'a', 't', 'a', '_', 'p', 'a', 'g', 'e', 'l', 'i', 's', 't', '\x0' }; 297 const struct kernel_symbol __ksymtab_osd_req_op_cls_request_data_pagelist; 297 const struct kernel_symbol __ksymtab_osd_req_op_cls_request_data_pagelist = { (unsigned long)(&osd_req_op_cls_request_data_pagelist), (const char *)(&__kstrtab_osd_req_op_cls_request_data_pagelist) }; 309 const char __kstrtab_osd_req_op_cls_request_data_pages[34U] = { 'o', 's', 'd', '_', 'r', 'e', 'q', '_', 'o', 'p', '_', 'c', 'l', 's', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'd', 'a', 't', 'a', '_', 'p', 'a', 'g', 'e', 's', '\x0' }; 309 const struct kernel_symbol __ksymtab_osd_req_op_cls_request_data_pages; 309 const struct kernel_symbol __ksymtab_osd_req_op_cls_request_data_pages = { (unsigned long)(&osd_req_op_cls_request_data_pages), (const char *)(&__kstrtab_osd_req_op_cls_request_data_pages) }; 321 const char __kstrtab_osd_req_op_cls_response_data_pages[35U] = { 'o', 's', 'd', '_', 'r', 'e', 'q', '_', 'o', 'p', '_', 'c', 'l', 's', '_', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '_', 'd', 'a', 't', 'a', '_', 'p', 'a', 'g', 'e', 's', '\x0' }; 321 const struct kernel_symbol __ksymtab_osd_req_op_cls_response_data_pages; 321 const struct kernel_symbol __ksymtab_osd_req_op_cls_response_data_pages = { (unsigned long)(&osd_req_op_cls_response_data_pages), (const char *)(&__kstrtab_osd_req_op_cls_response_data_pages) }; 323 u64 ceph_osd_data_length(struct ceph_osd_data *osd_data); 342 void ceph_osd_data_release(struct ceph_osd_data *osd_data); 354 void osd_req_op_data_release(struct ceph_osd_request *osd_req, unsigned int which); 380 void ceph_osdc_release_request(struct kref *kref); 419 const char __kstrtab_ceph_osdc_get_request[22U] = { 'c', 'e', 'p', 'h', '_', 'o', 's', 'd', 'c', '_', 'g', 'e', 't', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '\x0' }; 419 const struct kernel_symbol __ksymtab_ceph_osdc_get_request; 419 const struct kernel_symbol __ksymtab_ceph_osdc_get_request = { (unsigned long)(&ceph_osdc_get_request), (const char *)(&__kstrtab_ceph_osdc_get_request) }; 427 const char __kstrtab_ceph_osdc_put_request[22U] = { 'c', 'e', 'p', 'h', '_', 'o', 's', 'd', 'c', '_', 'p', 'u', 't', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '\x0' }; 427 const struct kernel_symbol __ksymtab_ceph_osdc_put_request; 427 const struct kernel_symbol __ksymtab_ceph_osdc_put_request = { (unsigned long)(&ceph_osdc_put_request), (const char *)(&__kstrtab_ceph_osdc_put_request) }; 506 const char __kstrtab_ceph_osdc_alloc_request[24U] = { 'c', 'e', 'p', 'h', '_', 'o', 's', 'd', 'c', '_', 'a', 'l', 'l', 'o', 'c', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '\x0' }; 506 const struct kernel_symbol __ksymtab_ceph_osdc_alloc_request; 506 const struct kernel_symbol __ksymtab_ceph_osdc_alloc_request = { (unsigned long)(&ceph_osdc_alloc_request), (const char *)(&__kstrtab_ceph_osdc_alloc_request) }; 508 bool osd_req_opcode_valid(u16 opcode); 584 struct ceph_osd_req_op * _osd_req_op_init(struct ceph_osd_request *osd_req, unsigned int which, u16 opcode); 604 const char __kstrtab_osd_req_op_init[16U] = { 'o', 's', 'd', '_', 'r', 'e', 'q', '_', 'o', 'p', '_', 'i', 'n', 'i', 't', '\x0' }; 604 const struct kernel_symbol __ksymtab_osd_req_op_init; 604 const struct kernel_symbol __ksymtab_osd_req_op_init = { (unsigned long)(&osd_req_op_init), (const char *)(&__kstrtab_osd_req_op_init) }; 627 const char __kstrtab_osd_req_op_extent_init[23U] = { 'o', 's', 'd', '_', 'r', 'e', 'q', '_', 'o', 'p', '_', 'e', 'x', 't', 'e', 'n', 't', '_', 'i', 'n', 'i', 't', '\x0' }; 627 const struct kernel_symbol __ksymtab_osd_req_op_extent_init; 627 const struct kernel_symbol __ksymtab_osd_req_op_extent_init = { (unsigned long)(&osd_req_op_extent_init), (const char *)(&__kstrtab_osd_req_op_extent_init) }; 646 const char __kstrtab_osd_req_op_extent_update[25U] = { 'o', 's', 'd', '_', 'r', 'e', 'q', '_', 'o', 'p', '_', 'e', 'x', 't', 'e', 'n', 't', '_', 'u', 'p', 'd', 'a', 't', 'e', '\x0' }; 646 const struct kernel_symbol __ksymtab_osd_req_op_extent_update; 646 const struct kernel_symbol __ksymtab_osd_req_op_extent_update = { (unsigned long)(&osd_req_op_extent_update), (const char *)(&__kstrtab_osd_req_op_extent_update) }; 682 const char __kstrtab_osd_req_op_cls_init[20U] = { 'o', 's', 'd', '_', 'r', 'e', 'q', '_', 'o', 'p', '_', 'c', 'l', 's', '_', 'i', 'n', 'i', 't', '\x0' }; 682 const struct kernel_symbol __ksymtab_osd_req_op_cls_init; 682 const struct kernel_symbol __ksymtab_osd_req_op_cls_init = { (unsigned long)(&osd_req_op_cls_init), (const char *)(&__kstrtab_osd_req_op_cls_init) }; 697 const char __kstrtab_osd_req_op_watch_init[22U] = { 'o', 's', 'd', '_', 'r', 'e', 'q', '_', 'o', 'p', '_', 'w', 'a', 't', 'c', 'h', '_', 'i', 'n', 'i', 't', '\x0' }; 697 const struct kernel_symbol __ksymtab_osd_req_op_watch_init; 697 const struct kernel_symbol __ksymtab_osd_req_op_watch_init = { (unsigned long)(&osd_req_op_watch_init), (const char *)(&__kstrtab_osd_req_op_watch_init) }; 717 const char __kstrtab_osd_req_op_alloc_hint_init[27U] = { 'o', 's', 'd', '_', 'r', 'e', 'q', '_', 'o', 'p', '_', 'a', 'l', 'l', 'o', 'c', '_', 'h', 'i', 'n', 't', '_', 'i', 'n', 'i', 't', '\x0' }; 717 const struct kernel_symbol __ksymtab_osd_req_op_alloc_hint_init; 717 const struct kernel_symbol __ksymtab_osd_req_op_alloc_hint_init = { (unsigned long)(&osd_req_op_alloc_hint_init), (const char *)(&__kstrtab_osd_req_op_alloc_hint_init) }; 719 void ceph_osdc_msg_data_add(struct ceph_msg *msg, struct ceph_osd_data *osd_data); 741 u64 osd_req_encode_op(struct ceph_osd_request *req, struct ceph_osd_op *dst, unsigned int which); 908 const char __kstrtab_ceph_osdc_new_request[22U] = { 'c', 'e', 'p', 'h', '_', 'o', 's', 'd', 'c', '_', 'n', 'e', 'w', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '\x0' }; 908 const struct kernel_symbol __ksymtab_ceph_osdc_new_request; 908 const struct kernel_symbol __ksymtab_ceph_osdc_new_request = { (unsigned long)(&ceph_osdc_new_request), (const char *)(&__kstrtab_ceph_osdc_new_request) }; 913 void __insert_request(struct ceph_osd_client *osdc, struct ceph_osd_request *new); 935 struct ceph_osd_request * __lookup_request(struct ceph_osd_client *osdc, u64 tid); 954 struct ceph_osd_request * __lookup_request_ge(struct ceph_osd_client *osdc, u64 tid); 978 void __kick_osd_requests(struct ceph_osd_client *osdc, struct ceph_osd *osd); 1041 void osd_reset(struct ceph_connection *con); 1061 struct ceph_osd * create_osd(struct ceph_osd_client *osdc, int onum); 1084 struct ceph_osd * get_osd(struct ceph_osd *osd); 1096 void put_osd(struct ceph_osd *osd); 1111 void __remove_osd(struct ceph_osd_client *osdc, struct ceph_osd *osd); 1123 void remove_all_osds(struct ceph_osd_client *osdc); 1135 void __move_osd_to_lru(struct ceph_osd_client *osdc, struct ceph_osd *osd); 1145 void maybe_move_osd_to_lru(struct ceph_osd_client *osdc, struct ceph_osd *osd); 1155 void __remove_osd_from_lru(struct ceph_osd *osd); 1162 void remove_old_osds(struct ceph_osd_client *osdc); 1212 void __insert_osd(struct ceph_osd_client *osdc, struct ceph_osd *new); 1234 struct ceph_osd * __lookup_osd(struct ceph_osd_client *osdc, int o); 1251 void __schedule_osd_timeout(struct ceph_osd_client *osdc); 1257 void __cancel_osd_timeout(struct ceph_osd_client *osdc); 1284 void __unregister_request(struct ceph_osd_client *osdc, struct ceph_osd_request *req); 1320 void __cancel_request(struct ceph_osd_request *req); 1328 void __register_linger_request(struct ceph_osd_client *osdc, struct ceph_osd_request *req); 1372 const char __kstrtab_ceph_osdc_set_request_linger[29U] = { 'c', 'e', 'p', 'h', '_', 'o', 's', 'd', 'c', '_', 's', 'e', 't', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'l', 'i', 'n', 'g', 'e', 'r', '\x0' }; 1372 const struct kernel_symbol __ksymtab_ceph_osdc_set_request_linger; 1372 const struct kernel_symbol __ksymtab_ceph_osdc_set_request_linger = { (unsigned long)(&ceph_osdc_set_request_linger), (const char *)(&__kstrtab_ceph_osdc_set_request_linger) }; 1380 bool __req_should_be_paused(struct ceph_osd_client *osdc, struct ceph_osd_request *req); 1393 int __calc_request_pg(struct ceph_osdmap *osdmap, struct ceph_osd_request *req, struct ceph_pg *pg_out); 1439 int __map_request(struct ceph_osd_client *osdc, struct ceph_osd_request *req, int force_resend); 1567 int __ceph_osdc_start_request(struct ceph_osd_client *osdc, struct ceph_osd_request *req, bool nofail); 1607 void handle_timeout(struct work_struct *work); 1652 void handle_osds_timeout(struct work_struct *work); 1669 int ceph_oloc_decode(void **p, void *end, struct ceph_object_locator *oloc); 1729 int ceph_redirect_decode(void **p, void *end, struct ceph_request_redirect *redir); 1772 void complete_request(struct ceph_osd_request *req); 1781 void handle_reply(struct ceph_osd_client *osdc, struct ceph_msg *msg, struct ceph_connection *con); 1974 void reset_changed_osds(struct ceph_osd_client *osdc); 1997 void kick_requests(struct ceph_osd_client *osdc, bool force_resend, bool force_resend_writes); 2227 void __release_event(struct kref *kref); 2236 void get_event(struct ceph_osd_event *event); 2245 const char __kstrtab_ceph_osdc_put_event[20U] = { 'c', 'e', 'p', 'h', '_', 'o', 's', 'd', 'c', '_', 'p', 'u', 't', '_', 'e', 'v', 'e', 'n', 't', '\x0' }; 2245 const struct kernel_symbol __ksymtab_ceph_osdc_put_event; 2245 const struct kernel_symbol __ksymtab_ceph_osdc_put_event = { (unsigned long)(&ceph_osdc_put_event), (const char *)(&__kstrtab_ceph_osdc_put_event) }; 2247 void __insert_event(struct ceph_osd_client *osdc, struct ceph_osd_event *new); 2269 struct ceph_osd_event * __find_event(struct ceph_osd_client *osdc, u64 cookie); 2289 void __remove_event(struct ceph_osd_event *event); 2330 const char __kstrtab_ceph_osdc_create_event[23U] = { 'c', 'e', 'p', 'h', '_', 'o', 's', 'd', 'c', '_', 'c', 'r', 'e', 'a', 't', 'e', '_', 'e', 'v', 'e', 'n', 't', '\x0' }; 2330 const struct kernel_symbol __ksymtab_ceph_osdc_create_event; 2330 const struct kernel_symbol __ksymtab_ceph_osdc_create_event = { (unsigned long)(&ceph_osdc_create_event), (const char *)(&__kstrtab_ceph_osdc_create_event) }; 2342 const char __kstrtab_ceph_osdc_cancel_event[23U] = { 'c', 'e', 'p', 'h', '_', 'o', 's', 'd', 'c', '_', 'c', 'a', 'n', 'c', 'e', 'l', '_', 'e', 'v', 'e', 'n', 't', '\x0' }; 2342 const struct kernel_symbol __ksymtab_ceph_osdc_cancel_event; 2342 const struct kernel_symbol __ksymtab_ceph_osdc_cancel_event = { (unsigned long)(&ceph_osdc_cancel_event), (const char *)(&__kstrtab_ceph_osdc_cancel_event) }; 2345 void do_event_work(struct work_struct *work); 2365 void handle_watch_notify(struct ceph_osd_client *osdc, struct ceph_msg *msg); 2517 const char __kstrtab_ceph_osdc_build_request[24U] = { 'c', 'e', 'p', 'h', '_', 'o', 's', 'd', 'c', '_', 'b', 'u', 'i', 'l', 'd', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '\x0' }; 2517 const struct kernel_symbol __ksymtab_ceph_osdc_build_request; 2517 const struct kernel_symbol __ksymtab_ceph_osdc_build_request = { (unsigned long)(&ceph_osdc_build_request), (const char *)(&__kstrtab_ceph_osdc_build_request) }; 2538 const char __kstrtab_ceph_osdc_start_request[24U] = { 'c', 'e', 'p', 'h', '_', 'o', 's', 'd', 'c', '_', 's', 't', 'a', 'r', 't', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '\x0' }; 2538 const struct kernel_symbol __ksymtab_ceph_osdc_start_request; 2538 const struct kernel_symbol __ksymtab_ceph_osdc_start_request = { (unsigned long)(&ceph_osdc_start_request), (const char *)(&__kstrtab_ceph_osdc_start_request) }; 2557 const char __kstrtab_ceph_osdc_cancel_request[25U] = { 'c', 'e', 'p', 'h', '_', 'o', 's', 'd', 'c', '_', 'c', 'a', 'n', 'c', 'e', 'l', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '\x0' }; 2557 const struct kernel_symbol __ksymtab_ceph_osdc_cancel_request; 2557 const struct kernel_symbol __ksymtab_ceph_osdc_cancel_request = { (unsigned long)(&ceph_osdc_cancel_request), (const char *)(&__kstrtab_ceph_osdc_cancel_request) }; 2581 const char __kstrtab_ceph_osdc_wait_request[23U] = { 'c', 'e', 'p', 'h', '_', 'o', 's', 'd', 'c', '_', 'w', 'a', 'i', 't', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '\x0' }; 2581 const struct kernel_symbol __ksymtab_ceph_osdc_wait_request; 2581 const struct kernel_symbol __ksymtab_ceph_osdc_wait_request = { (unsigned long)(&ceph_osdc_wait_request), (const char *)(&__kstrtab_ceph_osdc_wait_request) }; 2615 const char __kstrtab_ceph_osdc_sync[15U] = { 'c', 'e', 'p', 'h', '_', 'o', 's', 'd', 'c', '_', 's', 'y', 'n', 'c', '\x0' }; 2615 const struct kernel_symbol __ksymtab_ceph_osdc_sync; 2615 const struct kernel_symbol __ksymtab_ceph_osdc_sync = { (unsigned long)(&ceph_osdc_sync), (const char *)(&__kstrtab_ceph_osdc_sync) }; 2625 const char __kstrtab_ceph_osdc_flush_notifies[25U] = { 'c', 'e', 'p', 'h', '_', 'o', 's', 'd', 'c', '_', 'f', 'l', 'u', 's', 'h', '_', 'n', 'o', 't', 'i', 'f', 'i', 'e', 's', '\x0' }; 2625 const struct kernel_symbol __ksymtab_ceph_osdc_flush_notifies; 2625 const struct kernel_symbol __ksymtab_ceph_osdc_flush_notifies = { (unsigned long)(&ceph_osdc_flush_notifies), (const char *)(&__kstrtab_ceph_osdc_flush_notifies) }; 2750 const char __kstrtab_ceph_osdc_readpages[20U] = { 'c', 'e', 'p', 'h', '_', 'o', 's', 'd', 'c', '_', 'r', 'e', 'a', 'd', 'p', 'a', 'g', 'e', 's', '\x0' }; 2750 const struct kernel_symbol __ksymtab_ceph_osdc_readpages; 2750 const struct kernel_symbol __ksymtab_ceph_osdc_readpages = { (unsigned long)(&ceph_osdc_readpages), (const char *)(&__kstrtab_ceph_osdc_readpages) }; 2793 const char __kstrtab_ceph_osdc_writepages[21U] = { 'c', 'e', 'p', 'h', '_', 'o', 's', 'd', 'c', '_', 'w', 'r', 'i', 't', 'e', 'p', 'a', 'g', 'e', 's', '\x0' }; 2793 const struct kernel_symbol __ksymtab_ceph_osdc_writepages; 2793 const struct kernel_symbol __ksymtab_ceph_osdc_writepages = { (unsigned long)(&ceph_osdc_writepages), (const char *)(&__kstrtab_ceph_osdc_writepages) }; 2805 const char __kstrtab_ceph_osdc_setup[16U] = { 'c', 'e', 'p', 'h', '_', 'o', 's', 'd', 'c', '_', 's', 'e', 't', 'u', 'p', '\x0' }; 2805 const struct kernel_symbol __ksymtab_ceph_osdc_setup; 2805 const struct kernel_symbol __ksymtab_ceph_osdc_setup = { (unsigned long)(&ceph_osdc_setup), (const char *)(&__kstrtab_ceph_osdc_setup) }; 2813 const char __kstrtab_ceph_osdc_cleanup[18U] = { 'c', 'e', 'p', 'h', '_', 'o', 's', 'd', 'c', '_', 'c', 'l', 'e', 'a', 'n', 'u', 'p', '\x0' }; 2813 const struct kernel_symbol __ksymtab_ceph_osdc_cleanup; 2813 const struct kernel_symbol __ksymtab_ceph_osdc_cleanup = { (unsigned long)(&ceph_osdc_cleanup), (const char *)(&__kstrtab_ceph_osdc_cleanup) }; 2818 void dispatch___0(struct ceph_connection *con, struct ceph_msg *msg); 2851 struct ceph_msg * get_reply(struct ceph_connection *con, struct ceph_msg_header *hdr, int *skip); 2925 struct ceph_msg * alloc_msg(struct ceph_connection *con, struct ceph_msg_header *hdr, int *skip); 2951 struct ceph_connection * get_osd_con(struct ceph_connection *con); 2959 void put_osd_con(struct ceph_connection *con); 2972 struct ceph_auth_handshake * get_authorizer(struct ceph_connection *con, int *proto, int force_new); 3001 int verify_authorizer_reply(struct ceph_connection *con, int len); 3010 int invalidate_authorizer(struct ceph_connection *con); 3020 const struct ceph_connection_operations osd_con_ops = { &get_osd_con, &put_osd_con, &dispatch___0, &get_authorizer, &verify_authorizer_reply, &invalidate_authorizer, &osd_reset, 0, &alloc_msg }; 3068 void ldv_main6_sequence_infinite_withcheck_stateful(); 178 void ldv_mutex_unlock_252(struct mutex *ldv_func_arg1); 182 void ldv_mutex_unlock_253(struct mutex *ldv_func_arg1); 186 void ldv_mutex_unlock_256(struct mutex *ldv_func_arg1); 10 void ldv_mutex_lock_251(struct mutex *ldv_func_arg1); 14 void ldv_mutex_lock_254(struct mutex *ldv_func_arg1); 18 void ldv_mutex_lock_255(struct mutex *ldv_func_arg1); 23 void ldv_mutex_lock_crush_scratch_mutex_of_ceph_osdmap(struct mutex *lock); 27 void ldv_mutex_unlock_crush_scratch_mutex_of_ceph_osdmap(struct mutex *lock); 143 void * krealloc(const void *, size_t , gfp_t ); 97 int ceph_stable_mod(int x, int b, int bmask); 10 unsigned int ceph_str_hash(int type, const char *s, unsigned int len); 194 void crush_destroy(struct crush_map *map); 44 bool ceph_can_shift_osds(struct ceph_pg_pool_info *pool); 152 int ceph_osd_is_down(struct ceph_osdmap *map, int osd); 162 char * ceph_osdmap_state_str(char *str, int len, int state); 163 u32 ceph_get_primary_affinity(struct ceph_osdmap *map, int osd); 216 int ceph_calc_pg_primary(struct ceph_osdmap *osdmap, struct ceph_pg pgid); 222 const char * ceph_pg_pool_name_by_id(struct ceph_osdmap *map, u64 id); 223 int ceph_pg_poolid_by_name(struct ceph_osdmap *map, const char *name); 11 __u32 crush_hash32_2(int type, __u32 a, __u32 b); 13 int crush_find_rule(const struct crush_map *map, int ruleset, int type, int size); 14 int crush_do_rule(const struct crush_map *map, int ruleno, int x, int *result, int result_max, const __u32 *weight, int weight_max, int *scratch); 112 int calc_bits_of(unsigned int t); 125 void calc_pg_masks(struct ceph_pg_pool_info *pi); 134 int crush_decode_uniform_bucket(void **p, void *end, struct crush_bucket_uniform *b); 145 int crush_decode_list_bucket(void **p, void *end, struct crush_bucket_list *b); 166 int crush_decode_tree_bucket(void **p, void *end, struct crush_bucket_tree *b); 183 int crush_decode_straw_bucket(void **p, void *end, struct crush_bucket_straw *b); 204 int skip_name_map(void **p, void *end); 219 struct crush_map * crush_decode(void *pbyval, void *end); 432 int pgid_cmp(struct ceph_pg l, struct ceph_pg r); 445 int __insert_pg_mapping(struct ceph_pg_mapping *new, struct rb_root *root); 471 struct ceph_pg_mapping * __lookup_pg_mapping(struct rb_root *root, struct ceph_pg pgid); 494 int __remove_pg_mapping(struct rb_root *root, struct ceph_pg pgid); 512 int __insert_pg_pool(struct rb_root *root, struct ceph_pg_pool_info *new); 534 struct ceph_pg_pool_info * __lookup_pg_pool(struct rb_root *root, u64 id); 570 const char __kstrtab_ceph_pg_pool_name_by_id[24U] = { 'c', 'e', 'p', 'h', '_', 'p', 'g', '_', 'p', 'o', 'o', 'l', '_', 'n', 'a', 'm', 'e', '_', 'b', 'y', '_', 'i', 'd', '\x0' }; 570 const struct kernel_symbol __ksymtab_ceph_pg_pool_name_by_id; 570 const struct kernel_symbol __ksymtab_ceph_pg_pool_name_by_id = { (unsigned long)(&ceph_pg_pool_name_by_id), (const char *)(&__kstrtab_ceph_pg_pool_name_by_id) }; 584 const char __kstrtab_ceph_pg_poolid_by_name[23U] = { 'c', 'e', 'p', 'h', '_', 'p', 'g', '_', 'p', 'o', 'o', 'l', 'i', 'd', '_', 'b', 'y', '_', 'n', 'a', 'm', 'e', '\x0' }; 584 const struct kernel_symbol __ksymtab_ceph_pg_poolid_by_name; 584 const struct kernel_symbol __ksymtab_ceph_pg_poolid_by_name = { (unsigned long)(&ceph_pg_poolid_by_name), (const char *)(&__kstrtab_ceph_pg_poolid_by_name) }; 586 void __remove_pg_pool(struct rb_root *root, struct ceph_pg_pool_info *pi); 593 int decode_pool(void **p, void *end, struct ceph_pg_pool_info *pi); 674 int decode_pool_names(void **p, void *end, struct ceph_osdmap *map); 745 int osdmap_set_max_osd(struct ceph_osdmap *map, int max); 800 int get_osdmap_client_data_v(void **p, void *end, const char *prefix, u8 *v); 849 int __decode_pools(void **p, void *end, struct ceph_osdmap *map, bool incremental); 888 int decode_pools(void **p, void *end, struct ceph_osdmap *map); 893 int decode_new_pools(void **p, void *end, struct ceph_osdmap *map); 898 int __decode_pg_temp(void **p, void *end, struct ceph_osdmap *map, bool incremental); 949 int decode_pg_temp(void **p, void *end, struct ceph_osdmap *map); 954 int decode_new_pg_temp(void **p, void *end, struct ceph_osdmap *map); 959 int __decode_primary_temp(void **p, void *end, struct ceph_osdmap *map, bool incremental); 1003 int decode_primary_temp(void **p, void *end, struct ceph_osdmap *map); 1008 int decode_new_primary_temp(void **p, void *end, struct ceph_osdmap *map); 1024 int set_primary_affinity(struct ceph_osdmap *map, int osd, u32 aff); 1046 int decode_primary_affinity(void **p, void *end, struct ceph_osdmap *map); 1076 int decode_new_primary_affinity(void **p, void *end, struct ceph_osdmap *map); 1105 int osdmap_decode(void **p, void *end, struct ceph_osdmap *map); 1500 const char __kstrtab_ceph_calc_file_object_mapping[30U] = { 'c', 'e', 'p', 'h', '_', 'c', 'a', 'l', 'c', '_', 'f', 'i', 'l', 'e', '_', 'o', 'b', 'j', 'e', 'c', 't', '_', 'm', 'a', 'p', 'p', 'i', 'n', 'g', '\x0' }; 1500 const struct kernel_symbol __ksymtab_ceph_calc_file_object_mapping; 1500 const struct kernel_symbol __ksymtab_ceph_calc_file_object_mapping = { (unsigned long)(&ceph_calc_file_object_mapping), (const char *)(&__kstrtab_ceph_calc_file_object_mapping) }; 1526 const char __kstrtab_ceph_oloc_oid_to_pg[20U] = { 'c', 'e', 'p', 'h', '_', 'o', 'l', 'o', 'c', '_', 'o', 'i', 'd', '_', 't', 'o', '_', 'p', 'g', '\x0' }; 1526 const struct kernel_symbol __ksymtab_ceph_oloc_oid_to_pg; 1526 const struct kernel_symbol __ksymtab_ceph_oloc_oid_to_pg = { (unsigned long)(&ceph_oloc_oid_to_pg), (const char *)(&__kstrtab_ceph_oloc_oid_to_pg) }; 1528 int do_crush(struct ceph_osdmap *map, int ruleno, int x, int *result, int result_max, const __u32 *weight, int weight_max); 1549 int pg_to_raw_osds(struct ceph_osdmap *osdmap, struct ceph_pg_pool_info *pool, struct ceph_pg pgid, u32 pps, int *osds); 1585 int raw_to_up_osds(struct ceph_osdmap *osdmap, struct ceph_pg_pool_info *pool, int *osds, int len, int *primary); 1620 void apply_primary_affinity(struct ceph_osdmap *osdmap, u32 pps, struct ceph_pg_pool_info *pool, int *osds, int len, int *primary); 1693 int apply_temps(struct ceph_osdmap *osdmap, struct ceph_pg_pool_info *pool, struct ceph_pg pgid, int *osds, int len, int *primary); 1808 const char __kstrtab_ceph_calc_pg_primary[21U] = { 'c', 'e', 'p', 'h', '_', 'c', 'a', 'l', 'c', '_', 'p', 'g', '_', 'p', 'r', 'i', 'm', 'a', 'r', 'y', '\x0' }; 1808 const struct kernel_symbol __ksymtab_ceph_calc_pg_primary; 1808 const struct kernel_symbol __ksymtab_ceph_calc_pg_primary = { (unsigned long)(&ceph_calc_pg_primary), (const char *)(&__kstrtab_ceph_calc_pg_primary) }; 178 void ldv_mutex_unlock_264(struct mutex *ldv_func_arg1); 10 void ldv_mutex_lock_263(struct mutex *ldv_func_arg1); 107 const char * crush_bucket_alg_name(int alg); 187 int crush_get_bucket_item_weight(const struct crush_bucket *b, int p); 188 void crush_destroy_bucket_uniform(struct crush_bucket_uniform *b); 189 void crush_destroy_bucket_list(struct crush_bucket_list *b); 190 void crush_destroy_bucket_tree(struct crush_bucket_tree *b); 191 void crush_destroy_bucket_straw(struct crush_bucket_straw *b); 192 void crush_destroy_bucket(struct crush_bucket *b); 193 void crush_destroy_rule(struct crush_rule *rule); 196 int crush_calc_tree_node(int i); 178 void ldv_mutex_unlock_268(struct mutex *ldv_func_arg1); 10 void ldv_mutex_lock_267(struct mutex *ldv_func_arg1); 12 __u32 crush_hash32_3(int type, __u32 a, __u32 b, __u32 c); 13 __u32 crush_hash32_4(int type, __u32 a, __u32 b, __u32 c, __u32 d); 148 int bucket_perm_choose(struct crush_bucket *bucket, int x, int r); 208 int bucket_uniform_choose(struct crush_bucket_uniform *bucket, int x, int r); 215 int bucket_list_choose(struct crush_bucket_list *bucket, int x, int r); 241 int height(int n); 251 int left(int x); 257 int right(int x); 263 int terminal(int x); 268 int bucket_tree_choose(struct crush_bucket_tree *bucket, int x, int r); 300 int bucket_straw_choose(struct crush_bucket_straw *bucket, int x, int r); 320 int crush_bucket_choose(struct crush_bucket *in, int x, int r); 347 int is_out(const struct crush_map *map, const __u32 *weight, int weight_max, int item, int x); 381 int crush_choose_firstn(const struct crush_map *map, struct crush_bucket *bucket, const __u32 *weight, int weight_max, int x, int numrep, int type, int *out, int outpos, unsigned int tries, unsigned int recurse_tries, unsigned int local_retries, unsigned int local_fallback_retries, int recurse_to_leaf, unsigned int vary_r, int *out2, int parent_r); 556 void crush_choose_indep(const struct crush_map *map, struct crush_bucket *bucket, const __u32 *weight, int weight_max, int x, int left___0, int numrep, int type, int *out, int outpos, unsigned int tries, unsigned int recurse_tries, int recurse_to_leaf, int *out2, int parent_r); 8 const char * crush_hash_name(int type); 10 __u32 crush_hash32(int type, __u32 a); 14 __u32 crush_hash32_5(int type, __u32 a, __u32 b, __u32 c, __u32 d, __u32 e); 103 __u32 crush_hash32_rjenkins1(__u32 a); 114 __u32 crush_hash32_rjenkins1_2(__u32 a, __u32 b); 125 __u32 crush_hash32_rjenkins1_3(__u32 a, __u32 b, __u32 c); 138 __u32 crush_hash32_rjenkins1_4(__u32 a, __u32 b, __u32 c, __u32 d); 152 __u32 crush_hash32_rjenkins1_5(__u32 a, __u32 b, __u32 c, __u32 d, __u32 e); 177 int ldv_mutex_trylock_274(struct mutex *ldv_func_arg1); 182 void ldv_mutex_unlock_272(struct mutex *ldv_func_arg1); 186 void ldv_mutex_unlock_275(struct mutex *ldv_func_arg1); 190 void ldv_mutex_unlock_276(struct mutex *ldv_func_arg1); 194 void ldv_mutex_unlock_279(struct mutex *ldv_func_arg1); 198 void ldv_mutex_unlock_281(struct mutex *ldv_func_arg1); 10 void ldv_mutex_lock_271(struct mutex *ldv_func_arg1); 14 void ldv_mutex_lock_273(struct mutex *ldv_func_arg1); 18 void ldv_mutex_lock_277(struct mutex *ldv_func_arg1); 22 void ldv_mutex_lock_278(struct mutex *ldv_func_arg1); 26 void ldv_mutex_lock_280(struct mutex *ldv_func_arg1); 99 ssize_t seq_read(struct file *, char *, size_t , loff_t *); 100 loff_t seq_lseek(struct file *, loff_t , int); 107 int seq_printf(struct seq_file *, const char *, ...); 140 int single_open(struct file *, int (*)(struct seq_file *, void *), void *); 142 int single_release(struct inode *, struct file *); 49 struct dentry * debugfs_create_file(const char *, umode_t , struct dentry *, void *, const struct file_operations *); 53 struct dentry * debugfs_create_dir(const char *, struct dentry *); 58 void debugfs_remove(struct dentry *); 109 struct dentry *ceph_debugfs_dir = 0; 111 int monmap_show(struct seq_file *s, void *p); 131 int osdmap_show(struct seq_file *s, void *p); 187 int monc_show(struct seq_file *s, void *p); 221 int osdc_show(struct seq_file *s, void *pp); 260 int monmap_show_open(struct inode *inode, struct file *file); 260 const struct file_operations monmap_show_fops = { 0, &seq_lseek, &seq_read, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, &monmap_show_open, 0, &single_release, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; 261 int osdmap_show_open(struct inode *inode, struct file *file); 261 const struct file_operations osdmap_show_fops = { 0, &seq_lseek, &seq_read, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, &osdmap_show_open, 0, &single_release, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; 262 int monc_show_open(struct inode *inode, struct file *file); 262 const struct file_operations monc_show_fops = { 0, &seq_lseek, &seq_read, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, &monc_show_open, 0, &single_release, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; 263 int osdc_show_open(struct inode *inode, struct file *file); 263 const struct file_operations osdc_show_fops = { 0, &seq_lseek, &seq_read, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, &osdc_show_open, 0, &single_release, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; 364 const char __kstrtab_ceph_debugfs_init[18U] = { 'c', 'e', 'p', 'h', '_', 'd', 'e', 'b', 'u', 'g', 'f', 's', '_', 'i', 'n', 'i', 't', '\x0' }; 364 const struct kernel_symbol __ksymtab_ceph_debugfs_init; 364 const struct kernel_symbol __ksymtab_ceph_debugfs_init = { (unsigned long)(&ceph_debugfs_init), (const char *)(&__kstrtab_ceph_debugfs_init) }; 365 const char __kstrtab_ceph_debugfs_cleanup[21U] = { 'c', 'e', 'p', 'h', '_', 'd', 'e', 'b', 'u', 'g', 'f', 's', '_', 'c', 'l', 'e', 'a', 'n', 'u', 'p', '\x0' }; 365 const struct kernel_symbol __ksymtab_ceph_debugfs_cleanup; 365 const struct kernel_symbol __ksymtab_ceph_debugfs_cleanup = { (unsigned long)(&ceph_debugfs_cleanup), (const char *)(&__kstrtab_ceph_debugfs_cleanup) }; 178 void ldv_mutex_unlock_294(struct mutex *ldv_func_arg1); 182 void ldv_mutex_unlock_295(struct mutex *ldv_func_arg1); 186 void ldv_mutex_unlock_298(struct mutex *ldv_func_arg1); 190 void ldv_mutex_unlock_300(struct mutex *ldv_func_arg1); 194 void ldv_mutex_unlock_302(struct mutex *ldv_func_arg1); 198 void ldv_mutex_unlock_304(struct mutex *ldv_func_arg1); 202 void ldv_mutex_unlock_306(struct mutex *ldv_func_arg1); 206 void ldv_mutex_unlock_308(struct mutex *ldv_func_arg1); 210 void ldv_mutex_unlock_310(struct mutex *ldv_func_arg1); 214 void ldv_mutex_unlock_312(struct mutex *ldv_func_arg1); 218 void ldv_mutex_unlock_314(struct mutex *ldv_func_arg1); 222 void ldv_mutex_unlock_316(struct mutex *ldv_func_arg1); 10 void ldv_mutex_lock_293(struct mutex *ldv_func_arg1); 14 void ldv_mutex_lock_296(struct mutex *ldv_func_arg1); 18 void ldv_mutex_lock_297(struct mutex *ldv_func_arg1); 22 void ldv_mutex_lock_299(struct mutex *ldv_func_arg1); 26 void ldv_mutex_lock_301(struct mutex *ldv_func_arg1); 30 void ldv_mutex_lock_303(struct mutex *ldv_func_arg1); 34 void ldv_mutex_lock_305(struct mutex *ldv_func_arg1); 38 void ldv_mutex_lock_307(struct mutex *ldv_func_arg1); 42 void ldv_mutex_lock_309(struct mutex *ldv_func_arg1); 46 void ldv_mutex_lock_311(struct mutex *ldv_func_arg1); 50 void ldv_mutex_lock_313(struct mutex *ldv_func_arg1); 54 void ldv_mutex_lock_315(struct mutex *ldv_func_arg1); 91 void ldv_mutex_lock_mutex_of_ceph_auth_client(struct mutex *lock); 95 void ldv_mutex_unlock_mutex_of_ceph_auth_client(struct mutex *lock); 188 void ceph_encode_copy(void **p, const void *s, int len); 96 int ceph_entity_name_encode(const char *name, void **p, void *end); 26 int ceph_auth_none_init(struct ceph_auth_client *ac); 48 int ceph_x_init(struct ceph_auth_client *ac); 97 u32 supported_protocols[2U] = { 1U, 2U }; 102 int ceph_auth_init_protocol(struct ceph_auth_client *ac, int protocol); 223 int ceph_build_auth_request(struct ceph_auth_client *ac, void *msg_buf, size_t msg_len); 359 const char __kstrtab_ceph_auth_is_authenticated[27U] = { 'c', 'e', 'p', 'h', '_', 'a', 'u', 't', 'h', '_', 'i', 's', '_', 'a', 'u', 't', 'h', 'e', 'n', 't', 'i', 'c', 'a', 't', 'e', 'd', '\x0' }; 359 const struct kernel_symbol __ksymtab_ceph_auth_is_authenticated; 359 const struct kernel_symbol __ksymtab_ceph_auth_is_authenticated = { (unsigned long)(&ceph_auth_is_authenticated), (const char *)(&__kstrtab_ceph_auth_is_authenticated) }; 373 const char __kstrtab_ceph_auth_create_authorizer[28U] = { 'c', 'e', 'p', 'h', '_', 'a', 'u', 't', 'h', '_', 'c', 'r', 'e', 'a', 't', 'e', '_', 'a', 'u', 't', 'h', 'o', 'r', 'i', 'z', 'e', 'r', '\x0' }; 373 const struct kernel_symbol __ksymtab_ceph_auth_create_authorizer; 373 const struct kernel_symbol __ksymtab_ceph_auth_create_authorizer = { (unsigned long)(&ceph_auth_create_authorizer), (const char *)(&__kstrtab_ceph_auth_create_authorizer) }; 383 const char __kstrtab_ceph_auth_destroy_authorizer[29U] = { 'c', 'e', 'p', 'h', '_', 'a', 'u', 't', 'h', '_', 'd', 'e', 's', 't', 'r', 'o', 'y', '_', 'a', 'u', 't', 'h', 'o', 'r', 'i', 'z', 'e', 'r', '\x0' }; 383 const struct kernel_symbol __ksymtab_ceph_auth_destroy_authorizer; 383 const struct kernel_symbol __ksymtab_ceph_auth_destroy_authorizer = { (unsigned long)(&ceph_auth_destroy_authorizer), (const char *)(&__kstrtab_ceph_auth_destroy_authorizer) }; 397 const char __kstrtab_ceph_auth_update_authorizer[28U] = { 'c', 'e', 'p', 'h', '_', 'a', 'u', 't', 'h', '_', 'u', 'p', 'd', 'a', 't', 'e', '_', 'a', 'u', 't', 'h', 'o', 'r', 'i', 'z', 'e', 'r', '\x0' }; 397 const struct kernel_symbol __ksymtab_ceph_auth_update_authorizer; 397 const struct kernel_symbol __ksymtab_ceph_auth_update_authorizer = { (unsigned long)(&ceph_auth_update_authorizer), (const char *)(&__kstrtab_ceph_auth_update_authorizer) }; 410 const char __kstrtab_ceph_auth_verify_authorizer_reply[34U] = { 'c', 'e', 'p', 'h', '_', 'a', 'u', 't', 'h', '_', 'v', 'e', 'r', 'i', 'f', 'y', '_', 'a', 'u', 't', 'h', 'o', 'r', 'i', 'z', 'e', 'r', '_', 'r', 'e', 'p', 'l', 'y', '\x0' }; 410 const struct kernel_symbol __ksymtab_ceph_auth_verify_authorizer_reply; 410 const struct kernel_symbol __ksymtab_ceph_auth_verify_authorizer_reply = { (unsigned long)(&ceph_auth_verify_authorizer_reply), (const char *)(&__kstrtab_ceph_auth_verify_authorizer_reply) }; 419 const char __kstrtab_ceph_auth_invalidate_authorizer[32U] = { 'c', 'e', 'p', 'h', '_', 'a', 'u', 't', 'h', '_', 'i', 'n', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '_', 'a', 'u', 't', 'h', 'o', 'r', 'i', 'z', 'e', 'r', '\x0' }; 419 const struct kernel_symbol __ksymtab_ceph_auth_invalidate_authorizer; 419 const struct kernel_symbol __ksymtab_ceph_auth_invalidate_authorizer = { (unsigned long)(&ceph_auth_invalidate_authorizer), (const char *)(&__kstrtab_ceph_auth_invalidate_authorizer) }; 178 void ldv_mutex_unlock_342(struct mutex *ldv_func_arg1); 10 void ldv_mutex_lock_341(struct mutex *ldv_func_arg1); 94 void reset(struct ceph_auth_client *ac); 102 void destroy(struct ceph_auth_client *ac); 108 int is_authenticated(struct ceph_auth_client *ac); 115 int should_authenticate(struct ceph_auth_client *ac); 122 int build_request(struct ceph_auth_client *ac, void *buf, void *end); 131 int handle_reply___0(struct ceph_auth_client *ac, int result, void *buf, void *end); 145 int ceph_auth_none_create_authorizer(struct ceph_auth_client *ac, int peer_type, struct ceph_auth_handshake *auth); 182 void ceph_auth_none_destroy_authorizer(struct ceph_auth_client *ac, struct ceph_authorizer *a); 188 const struct ceph_auth_client_ops ceph_auth_none_ops = { "none", &is_authenticated, &should_authenticate, &build_request, &handle_reply___0, &ceph_auth_none_create_authorizer, 0, 0, &ceph_auth_none_destroy_authorizer, 0, &reset, &destroy }; 256 void ldv_main13_sequence_infinite_withcheck_stateful(); 65 bool __virt_addr_valid(unsigned long); 120 void * kmemdup(const void *, size_t , gfp_t ); 178 void ldv_mutex_unlock_346(struct mutex *ldv_func_arg1); 10 void ldv_mutex_lock_345(struct mutex *ldv_func_arg1); 57 void sg_assign_page(struct scatterlist *sg, struct page *page); 87 void sg_set_page(struct scatterlist *sg, struct page *page, unsigned int len, unsigned int offset); 111 void sg_set_buf(struct scatterlist *sg, const void *buf, unsigned int buflen); 226 void sg_init_table(struct scatterlist *, unsigned int); 492 struct crypto_tfm * crypto_alloc_base(const char *, u32 , u32 ); 495 void crypto_free_tfm(struct crypto_tfm *tfm); 871 struct crypto_blkcipher * __crypto_blkcipher_cast(struct crypto_tfm *tfm); 884 struct crypto_blkcipher * crypto_alloc_blkcipher(const char *alg_name, u32 type, u32 mask); 894 struct crypto_tfm * crypto_blkcipher_tfm(struct crypto_blkcipher *tfm); 900 void crypto_free_blkcipher(struct crypto_blkcipher *tfm); 919 struct blkcipher_tfm * crypto_blkcipher_crt(struct crypto_blkcipher *tfm); 925 struct blkcipher_alg * crypto_blkcipher_alg(struct crypto_blkcipher *tfm); 931 unsigned int crypto_blkcipher_ivsize(struct crypto_blkcipher *tfm); 965 int crypto_blkcipher_setkey(struct crypto_blkcipher *tfm, const u8 *key, unsigned int keylen); 972 int crypto_blkcipher_encrypt(struct blkcipher_desc *desc, struct scatterlist *dst, struct scatterlist *src, unsigned int nbytes); 989 int crypto_blkcipher_decrypt(struct blkcipher_desc *desc, struct scatterlist *dst, struct scatterlist *src, unsigned int nbytes); 139 int register_key_type(struct key_type *); 140 void unregister_key_type(struct key_type *); 163 int generic_key_instantiate(struct key *, struct key_preparsed_payload *); 43 int user_match(const struct key *, const void *); 25 int ceph_crypto_key_encode(struct ceph_crypto_key *key, void **p, void *end); 26 int ceph_crypto_key_decode(struct ceph_crypto_key *key, void **p, void *end); 30 int ceph_decrypt(struct ceph_crypto_key *secret, void *dst, size_t *dst_len, const void *src, size_t src_len); 33 int ceph_encrypt(struct ceph_crypto_key *secret, void *dst, size_t *dst_len, const void *src, size_t src_len); 36 int ceph_decrypt2(struct ceph_crypto_key *secret, void *dst1, size_t *dst1_len, void *dst2, size_t *dst2_len, const void *src, size_t src_len); 40 int ceph_encrypt2(struct ceph_crypto_key *secret, void *dst, size_t *dst_len, const void *src1, size_t src1_len, const void *src2, size_t src2_len); 49 int ceph_unarmor(char *dst, const char *src, const char *end); 166 struct crypto_blkcipher * ceph_crypto_alloc_cipher(); 171 const u8 *aes_iv = (const u8 *)"cephsageyudagreg"; 173 int ceph_aes_encrypt(const void *key, int key_len, void *dst, size_t *dst_len, const void *src, size_t src_len); 223 int ceph_aes_encrypt2(const void *key, int key_len, void *dst, size_t *dst_len, const void *src1, size_t src1_len, const void *src2, size_t src2_len); 277 int ceph_aes_decrypt(const void *key, int key_len, void *dst, size_t *dst_len, const void *src, size_t src_len); 337 int ceph_aes_decrypt2(const void *key, int key_len, void *dst1, size_t *dst1_len, void *dst2, size_t *dst2_len, const void *src, size_t src_len); 507 int ceph_key_preparse(struct key_preparsed_payload *prep); 539 void ceph_key_free_preparse(struct key_preparsed_payload *prep); 546 void ceph_key_destroy(struct key *key); 554 struct key_type key_type_ceph = { "ceph", 0UL, 0U, 0, &ceph_key_preparse, &ceph_key_free_preparse, &generic_key_instantiate, 0, &user_match, 0, &ceph_key_destroy, 0, 0, 0, { 0, 0 }, { { { 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 } } } }; 608 void ldv_main14_sequence_infinite_withcheck_stateful(); 83 int ceph_armor(char *dst, const char *src, const char *end); 90 const char *pem_key = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; 93 int encode_bits(int c); 98 int decode_bits(char c); 178 void ldv_mutex_unlock_350(struct mutex *ldv_func_arg1); 10 void ldv_mutex_lock_349(struct mutex *ldv_func_arg1); 20 unsigned long int get_seconds(); 137 void ceph_decode_timespec(struct timespec *ts, const struct ceph_timespec *tv); 98 void ceph_x_validate_tickets(struct ceph_auth_client *ac, int *pneed); 100 int ceph_x_is_authenticated(struct ceph_auth_client *ac); 111 int ceph_x_should_authenticate(struct ceph_auth_client *ac); 122 int ceph_x_encrypt_buflen(int ilen); 128 int ceph_x_encrypt(struct ceph_crypto_key *secret, void *ibuf, int ilen, void *obuf, size_t olen); 146 int ceph_x_decrypt(struct ceph_crypto_key *secret, void **p, void *end, void *obuf, size_t olen); 172 struct ceph_x_ticket_handler * get_ticket_handler(struct ceph_auth_client *ac, int service); 199 void remove_ticket_handler(struct ceph_auth_client *ac, struct ceph_x_ticket_handler *th); 212 int ceph_x_proc_ticket_reply(struct ceph_auth_client *ac, struct ceph_crypto_key *secret, void *buf, void *end); 353 int ceph_x_build_authorizer(struct ceph_auth_client *ac, struct ceph_x_ticket_handler *th, struct ceph_x_authorizer *au); 421 int ceph_x_encode_ticket(struct ceph_x_ticket_handler *th, void **p, void *end); 474 int ceph_x_build_request(struct ceph_auth_client *ac, void *buf, void *end); 553 int ceph_x_handle_reply(struct ceph_auth_client *ac, int result, void *buf, void *end); 608 int ceph_x_create_authorizer(struct ceph_auth_client *ac, int peer_type, struct ceph_auth_handshake *auth); 639 int ceph_x_update_authorizer(struct ceph_auth_client *ac, int peer_type, struct ceph_auth_handshake *auth); 659 int ceph_x_verify_authorizer_reply(struct ceph_auth_client *ac, struct ceph_authorizer *a, size_t len); 687 void ceph_x_destroy_authorizer(struct ceph_auth_client *ac, struct ceph_authorizer *a); 697 void ceph_x_reset(struct ceph_auth_client *ac); 706 void ceph_x_destroy(struct ceph_auth_client *ac); 727 void ceph_x_invalidate_authorizer(struct ceph_auth_client *ac, int peer_type); 738 const struct ceph_auth_client_ops ceph_x_ops = { "x", &ceph_x_is_authenticated, &ceph_x_should_authenticate, &ceph_x_build_request, &ceph_x_handle_reply, &ceph_x_create_authorizer, &ceph_x_update_authorizer, &ceph_x_verify_authorizer_reply, &ceph_x_destroy_authorizer, &ceph_x_invalidate_authorizer, &ceph_x_reset, &ceph_x_destroy }; 830 void ldv_main16_sequence_infinite_withcheck_stateful(); 178 void ldv_mutex_unlock_354(struct mutex *ldv_func_arg1); 10 void ldv_mutex_lock_353(struct mutex *ldv_func_arg1); 81 int ceph_file_layout_is_valid(const struct ceph_file_layout *layout); 550 int ceph_flags_to_mode(int flags); 640 int ceph_caps_for_mode(int mode); 138 const char __kstrtab_ceph_flags_to_mode[19U] = { 'c', 'e', 'p', 'h', '_', 'f', 'l', 'a', 'g', 's', '_', 't', 'o', '_', 'm', 'o', 'd', 'e', '\x0' }; 138 const struct kernel_symbol __ksymtab_ceph_flags_to_mode; 138 const struct kernel_symbol __ksymtab_ceph_flags_to_mode = { (unsigned long)(&ceph_flags_to_mode), (const char *)(&__kstrtab_ceph_flags_to_mode) }; 157 const char __kstrtab_ceph_caps_for_mode[19U] = { 'c', 'e', 'p', 'h', '_', 'c', 'a', 'p', 's', '_', 'f', 'o', 'r', '_', 'm', 'o', 'd', 'e', '\x0' }; 157 const struct kernel_symbol __ksymtab_ceph_caps_for_mode; 157 const struct kernel_symbol __ksymtab_ceph_caps_for_mode = { (unsigned long)(&ceph_caps_for_mode), (const char *)(&__kstrtab_ceph_caps_for_mode) }; 178 void ldv_mutex_unlock_358(struct mutex *ldv_func_arg1); 10 void ldv_mutex_lock_357(struct mutex *ldv_func_arg1); 131 const char * ceph_osd_state_name(int s); 194 const char * ceph_pool_op_name(int op); 178 void ldv_mutex_unlock_362(struct mutex *ldv_func_arg1); 10 void ldv_mutex_lock_361(struct mutex *ldv_func_arg1); 7 unsigned int ceph_str_hash_linux(const char *str, unsigned int length); 8 unsigned int ceph_str_hash_rjenkins(const char *str, unsigned int length); 11 const char * ceph_str_hash_name(int type); 187 const char __kstrtab_ceph_str_hash[14U] = { 'c', 'e', 'p', 'h', '_', 's', 't', 'r', '_', 'h', 'a', 's', 'h', '\x0' }; 187 const struct kernel_symbol __ksymtab_ceph_str_hash; 187 const struct kernel_symbol __ksymtab_ceph_str_hash = { (unsigned long)(&ceph_str_hash), (const char *)(&__kstrtab_ceph_str_hash) }; 200 const char __kstrtab_ceph_str_hash_name[19U] = { 'c', 'e', 'p', 'h', '_', 's', 't', 'r', '_', 'h', 'a', 's', 'h', '_', 'n', 'a', 'm', 'e', '\x0' }; 200 const struct kernel_symbol __ksymtab_ceph_str_hash_name; 200 const struct kernel_symbol __ksymtab_ceph_str_hash_name = { (unsigned long)(&ceph_str_hash_name), (const char *)(&__kstrtab_ceph_str_hash_name) }; 1 unsigned long int __builtin_object_size(void *, int); 230 void might_fault(); 178 void ldv_mutex_unlock_366(struct mutex *ldv_func_arg1); 182 void ldv_mutex_unlock_367(struct mutex *ldv_func_arg1); 10 void ldv_mutex_lock_365(struct mutex *ldv_func_arg1); 14 void ldv_mutex_lock_368(struct mutex *ldv_func_arg1); 8 extern int __preempt_count; 73 void __preempt_count_add(int val); 78 void __preempt_count_sub(int val); 1195 long int get_user_pages(struct task_struct *, struct mm_struct *, unsigned long, unsigned long, int, int, struct page **, struct vm_area_struct **); 1218 int set_page_dirty_lock(struct page *); 645 unsigned long int _copy_from_user(void *, const void *, unsigned int); 667 void __copy_from_user_overflow(); 688 unsigned long int copy_from_user(void *to, const void *from, unsigned long n); 16 void pagefault_disable(); 26 void pagefault_enable(); 66 void * kmap_atomic(struct page *page); 73 void __kunmap_atomic(void *addr); 192 void zero_user_segments(struct page *page, unsigned int start1, unsigned int end1, unsigned int start2, unsigned int end2); 210 void zero_user_segment(struct page *page, unsigned int start, unsigned int end); 209 struct page ** ceph_get_direct_page_vector(const void *data, int num_pages, bool write_page); 212 void ceph_put_page_vector(struct page **pages, int num_pages, bool dirty); 215 struct page ** ceph_alloc_page_vector(int num_pages, gfp_t flags); 216 int ceph_copy_user_to_page_vector(struct page **pages, const void *data, loff_t off, size_t len); 219 void ceph_copy_to_page_vector(struct page **pages, const void *data, loff_t off, size_t len); 222 void ceph_copy_from_page_vector(struct page **pages, void *data, loff_t off, size_t len); 225 void ceph_zero_page_vector_range(int off, int len, struct page **pages); 124 const char __kstrtab_ceph_get_direct_page_vector[28U] = { 'c', 'e', 'p', 'h', '_', 'g', 'e', 't', '_', 'd', 'i', 'r', 'e', 'c', 't', '_', 'p', 'a', 'g', 'e', '_', 'v', 'e', 'c', 't', 'o', 'r', '\x0' }; 124 const struct kernel_symbol __ksymtab_ceph_get_direct_page_vector; 124 const struct kernel_symbol __ksymtab_ceph_get_direct_page_vector = { (unsigned long)(&ceph_get_direct_page_vector), (const char *)(&__kstrtab_ceph_get_direct_page_vector) }; 140 const char __kstrtab_ceph_put_page_vector[21U] = { 'c', 'e', 'p', 'h', '_', 'p', 'u', 't', '_', 'p', 'a', 'g', 'e', '_', 'v', 'e', 'c', 't', 'o', 'r', '\x0' }; 140 const struct kernel_symbol __ksymtab_ceph_put_page_vector; 140 const struct kernel_symbol __ksymtab_ceph_put_page_vector = { (unsigned long)(&ceph_put_page_vector), (const char *)(&__kstrtab_ceph_put_page_vector) }; 150 const char __kstrtab_ceph_release_page_vector[25U] = { 'c', 'e', 'p', 'h', '_', 'r', 'e', 'l', 'e', 'a', 's', 'e', '_', 'p', 'a', 'g', 'e', '_', 'v', 'e', 'c', 't', 'o', 'r', '\x0' }; 150 const struct kernel_symbol __ksymtab_ceph_release_page_vector; 150 const struct kernel_symbol __ksymtab_ceph_release_page_vector = { (unsigned long)(&ceph_release_page_vector), (const char *)(&__kstrtab_ceph_release_page_vector) }; 172 const char __kstrtab_ceph_alloc_page_vector[23U] = { 'c', 'e', 'p', 'h', '_', 'a', 'l', 'l', 'o', 'c', '_', 'p', 'a', 'g', 'e', '_', 'v', 'e', 'c', 't', 'o', 'r', '\x0' }; 172 const struct kernel_symbol __ksymtab_ceph_alloc_page_vector; 172 const struct kernel_symbol __ksymtab_ceph_alloc_page_vector = { (unsigned long)(&ceph_alloc_page_vector), (const char *)(&__kstrtab_ceph_alloc_page_vector) }; 201 const char __kstrtab_ceph_copy_user_to_page_vector[30U] = { 'c', 'e', 'p', 'h', '_', 'c', 'o', 'p', 'y', '_', 'u', 's', 'e', 'r', '_', 't', 'o', '_', 'p', 'a', 'g', 'e', '_', 'v', 'e', 'c', 't', 'o', 'r', '\x0' }; 201 const struct kernel_symbol __ksymtab_ceph_copy_user_to_page_vector; 201 const struct kernel_symbol __ksymtab_ceph_copy_user_to_page_vector = { (unsigned long)(&ceph_copy_user_to_page_vector), (const char *)(&__kstrtab_ceph_copy_user_to_page_vector) }; 224 const char __kstrtab_ceph_copy_to_page_vector[25U] = { 'c', 'e', 'p', 'h', '_', 'c', 'o', 'p', 'y', '_', 't', 'o', '_', 'p', 'a', 'g', 'e', '_', 'v', 'e', 'c', 't', 'o', 'r', '\x0' }; 224 const struct kernel_symbol __ksymtab_ceph_copy_to_page_vector; 224 const struct kernel_symbol __ksymtab_ceph_copy_to_page_vector = { (unsigned long)(&ceph_copy_to_page_vector), (const char *)(&__kstrtab_ceph_copy_to_page_vector) }; 247 const char __kstrtab_ceph_copy_from_page_vector[27U] = { 'c', 'e', 'p', 'h', '_', 'c', 'o', 'p', 'y', '_', 'f', 'r', 'o', 'm', '_', 'p', 'a', 'g', 'e', '_', 'v', 'e', 'c', 't', 'o', 'r', '\x0' }; 247 const struct kernel_symbol __ksymtab_ceph_copy_from_page_vector; 247 const struct kernel_symbol __ksymtab_ceph_copy_from_page_vector = { (unsigned long)(&ceph_copy_from_page_vector), (const char *)(&__kstrtab_ceph_copy_from_page_vector) }; 282 const char __kstrtab_ceph_zero_page_vector_range[28U] = { 'c', 'e', 'p', 'h', '_', 'z', 'e', 'r', 'o', '_', 'p', 'a', 'g', 'e', '_', 'v', 'e', 'c', 't', 'o', 'r', '_', 'r', 'a', 'n', 'g', 'e', '\x0' }; 282 const struct kernel_symbol __ksymtab_ceph_zero_page_vector_range; 282 const struct kernel_symbol __ksymtab_ceph_zero_page_vector_range = { (unsigned long)(&ceph_zero_page_vector_range), (const char *)(&__kstrtab_ceph_zero_page_vector_range) }; 178 void ldv_mutex_unlock_373(struct mutex *ldv_func_arg1); 182 void ldv_mutex_unlock_376(struct mutex *ldv_func_arg1); 10 void ldv_mutex_lock_374(struct mutex *ldv_func_arg1); 14 void ldv_mutex_lock_375(struct mutex *ldv_func_arg1); 160 struct ceph_snap_context * ceph_create_snap_context(u32 snap_count, gfp_t gfp_flags); 138 const char __kstrtab_ceph_create_snap_context[25U] = { 'c', 'e', 'p', 'h', '_', 'c', 'r', 'e', 'a', 't', 'e', '_', 's', 'n', 'a', 'p', '_', 'c', 'o', 'n', 't', 'e', 'x', 't', '\x0' }; 138 const struct kernel_symbol __ksymtab_ceph_create_snap_context; 138 const struct kernel_symbol __ksymtab_ceph_create_snap_context = { (unsigned long)(&ceph_create_snap_context), (const char *)(&__kstrtab_ceph_create_snap_context) }; 146 const char __kstrtab_ceph_get_snap_context[22U] = { 'c', 'e', 'p', 'h', '_', 'g', 'e', 't', '_', 's', 'n', 'a', 'p', '_', 'c', 'o', 'n', 't', 'e', 'x', 't', '\x0' }; 146 const struct kernel_symbol __ksymtab_ceph_get_snap_context; 146 const struct kernel_symbol __ksymtab_ceph_get_snap_context = { (unsigned long)(&ceph_get_snap_context), (const char *)(&__kstrtab_ceph_get_snap_context) }; 157 const char __kstrtab_ceph_put_snap_context[22U] = { 'c', 'e', 'p', 'h', '_', 'p', 'u', 't', '_', 's', 'n', 'a', 'p', '_', 'c', 'o', 'n', 't', 'e', 'x', 't', '\x0' }; 157 const struct kernel_symbol __ksymtab_ceph_put_snap_context; 157 const struct kernel_symbol __ksymtab_ceph_put_snap_context = { (unsigned long)(&ceph_put_snap_context), (const char *)(&__kstrtab_ceph_put_snap_context) }; 10 void ldv_error(); 25 int ldv_undef_int(); 59 void __builtin_trap(); 8 int ldv_mutex_crush_scratch_mutex_of_ceph_osdmap = 0; 11 int ldv_mutex_lock_interruptible_crush_scratch_mutex_of_ceph_osdmap(struct mutex *lock); 37 int ldv_mutex_lock_killable_crush_scratch_mutex_of_ceph_osdmap(struct mutex *lock); 72 int ldv_mutex_trylock_crush_scratch_mutex_of_ceph_osdmap(struct mutex *lock); 98 int ldv_atomic_dec_and_mutex_lock_crush_scratch_mutex_of_ceph_osdmap(atomic_t *cnt, struct mutex *lock); 123 int ldv_mutex_is_locked_crush_scratch_mutex_of_ceph_osdmap(struct mutex *lock); 160 int ldv_mutex_i_mutex_of_inode = 0; 163 int ldv_mutex_lock_interruptible_i_mutex_of_inode(struct mutex *lock); 189 int ldv_mutex_lock_killable_i_mutex_of_inode(struct mutex *lock); 224 int ldv_mutex_trylock_i_mutex_of_inode(struct mutex *lock); 250 int ldv_atomic_dec_and_mutex_lock_i_mutex_of_inode(atomic_t *cnt, struct mutex *lock); 275 int ldv_mutex_is_locked_i_mutex_of_inode(struct mutex *lock); 312 int ldv_mutex_lock = 0; 315 int ldv_mutex_lock_interruptible_lock(struct mutex *lock); 341 int ldv_mutex_lock_killable_lock(struct mutex *lock); 376 int ldv_mutex_trylock_lock(struct mutex *lock); 402 int ldv_atomic_dec_and_mutex_lock_lock(atomic_t *cnt, struct mutex *lock); 427 int ldv_mutex_is_locked_lock(struct mutex *lock); 464 int ldv_mutex_mount_mutex_of_ceph_client = 0; 467 int ldv_mutex_lock_interruptible_mount_mutex_of_ceph_client(struct mutex *lock); 493 int ldv_mutex_lock_killable_mount_mutex_of_ceph_client(struct mutex *lock); 528 int ldv_mutex_trylock_mount_mutex_of_ceph_client(struct mutex *lock); 554 int ldv_atomic_dec_and_mutex_lock_mount_mutex_of_ceph_client(atomic_t *cnt, struct mutex *lock); 579 int ldv_mutex_is_locked_mount_mutex_of_ceph_client(struct mutex *lock); 616 int ldv_mutex_mutex_of_ceph_auth_client = 0; 619 int ldv_mutex_lock_interruptible_mutex_of_ceph_auth_client(struct mutex *lock); 645 int ldv_mutex_lock_killable_mutex_of_ceph_auth_client(struct mutex *lock); 680 int ldv_mutex_trylock_mutex_of_ceph_auth_client(struct mutex *lock); 706 int ldv_atomic_dec_and_mutex_lock_mutex_of_ceph_auth_client(atomic_t *cnt, struct mutex *lock); 731 int ldv_mutex_is_locked_mutex_of_ceph_auth_client(struct mutex *lock); 768 int ldv_mutex_mutex_of_ceph_connection = 0; 771 int ldv_mutex_lock_interruptible_mutex_of_ceph_connection(struct mutex *lock); 797 int ldv_mutex_lock_killable_mutex_of_ceph_connection(struct mutex *lock); 832 int ldv_mutex_trylock_mutex_of_ceph_connection(struct mutex *lock); 858 int ldv_atomic_dec_and_mutex_lock_mutex_of_ceph_connection(atomic_t *cnt, struct mutex *lock); 883 int ldv_mutex_is_locked_mutex_of_ceph_connection(struct mutex *lock); 920 int ldv_mutex_mutex_of_ceph_mon_client = 0; 923 int ldv_mutex_lock_interruptible_mutex_of_ceph_mon_client(struct mutex *lock); 949 int ldv_mutex_lock_killable_mutex_of_ceph_mon_client(struct mutex *lock); 984 int ldv_mutex_trylock_mutex_of_ceph_mon_client(struct mutex *lock); 1010 int ldv_atomic_dec_and_mutex_lock_mutex_of_ceph_mon_client(atomic_t *cnt, struct mutex *lock); 1035 int ldv_mutex_is_locked_mutex_of_ceph_mon_client(struct mutex *lock); 1072 int ldv_mutex_mutex_of_device = 0; 1075 int ldv_mutex_lock_interruptible_mutex_of_device(struct mutex *lock); 1101 int ldv_mutex_lock_killable_mutex_of_device(struct mutex *lock); 1162 int ldv_atomic_dec_and_mutex_lock_mutex_of_device(atomic_t *cnt, struct mutex *lock); 1187 int ldv_mutex_is_locked_mutex_of_device(struct mutex *lock); 1224 int ldv_mutex_request_mutex_of_ceph_osd_client = 0; 1227 int ldv_mutex_lock_interruptible_request_mutex_of_ceph_osd_client(struct mutex *lock); 1253 int ldv_mutex_lock_killable_request_mutex_of_ceph_osd_client(struct mutex *lock); 1288 int ldv_mutex_trylock_request_mutex_of_ceph_osd_client(struct mutex *lock); 1314 int ldv_atomic_dec_and_mutex_lock_request_mutex_of_ceph_osd_client(atomic_t *cnt, struct mutex *lock); 1339 int ldv_mutex_is_locked_request_mutex_of_ceph_osd_client(struct mutex *lock); return ; } { 3070 struct ceph_connection *var_group1; 3071 struct ceph_msg *var_group2; 3072 int *var_get_authorizer_100_p1; 3073 int var_get_authorizer_100_p2; 3074 int var_verify_authorizer_reply_101_p1; 3075 struct ceph_msg_header *var_group3; 3076 int *var_alloc_msg_97_p2; 3077 int tmp; 3078 int tmp___0; 3256 LDV_IN_INTERRUPT = 1; { 1381 ldv_mutex_crush_scratch_mutex_of_ceph_osdmap = 1; 1383 ldv_mutex_i_mutex_of_inode = 1; 1385 ldv_mutex_lock = 1; 1387 ldv_mutex_mount_mutex_of_ceph_client = 1; 1389 ldv_mutex_mutex_of_ceph_auth_client = 1; 1391 ldv_mutex_mutex_of_ceph_connection = 1; 1393 ldv_mutex_mutex_of_ceph_mon_client = 1; 1395 ldv_mutex_mutex_of_device = 1; 1397 ldv_mutex_request_mutex_of_ceph_osd_client = 1; } 3269 goto ldv_33183; 3269 tmp___0 = nondet_int() { /* Function call is skipped due to function is undefined */} 3271 goto ldv_33182; 3270 ldv_33182:; 3272 tmp = nondet_int() { /* Function call is skipped due to function is undefined */} 3272 switch (tmp) 3475 ldv_handler_precall() { /* Function call is skipped due to function is undefined */} { } 3012 struct ceph_osd *o; 3013 struct ceph_osd_client *osdc; 3014 struct ceph_auth_client *ac; 3015 int tmp; 3012 struct ceph_osd *__CPAchecker_TMP_0 = (struct ceph_osd *)(con->private); 3012 o = __CPAchecker_TMP_0; 3013 osdc = o->o_osdc; 3014 ac = osdc->client->monc.auth; { { 602 mutex_lock(ldv_func_arg1) { /* Function call is skipped due to function is undefined */} } 415 unsigned long __CPAchecker_TMP_0 = (unsigned long)(ac->ops); { } 610 mutex_unlock(ldv_func_arg1) { /* Function call is skipped due to function is undefined */} } { } 1158 int ret; { 1853 mutex_lock(ldv_func_arg1) { /* Function call is skipped due to function is undefined */} } { } 1143 int ret; 1148 size_t __CPAchecker_TMP_0 = (size_t )(monc->m_auth->front_alloc_len); { } 337 int ret; 338 int tmp; 338 ret = 0; { 506 mutex_lock(ldv_func_arg1) { /* Function call is skipped due to function is undefined */} } { } 182 struct ceph_mon_request_header *monhdr; 183 void *p; 184 void *end; 185 void *lenp; 186 int i; 187 int num; 188 int ret; 189 struct _ddebug descriptor; 190 const char *tmp; 191 long tmp___0; 192 int tmp___1; 193 long tmp___2; 194 int tmp___3; 195 long tmp___4; 196 int tmp___5; 197 long tmp___6; 182 monhdr = (struct ceph_mon_request_header *)buf; 183 p = ((void *)monhdr) + 1U; 183 end = buf + len; { } { }} | Source code 1
2 #include <linux/kernel.h>
3 #include <linux/mutex.h>
4
5 extern int mutex_lock_interruptible(struct mutex *lock);
6 extern int mutex_lock_killable(struct mutex *lock);
7 extern void mutex_lock(struct mutex *lock);
8 extern int ldv_mutex_lock_interruptible_crush_scratch_mutex_of_ceph_osdmap(struct mutex *lock);
9 extern int ldv_mutex_lock_killable_crush_scratch_mutex_of_ceph_osdmap(struct mutex *lock);
10 extern void ldv_mutex_lock_nested_crush_scratch_mutex_of_ceph_osdmap(struct mutex *lock, unsigned int subclass);
11 extern void ldv_mutex_lock_crush_scratch_mutex_of_ceph_osdmap(struct mutex *lock);
12 extern int ldv_mutex_trylock_crush_scratch_mutex_of_ceph_osdmap(struct mutex *lock);
13 extern int ldv_atomic_dec_and_mutex_lock_crush_scratch_mutex_of_ceph_osdmap(atomic_t *cnt, struct mutex *lock);
14 extern int ldv_mutex_is_locked_crush_scratch_mutex_of_ceph_osdmap(struct mutex *lock);
15 extern void ldv_mutex_unlock_crush_scratch_mutex_of_ceph_osdmap(struct mutex *lock);
16 extern int ldv_mutex_lock_interruptible_i_mutex_of_inode(struct mutex *lock);
17 extern int ldv_mutex_lock_killable_i_mutex_of_inode(struct mutex *lock);
18 extern void ldv_mutex_lock_nested_i_mutex_of_inode(struct mutex *lock, unsigned int subclass);
19 extern void ldv_mutex_lock_i_mutex_of_inode(struct mutex *lock);
20 extern int ldv_mutex_trylock_i_mutex_of_inode(struct mutex *lock);
21 extern int ldv_atomic_dec_and_mutex_lock_i_mutex_of_inode(atomic_t *cnt, struct mutex *lock);
22 extern int ldv_mutex_is_locked_i_mutex_of_inode(struct mutex *lock);
23 extern void ldv_mutex_unlock_i_mutex_of_inode(struct mutex *lock);
24 extern int ldv_mutex_lock_interruptible_lock(struct mutex *lock);
25 extern int ldv_mutex_lock_killable_lock(struct mutex *lock);
26 extern void ldv_mutex_lock_nested_lock(struct mutex *lock, unsigned int subclass);
27 extern void ldv_mutex_lock_lock(struct mutex *lock);
28 extern int ldv_mutex_trylock_lock(struct mutex *lock);
29 extern int ldv_atomic_dec_and_mutex_lock_lock(atomic_t *cnt, struct mutex *lock);
30 extern int ldv_mutex_is_locked_lock(struct mutex *lock);
31 extern void ldv_mutex_unlock_lock(struct mutex *lock);
32 extern int ldv_mutex_lock_interruptible_mount_mutex_of_ceph_client(struct mutex *lock);
33 extern int ldv_mutex_lock_killable_mount_mutex_of_ceph_client(struct mutex *lock);
34 extern void ldv_mutex_lock_nested_mount_mutex_of_ceph_client(struct mutex *lock, unsigned int subclass);
35 extern void ldv_mutex_lock_mount_mutex_of_ceph_client(struct mutex *lock);
36 extern int ldv_mutex_trylock_mount_mutex_of_ceph_client(struct mutex *lock);
37 extern int ldv_atomic_dec_and_mutex_lock_mount_mutex_of_ceph_client(atomic_t *cnt, struct mutex *lock);
38 extern int ldv_mutex_is_locked_mount_mutex_of_ceph_client(struct mutex *lock);
39 extern void ldv_mutex_unlock_mount_mutex_of_ceph_client(struct mutex *lock);
40 extern int ldv_mutex_lock_interruptible_mutex_of_ceph_auth_client(struct mutex *lock);
41 extern int ldv_mutex_lock_killable_mutex_of_ceph_auth_client(struct mutex *lock);
42 extern void ldv_mutex_lock_nested_mutex_of_ceph_auth_client(struct mutex *lock, unsigned int subclass);
43 extern void ldv_mutex_lock_mutex_of_ceph_auth_client(struct mutex *lock);
44 extern int ldv_mutex_trylock_mutex_of_ceph_auth_client(struct mutex *lock);
45 extern int ldv_atomic_dec_and_mutex_lock_mutex_of_ceph_auth_client(atomic_t *cnt, struct mutex *lock);
46 extern int ldv_mutex_is_locked_mutex_of_ceph_auth_client(struct mutex *lock);
47 extern void ldv_mutex_unlock_mutex_of_ceph_auth_client(struct mutex *lock);
48 extern int ldv_mutex_lock_interruptible_mutex_of_ceph_connection(struct mutex *lock);
49 extern int ldv_mutex_lock_killable_mutex_of_ceph_connection(struct mutex *lock);
50 extern void ldv_mutex_lock_nested_mutex_of_ceph_connection(struct mutex *lock, unsigned int subclass);
51 extern void ldv_mutex_lock_mutex_of_ceph_connection(struct mutex *lock);
52 extern int ldv_mutex_trylock_mutex_of_ceph_connection(struct mutex *lock);
53 extern int ldv_atomic_dec_and_mutex_lock_mutex_of_ceph_connection(atomic_t *cnt, struct mutex *lock);
54 extern int ldv_mutex_is_locked_mutex_of_ceph_connection(struct mutex *lock);
55 extern void ldv_mutex_unlock_mutex_of_ceph_connection(struct mutex *lock);
56 extern int ldv_mutex_lock_interruptible_mutex_of_ceph_mon_client(struct mutex *lock);
57 extern int ldv_mutex_lock_killable_mutex_of_ceph_mon_client(struct mutex *lock);
58 extern void ldv_mutex_lock_nested_mutex_of_ceph_mon_client(struct mutex *lock, unsigned int subclass);
59 extern void ldv_mutex_lock_mutex_of_ceph_mon_client(struct mutex *lock);
60 extern int ldv_mutex_trylock_mutex_of_ceph_mon_client(struct mutex *lock);
61 extern int ldv_atomic_dec_and_mutex_lock_mutex_of_ceph_mon_client(atomic_t *cnt, struct mutex *lock);
62 extern int ldv_mutex_is_locked_mutex_of_ceph_mon_client(struct mutex *lock);
63 extern void ldv_mutex_unlock_mutex_of_ceph_mon_client(struct mutex *lock);
64 extern int ldv_mutex_lock_interruptible_mutex_of_device(struct mutex *lock);
65 extern int ldv_mutex_lock_killable_mutex_of_device(struct mutex *lock);
66 extern void ldv_mutex_lock_nested_mutex_of_device(struct mutex *lock, unsigned int subclass);
67 extern void ldv_mutex_lock_mutex_of_device(struct mutex *lock);
68 extern int ldv_mutex_trylock_mutex_of_device(struct mutex *lock);
69 extern int ldv_atomic_dec_and_mutex_lock_mutex_of_device(atomic_t *cnt, struct mutex *lock);
70 extern int ldv_mutex_is_locked_mutex_of_device(struct mutex *lock);
71 extern void ldv_mutex_unlock_mutex_of_device(struct mutex *lock);
72 extern int ldv_mutex_lock_interruptible_request_mutex_of_ceph_osd_client(struct mutex *lock);
73 extern int ldv_mutex_lock_killable_request_mutex_of_ceph_osd_client(struct mutex *lock);
74 extern void ldv_mutex_lock_nested_request_mutex_of_ceph_osd_client(struct mutex *lock, unsigned int subclass);
75 extern void ldv_mutex_lock_request_mutex_of_ceph_osd_client(struct mutex *lock);
76 extern int ldv_mutex_trylock_request_mutex_of_ceph_osd_client(struct mutex *lock);
77 extern int ldv_atomic_dec_and_mutex_lock_request_mutex_of_ceph_osd_client(atomic_t *cnt, struct mutex *lock);
78 extern int ldv_mutex_is_locked_request_mutex_of_ceph_osd_client(struct mutex *lock);
79 extern void ldv_mutex_unlock_request_mutex_of_ceph_osd_client(struct mutex *lock);
80 #include <linux/ceph/ceph_debug.h>
81
82 #include <linux/module.h>
83 #include <linux/err.h>
84 #include <linux/slab.h>
85
86 #include <linux/ceph/types.h>
87 #include <linux/ceph/decode.h>
88 #include <linux/ceph/libceph.h>
89 #include <linux/ceph/messenger.h>
90 #include "auth_none.h"
91 #include "auth_x.h"
92
93
94 /*
95 * get protocol handler
96 */
97 static u32 supported_protocols[] = {
98 CEPH_AUTH_NONE,
99 CEPH_AUTH_CEPHX
100 };
101
102 static int ceph_auth_init_protocol(struct ceph_auth_client *ac, int protocol)
103 {
104 switch (protocol) {
105 case CEPH_AUTH_NONE:
106 return ceph_auth_none_init(ac);
107 case CEPH_AUTH_CEPHX:
108 return ceph_x_init(ac);
109 default:
110 return -ENOENT;
111 }
112 }
113
114 /*
115 * setup, teardown.
116 */
117 struct ceph_auth_client *ceph_auth_init(const char *name, const struct ceph_crypto_key *key)
118 {
119 struct ceph_auth_client *ac;
120 int ret;
121
122 dout("auth_init name '%s'\n", name);
123
124 ret = -ENOMEM;
125 ac = kzalloc(sizeof(*ac), GFP_NOFS);
126 if (!ac)
127 goto out;
128
129 mutex_init(&ac->mutex);
130 ac->negotiating = true;
131 if (name)
132 ac->name = name;
133 else
134 ac->name = CEPH_AUTH_NAME_DEFAULT;
135 dout("auth_init name %s\n", ac->name);
136 ac->key = key;
137 return ac;
138
139 out:
140 return ERR_PTR(ret);
141 }
142
143 void ceph_auth_destroy(struct ceph_auth_client *ac)
144 {
145 dout("auth_destroy %p\n", ac);
146 if (ac->ops)
147 ac->ops->destroy(ac);
148 kfree(ac);
149 }
150
151 /*
152 * Reset occurs when reconnecting to the monitor.
153 */
154 void ceph_auth_reset(struct ceph_auth_client *ac)
155 {
156 mutex_lock(&ac->mutex);
157 dout("auth_reset %p\n", ac);
158 if (ac->ops && !ac->negotiating)
159 ac->ops->reset(ac);
160 ac->negotiating = true;
161 mutex_unlock(&ac->mutex);
162 }
163
164 int ceph_entity_name_encode(const char *name, void **p, void *end)
165 {
166 int len = strlen(name);
167
168 if (*p + 2*sizeof(u32) + len > end)
169 return -ERANGE;
170 ceph_encode_32(p, CEPH_ENTITY_TYPE_CLIENT);
171 ceph_encode_32(p, len);
172 ceph_encode_copy(p, name, len);
173 return 0;
174 }
175
176 /*
177 * Initiate protocol negotiation with monitor. Include entity name
178 * and list supported protocols.
179 */
180 int ceph_auth_build_hello(struct ceph_auth_client *ac, void *buf, size_t len)
181 {
182 struct ceph_mon_request_header *monhdr = buf;
183 void *p = monhdr + 1, *end = buf + len, *lenp;
184 int i, num;
185 int ret;
186
187 mutex_lock(&ac->mutex);
188 dout("auth_build_hello\n");
189 monhdr->have_version = 0;
190 monhdr->session_mon = cpu_to_le16(-1);
191 monhdr->session_mon_tid = 0;
192
193 ceph_encode_32(&p, 0); /* no protocol, yet */
194
195 lenp = p;
196 p += sizeof(u32);
197
198 ceph_decode_need(&p, end, 1 + sizeof(u32), bad);
199 ceph_encode_8(&p, 1);
200 num = ARRAY_SIZE(supported_protocols);
201 ceph_encode_32(&p, num);
202 ceph_decode_need(&p, end, num * sizeof(u32), bad);
203 for (i = 0; i < num; i++)
204 ceph_encode_32(&p, supported_protocols[i]);
205
206 ret = ceph_entity_name_encode(ac->name, &p, end);
207 if (ret < 0)
208 goto out;
209 ceph_decode_need(&p, end, sizeof(u64), bad);
210 ceph_encode_64(&p, ac->global_id);
211
212 ceph_encode_32(&lenp, p - lenp - sizeof(u32));
213 ret = p - buf;
214 out:
215 mutex_unlock(&ac->mutex);
216 return ret;
217
218 bad:
219 ret = -ERANGE;
220 goto out;
221 }
222
223 static int ceph_build_auth_request(struct ceph_auth_client *ac,
224 void *msg_buf, size_t msg_len)
225 {
226 struct ceph_mon_request_header *monhdr = msg_buf;
227 void *p = monhdr + 1;
228 void *end = msg_buf + msg_len;
229 int ret;
230
231 monhdr->have_version = 0;
232 monhdr->session_mon = cpu_to_le16(-1);
233 monhdr->session_mon_tid = 0;
234
235 ceph_encode_32(&p, ac->protocol);
236
237 ret = ac->ops->build_request(ac, p + sizeof(u32), end);
238 if (ret < 0) {
239 pr_err("error %d building auth method %s request\n", ret,
240 ac->ops->name);
241 goto out;
242 }
243 dout(" built request %d bytes\n", ret);
244 ceph_encode_32(&p, ret);
245 ret = p + ret - msg_buf;
246 out:
247 return ret;
248 }
249
250 /*
251 * Handle auth message from monitor.
252 */
253 int ceph_handle_auth_reply(struct ceph_auth_client *ac,
254 void *buf, size_t len,
255 void *reply_buf, size_t reply_len)
256 {
257 void *p = buf;
258 void *end = buf + len;
259 int protocol;
260 s32 result;
261 u64 global_id;
262 void *payload, *payload_end;
263 int payload_len;
264 char *result_msg;
265 int result_msg_len;
266 int ret = -EINVAL;
267
268 mutex_lock(&ac->mutex);
269 dout("handle_auth_reply %p %p\n", p, end);
270 ceph_decode_need(&p, end, sizeof(u32) * 3 + sizeof(u64), bad);
271 protocol = ceph_decode_32(&p);
272 result = ceph_decode_32(&p);
273 global_id = ceph_decode_64(&p);
274 payload_len = ceph_decode_32(&p);
275 payload = p;
276 p += payload_len;
277 ceph_decode_need(&p, end, sizeof(u32), bad);
278 result_msg_len = ceph_decode_32(&p);
279 result_msg = p;
280 p += result_msg_len;
281 if (p != end)
282 goto bad;
283
284 dout(" result %d '%.*s' gid %llu len %d\n", result, result_msg_len,
285 result_msg, global_id, payload_len);
286
287 payload_end = payload + payload_len;
288
289 if (global_id && ac->global_id != global_id) {
290 dout(" set global_id %lld -> %lld\n", ac->global_id, global_id);
291 ac->global_id = global_id;
292 }
293
294 if (ac->negotiating) {
295 /* server does not support our protocols? */
296 if (!protocol && result < 0) {
297 ret = result;
298 goto out;
299 }
300 /* set up (new) protocol handler? */
301 if (ac->protocol && ac->protocol != protocol) {
302 ac->ops->destroy(ac);
303 ac->protocol = 0;
304 ac->ops = NULL;
305 }
306 if (ac->protocol != protocol) {
307 ret = ceph_auth_init_protocol(ac, protocol);
308 if (ret) {
309 pr_err("error %d on auth protocol %d init\n",
310 ret, protocol);
311 goto out;
312 }
313 }
314
315 ac->negotiating = false;
316 }
317
318 ret = ac->ops->handle_reply(ac, result, payload, payload_end);
319 if (ret == -EAGAIN) {
320 ret = ceph_build_auth_request(ac, reply_buf, reply_len);
321 } else if (ret) {
322 pr_err("auth method '%s' error %d\n", ac->ops->name, ret);
323 }
324
325 out:
326 mutex_unlock(&ac->mutex);
327 return ret;
328
329 bad:
330 pr_err("failed to decode auth msg\n");
331 ret = -EINVAL;
332 goto out;
333 }
334
335 int ceph_build_auth(struct ceph_auth_client *ac,
336 void *msg_buf, size_t msg_len)
337 {
338 int ret = 0;
339
340 mutex_lock(&ac->mutex);
341 if (!ac->protocol)
342 ret = ceph_auth_build_hello(ac, msg_buf, msg_len);
343 else if (ac->ops->should_authenticate(ac))
344 ret = ceph_build_auth_request(ac, msg_buf, msg_len);
345 mutex_unlock(&ac->mutex);
346 return ret;
347 }
348
349 int ceph_auth_is_authenticated(struct ceph_auth_client *ac)
350 {
351 int ret = 0;
352
353 mutex_lock(&ac->mutex);
354 if (ac->ops)
355 ret = ac->ops->is_authenticated(ac);
356 mutex_unlock(&ac->mutex);
357 return ret;
358 }
359 EXPORT_SYMBOL(ceph_auth_is_authenticated);
360
361 int ceph_auth_create_authorizer(struct ceph_auth_client *ac,
362 int peer_type,
363 struct ceph_auth_handshake *auth)
364 {
365 int ret = 0;
366
367 mutex_lock(&ac->mutex);
368 if (ac->ops && ac->ops->create_authorizer)
369 ret = ac->ops->create_authorizer(ac, peer_type, auth);
370 mutex_unlock(&ac->mutex);
371 return ret;
372 }
373 EXPORT_SYMBOL(ceph_auth_create_authorizer);
374
375 void ceph_auth_destroy_authorizer(struct ceph_auth_client *ac,
376 struct ceph_authorizer *a)
377 {
378 mutex_lock(&ac->mutex);
379 if (ac->ops && ac->ops->destroy_authorizer)
380 ac->ops->destroy_authorizer(ac, a);
381 mutex_unlock(&ac->mutex);
382 }
383 EXPORT_SYMBOL(ceph_auth_destroy_authorizer);
384
385 int ceph_auth_update_authorizer(struct ceph_auth_client *ac,
386 int peer_type,
387 struct ceph_auth_handshake *a)
388 {
389 int ret = 0;
390
391 mutex_lock(&ac->mutex);
392 if (ac->ops && ac->ops->update_authorizer)
393 ret = ac->ops->update_authorizer(ac, peer_type, a);
394 mutex_unlock(&ac->mutex);
395 return ret;
396 }
397 EXPORT_SYMBOL(ceph_auth_update_authorizer);
398
399 int ceph_auth_verify_authorizer_reply(struct ceph_auth_client *ac,
400 struct ceph_authorizer *a, size_t len)
401 {
402 int ret = 0;
403
404 mutex_lock(&ac->mutex);
405 if (ac->ops && ac->ops->verify_authorizer_reply)
406 ret = ac->ops->verify_authorizer_reply(ac, a, len);
407 mutex_unlock(&ac->mutex);
408 return ret;
409 }
410 EXPORT_SYMBOL(ceph_auth_verify_authorizer_reply);
411
412 void ceph_auth_invalidate_authorizer(struct ceph_auth_client *ac, int peer_type)
413 {
414 mutex_lock(&ac->mutex);
415 if (ac->ops && ac->ops->invalidate_authorizer)
416 ac->ops->invalidate_authorizer(ac, peer_type);
417 mutex_unlock(&ac->mutex);
418 }
419 EXPORT_SYMBOL(ceph_auth_invalidate_authorizer); 1
2 #include <linux/kernel.h>
3 #include <linux/mutex.h>
4
5 extern int mutex_lock_interruptible(struct mutex *lock);
6 extern int mutex_lock_killable(struct mutex *lock);
7 extern void mutex_lock(struct mutex *lock);
8 extern int ldv_mutex_lock_interruptible_crush_scratch_mutex_of_ceph_osdmap(struct mutex *lock);
9 extern int ldv_mutex_lock_killable_crush_scratch_mutex_of_ceph_osdmap(struct mutex *lock);
10 extern void ldv_mutex_lock_nested_crush_scratch_mutex_of_ceph_osdmap(struct mutex *lock, unsigned int subclass);
11 extern void ldv_mutex_lock_crush_scratch_mutex_of_ceph_osdmap(struct mutex *lock);
12 extern int ldv_mutex_trylock_crush_scratch_mutex_of_ceph_osdmap(struct mutex *lock);
13 extern int ldv_atomic_dec_and_mutex_lock_crush_scratch_mutex_of_ceph_osdmap(atomic_t *cnt, struct mutex *lock);
14 extern int ldv_mutex_is_locked_crush_scratch_mutex_of_ceph_osdmap(struct mutex *lock);
15 extern void ldv_mutex_unlock_crush_scratch_mutex_of_ceph_osdmap(struct mutex *lock);
16 extern int ldv_mutex_lock_interruptible_i_mutex_of_inode(struct mutex *lock);
17 extern int ldv_mutex_lock_killable_i_mutex_of_inode(struct mutex *lock);
18 extern void ldv_mutex_lock_nested_i_mutex_of_inode(struct mutex *lock, unsigned int subclass);
19 extern void ldv_mutex_lock_i_mutex_of_inode(struct mutex *lock);
20 extern int ldv_mutex_trylock_i_mutex_of_inode(struct mutex *lock);
21 extern int ldv_atomic_dec_and_mutex_lock_i_mutex_of_inode(atomic_t *cnt, struct mutex *lock);
22 extern int ldv_mutex_is_locked_i_mutex_of_inode(struct mutex *lock);
23 extern void ldv_mutex_unlock_i_mutex_of_inode(struct mutex *lock);
24 extern int ldv_mutex_lock_interruptible_lock(struct mutex *lock);
25 extern int ldv_mutex_lock_killable_lock(struct mutex *lock);
26 extern void ldv_mutex_lock_nested_lock(struct mutex *lock, unsigned int subclass);
27 extern void ldv_mutex_lock_lock(struct mutex *lock);
28 extern int ldv_mutex_trylock_lock(struct mutex *lock);
29 extern int ldv_atomic_dec_and_mutex_lock_lock(atomic_t *cnt, struct mutex *lock);
30 extern int ldv_mutex_is_locked_lock(struct mutex *lock);
31 extern void ldv_mutex_unlock_lock(struct mutex *lock);
32 extern int ldv_mutex_lock_interruptible_mount_mutex_of_ceph_client(struct mutex *lock);
33 extern int ldv_mutex_lock_killable_mount_mutex_of_ceph_client(struct mutex *lock);
34 extern void ldv_mutex_lock_nested_mount_mutex_of_ceph_client(struct mutex *lock, unsigned int subclass);
35 extern void ldv_mutex_lock_mount_mutex_of_ceph_client(struct mutex *lock);
36 extern int ldv_mutex_trylock_mount_mutex_of_ceph_client(struct mutex *lock);
37 extern int ldv_atomic_dec_and_mutex_lock_mount_mutex_of_ceph_client(atomic_t *cnt, struct mutex *lock);
38 extern int ldv_mutex_is_locked_mount_mutex_of_ceph_client(struct mutex *lock);
39 extern void ldv_mutex_unlock_mount_mutex_of_ceph_client(struct mutex *lock);
40 extern int ldv_mutex_lock_interruptible_mutex_of_ceph_auth_client(struct mutex *lock);
41 extern int ldv_mutex_lock_killable_mutex_of_ceph_auth_client(struct mutex *lock);
42 extern void ldv_mutex_lock_nested_mutex_of_ceph_auth_client(struct mutex *lock, unsigned int subclass);
43 extern void ldv_mutex_lock_mutex_of_ceph_auth_client(struct mutex *lock);
44 extern int ldv_mutex_trylock_mutex_of_ceph_auth_client(struct mutex *lock);
45 extern int ldv_atomic_dec_and_mutex_lock_mutex_of_ceph_auth_client(atomic_t *cnt, struct mutex *lock);
46 extern int ldv_mutex_is_locked_mutex_of_ceph_auth_client(struct mutex *lock);
47 extern void ldv_mutex_unlock_mutex_of_ceph_auth_client(struct mutex *lock);
48 extern int ldv_mutex_lock_interruptible_mutex_of_ceph_connection(struct mutex *lock);
49 extern int ldv_mutex_lock_killable_mutex_of_ceph_connection(struct mutex *lock);
50 extern void ldv_mutex_lock_nested_mutex_of_ceph_connection(struct mutex *lock, unsigned int subclass);
51 extern void ldv_mutex_lock_mutex_of_ceph_connection(struct mutex *lock);
52 extern int ldv_mutex_trylock_mutex_of_ceph_connection(struct mutex *lock);
53 extern int ldv_atomic_dec_and_mutex_lock_mutex_of_ceph_connection(atomic_t *cnt, struct mutex *lock);
54 extern int ldv_mutex_is_locked_mutex_of_ceph_connection(struct mutex *lock);
55 extern void ldv_mutex_unlock_mutex_of_ceph_connection(struct mutex *lock);
56 extern int ldv_mutex_lock_interruptible_mutex_of_ceph_mon_client(struct mutex *lock);
57 extern int ldv_mutex_lock_killable_mutex_of_ceph_mon_client(struct mutex *lock);
58 extern void ldv_mutex_lock_nested_mutex_of_ceph_mon_client(struct mutex *lock, unsigned int subclass);
59 extern void ldv_mutex_lock_mutex_of_ceph_mon_client(struct mutex *lock);
60 extern int ldv_mutex_trylock_mutex_of_ceph_mon_client(struct mutex *lock);
61 extern int ldv_atomic_dec_and_mutex_lock_mutex_of_ceph_mon_client(atomic_t *cnt, struct mutex *lock);
62 extern int ldv_mutex_is_locked_mutex_of_ceph_mon_client(struct mutex *lock);
63 extern void ldv_mutex_unlock_mutex_of_ceph_mon_client(struct mutex *lock);
64 extern int ldv_mutex_lock_interruptible_mutex_of_device(struct mutex *lock);
65 extern int ldv_mutex_lock_killable_mutex_of_device(struct mutex *lock);
66 extern void ldv_mutex_lock_nested_mutex_of_device(struct mutex *lock, unsigned int subclass);
67 extern void ldv_mutex_lock_mutex_of_device(struct mutex *lock);
68 extern int ldv_mutex_trylock_mutex_of_device(struct mutex *lock);
69 extern int ldv_atomic_dec_and_mutex_lock_mutex_of_device(atomic_t *cnt, struct mutex *lock);
70 extern int ldv_mutex_is_locked_mutex_of_device(struct mutex *lock);
71 extern void ldv_mutex_unlock_mutex_of_device(struct mutex *lock);
72 extern int ldv_mutex_lock_interruptible_request_mutex_of_ceph_osd_client(struct mutex *lock);
73 extern int ldv_mutex_lock_killable_request_mutex_of_ceph_osd_client(struct mutex *lock);
74 extern void ldv_mutex_lock_nested_request_mutex_of_ceph_osd_client(struct mutex *lock, unsigned int subclass);
75 extern void ldv_mutex_lock_request_mutex_of_ceph_osd_client(struct mutex *lock);
76 extern int ldv_mutex_trylock_request_mutex_of_ceph_osd_client(struct mutex *lock);
77 extern int ldv_atomic_dec_and_mutex_lock_request_mutex_of_ceph_osd_client(atomic_t *cnt, struct mutex *lock);
78 extern int ldv_mutex_is_locked_request_mutex_of_ceph_osd_client(struct mutex *lock);
79 extern void ldv_mutex_unlock_request_mutex_of_ceph_osd_client(struct mutex *lock);
80
81 #include <linux/ceph/ceph_debug.h>
82
83 #include <linux/module.h>
84 #include <linux/types.h>
85 #include <linux/slab.h>
86 #include <linux/random.h>
87 #include <linux/sched.h>
88
89 #include <linux/ceph/mon_client.h>
90 #include <linux/ceph/libceph.h>
91 #include <linux/ceph/debugfs.h>
92 #include <linux/ceph/decode.h>
93 #include <linux/ceph/auth.h>
94
95 /*
96 * Interact with Ceph monitor cluster. Handle requests for new map
97 * versions, and periodically resend as needed. Also implement
98 * statfs() and umount().
99 *
100 * A small cluster of Ceph "monitors" are responsible for managing critical
101 * cluster configuration and state information. An odd number (e.g., 3, 5)
102 * of cmon daemons use a modified version of the Paxos part-time parliament
103 * algorithm to manage the MDS map (mds cluster membership), OSD map, and
104 * list of clients who have mounted the file system.
105 *
106 * We maintain an open, active session with a monitor at all times in order to
107 * receive timely MDSMap updates. We periodically send a keepalive byte on the
108 * TCP socket to ensure we detect a failure. If the connection does break, we
109 * randomly hunt for a new monitor. Once the connection is reestablished, we
110 * resend any outstanding requests.
111 */
112
113 static const struct ceph_connection_operations mon_con_ops;
114
115 static int __validate_auth(struct ceph_mon_client *monc);
116
117 /*
118 * Decode a monmap blob (e.g., during mount).
119 */
120 struct ceph_monmap *ceph_monmap_decode(void *p, void *end)
121 {
122 struct ceph_monmap *m = NULL;
123 int i, err = -EINVAL;
124 struct ceph_fsid fsid;
125 u32 epoch, num_mon;
126 u16 version;
127 u32 len;
128
129 ceph_decode_32_safe(&p, end, len, bad);
130 ceph_decode_need(&p, end, len, bad);
131
132 dout("monmap_decode %p %p len %d\n", p, end, (int)(end-p));
133
134 ceph_decode_16_safe(&p, end, version, bad);
135
136 ceph_decode_need(&p, end, sizeof(fsid) + 2*sizeof(u32), bad);
137 ceph_decode_copy(&p, &fsid, sizeof(fsid));
138 epoch = ceph_decode_32(&p);
139
140 num_mon = ceph_decode_32(&p);
141 ceph_decode_need(&p, end, num_mon*sizeof(m->mon_inst[0]), bad);
142
143 if (num_mon >= CEPH_MAX_MON)
144 goto bad;
145 m = kmalloc(sizeof(*m) + sizeof(m->mon_inst[0])*num_mon, GFP_NOFS);
146 if (m == NULL)
147 return ERR_PTR(-ENOMEM);
148 m->fsid = fsid;
149 m->epoch = epoch;
150 m->num_mon = num_mon;
151 ceph_decode_copy(&p, m->mon_inst, num_mon*sizeof(m->mon_inst[0]));
152 for (i = 0; i < num_mon; i++)
153 ceph_decode_addr(&m->mon_inst[i].addr);
154
155 dout("monmap_decode epoch %d, num_mon %d\n", m->epoch,
156 m->num_mon);
157 for (i = 0; i < m->num_mon; i++)
158 dout("monmap_decode mon%d is %s\n", i,
159 ceph_pr_addr(&m->mon_inst[i].addr.in_addr));
160 return m;
161
162 bad:
163 dout("monmap_decode failed with %d\n", err);
164 kfree(m);
165 return ERR_PTR(err);
166 }
167
168 /*
169 * return true if *addr is included in the monmap.
170 */
171 int ceph_monmap_contains(struct ceph_monmap *m, struct ceph_entity_addr *addr)
172 {
173 int i;
174
175 for (i = 0; i < m->num_mon; i++)
176 if (memcmp(addr, &m->mon_inst[i].addr, sizeof(*addr)) == 0)
177 return 1;
178 return 0;
179 }
180
181 /*
182 * Send an auth request.
183 */
184 static void __send_prepared_auth_request(struct ceph_mon_client *monc, int len)
185 {
186 monc->pending_auth = 1;
187 monc->m_auth->front.iov_len = len;
188 monc->m_auth->hdr.front_len = cpu_to_le32(len);
189 ceph_msg_revoke(monc->m_auth);
190 ceph_msg_get(monc->m_auth); /* keep our ref */
191 ceph_con_send(&monc->con, monc->m_auth);
192 }
193
194 /*
195 * Close monitor session, if any.
196 */
197 static void __close_session(struct ceph_mon_client *monc)
198 {
199 dout("__close_session closing mon%d\n", monc->cur_mon);
200 ceph_msg_revoke(monc->m_auth);
201 ceph_msg_revoke_incoming(monc->m_auth_reply);
202 ceph_msg_revoke(monc->m_subscribe);
203 ceph_msg_revoke_incoming(monc->m_subscribe_ack);
204 ceph_con_close(&monc->con);
205 monc->cur_mon = -1;
206 monc->pending_auth = 0;
207 ceph_auth_reset(monc->auth);
208 }
209
210 /*
211 * Open a session with a (new) monitor.
212 */
213 static int __open_session(struct ceph_mon_client *monc)
214 {
215 char r;
216 int ret;
217
218 if (monc->cur_mon < 0) {
219 get_random_bytes(&r, 1);
220 monc->cur_mon = r % monc->monmap->num_mon;
221 dout("open_session num=%d r=%d -> mon%d\n",
222 monc->monmap->num_mon, r, monc->cur_mon);
223 monc->sub_sent = 0;
224 monc->sub_renew_after = jiffies; /* i.e., expired */
225 monc->want_next_osdmap = !!monc->want_next_osdmap;
226
227 dout("open_session mon%d opening\n", monc->cur_mon);
228 ceph_con_open(&monc->con,
229 CEPH_ENTITY_TYPE_MON, monc->cur_mon,
230 &monc->monmap->mon_inst[monc->cur_mon].addr);
231
232 /* initiatiate authentication handshake */
233 ret = ceph_auth_build_hello(monc->auth,
234 monc->m_auth->front.iov_base,
235 monc->m_auth->front_alloc_len);
236 __send_prepared_auth_request(monc, ret);
237 } else {
238 dout("open_session mon%d already open\n", monc->cur_mon);
239 }
240 return 0;
241 }
242
243 static bool __sub_expired(struct ceph_mon_client *monc)
244 {
245 return time_after_eq(jiffies, monc->sub_renew_after);
246 }
247
248 /*
249 * Reschedule delayed work timer.
250 */
251 static void __schedule_delayed(struct ceph_mon_client *monc)
252 {
253 unsigned int delay;
254
255 if (monc->cur_mon < 0 || __sub_expired(monc))
256 delay = 10 * HZ;
257 else
258 delay = 20 * HZ;
259 dout("__schedule_delayed after %u\n", delay);
260 schedule_delayed_work(&monc->delayed_work, delay);
261 }
262
263 /*
264 * Send subscribe request for mdsmap and/or osdmap.
265 */
266 static void __send_subscribe(struct ceph_mon_client *monc)
267 {
268 dout("__send_subscribe sub_sent=%u exp=%u want_osd=%d\n",
269 (unsigned int)monc->sub_sent, __sub_expired(monc),
270 monc->want_next_osdmap);
271 if ((__sub_expired(monc) && !monc->sub_sent) ||
272 monc->want_next_osdmap == 1) {
273 struct ceph_msg *msg = monc->m_subscribe;
274 struct ceph_mon_subscribe_item *i;
275 void *p, *end;
276 int num;
277
278 p = msg->front.iov_base;
279 end = p + msg->front_alloc_len;
280
281 num = 1 + !!monc->want_next_osdmap + !!monc->want_mdsmap;
282 ceph_encode_32(&p, num);
283
284 if (monc->want_next_osdmap) {
285 dout("__send_subscribe to 'osdmap' %u\n",
286 (unsigned int)monc->have_osdmap);
287 ceph_encode_string(&p, end, "osdmap", 6);
288 i = p;
289 i->have = cpu_to_le64(monc->have_osdmap);
290 i->onetime = 1;
291 p += sizeof(*i);
292 monc->want_next_osdmap = 2; /* requested */
293 }
294 if (monc->want_mdsmap) {
295 dout("__send_subscribe to 'mdsmap' %u+\n",
296 (unsigned int)monc->have_mdsmap);
297 ceph_encode_string(&p, end, "mdsmap", 6);
298 i = p;
299 i->have = cpu_to_le64(monc->have_mdsmap);
300 i->onetime = 0;
301 p += sizeof(*i);
302 }
303 ceph_encode_string(&p, end, "monmap", 6);
304 i = p;
305 i->have = 0;
306 i->onetime = 0;
307 p += sizeof(*i);
308
309 msg->front.iov_len = p - msg->front.iov_base;
310 msg->hdr.front_len = cpu_to_le32(msg->front.iov_len);
311 ceph_msg_revoke(msg);
312 ceph_con_send(&monc->con, ceph_msg_get(msg));
313
314 monc->sub_sent = jiffies | 1; /* never 0 */
315 }
316 }
317
318 static void handle_subscribe_ack(struct ceph_mon_client *monc,
319 struct ceph_msg *msg)
320 {
321 unsigned int seconds;
322 struct ceph_mon_subscribe_ack *h = msg->front.iov_base;
323
324 if (msg->front.iov_len < sizeof(*h))
325 goto bad;
326 seconds = le32_to_cpu(h->duration);
327
328 mutex_lock(&monc->mutex);
329 if (monc->hunting) {
330 pr_info("mon%d %s session established\n",
331 monc->cur_mon,
332 ceph_pr_addr(&monc->con.peer_addr.in_addr));
333 monc->hunting = false;
334 }
335 dout("handle_subscribe_ack after %d seconds\n", seconds);
336 monc->sub_renew_after = monc->sub_sent + (seconds >> 1)*HZ - 1;
337 monc->sub_sent = 0;
338 mutex_unlock(&monc->mutex);
339 return;
340 bad:
341 pr_err("got corrupt subscribe-ack msg\n");
342 ceph_msg_dump(msg);
343 }
344
345 /*
346 * Keep track of which maps we have
347 */
348 int ceph_monc_got_mdsmap(struct ceph_mon_client *monc, u32 got)
349 {
350 mutex_lock(&monc->mutex);
351 monc->have_mdsmap = got;
352 mutex_unlock(&monc->mutex);
353 return 0;
354 }
355 EXPORT_SYMBOL(ceph_monc_got_mdsmap);
356
357 int ceph_monc_got_osdmap(struct ceph_mon_client *monc, u32 got)
358 {
359 mutex_lock(&monc->mutex);
360 monc->have_osdmap = got;
361 monc->want_next_osdmap = 0;
362 mutex_unlock(&monc->mutex);
363 return 0;
364 }
365
366 /*
367 * Register interest in the next osdmap
368 */
369 void ceph_monc_request_next_osdmap(struct ceph_mon_client *monc)
370 {
371 dout("request_next_osdmap have %u\n", monc->have_osdmap);
372 mutex_lock(&monc->mutex);
373 if (!monc->want_next_osdmap)
374 monc->want_next_osdmap = 1;
375 if (monc->want_next_osdmap < 2)
376 __send_subscribe(monc);
377 mutex_unlock(&monc->mutex);
378 }
379 EXPORT_SYMBOL(ceph_monc_request_next_osdmap);
380
381 int ceph_monc_wait_osdmap(struct ceph_mon_client *monc, u32 epoch,
382 unsigned long timeout)
383 {
384 unsigned long started = jiffies;
385 int ret;
386
387 mutex_lock(&monc->mutex);
388 while (monc->have_osdmap < epoch) {
389 mutex_unlock(&monc->mutex);
390
391 if (timeout != 0 && time_after_eq(jiffies, started + timeout))
392 return -ETIMEDOUT;
393
394 ret = wait_event_interruptible_timeout(monc->client->auth_wq,
395 monc->have_osdmap >= epoch, timeout);
396 if (ret < 0)
397 return ret;
398
399 mutex_lock(&monc->mutex);
400 }
401
402 mutex_unlock(&monc->mutex);
403 return 0;
404 }
405 EXPORT_SYMBOL(ceph_monc_wait_osdmap);
406
407 /*
408 *
409 */
410 int ceph_monc_open_session(struct ceph_mon_client *monc)
411 {
412 mutex_lock(&monc->mutex);
413 __open_session(monc);
414 __schedule_delayed(monc);
415 mutex_unlock(&monc->mutex);
416 return 0;
417 }
418 EXPORT_SYMBOL(ceph_monc_open_session);
419
420 /*
421 * We require the fsid and global_id in order to initialize our
422 * debugfs dir.
423 */
424 static bool have_debugfs_info(struct ceph_mon_client *monc)
425 {
426 dout("have_debugfs_info fsid %d globalid %lld\n",
427 (int)monc->client->have_fsid, monc->auth->global_id);
428 return monc->client->have_fsid && monc->auth->global_id > 0;
429 }
430
431 /*
432 * The monitor responds with mount ack indicate mount success. The
433 * included client ticket allows the client to talk to MDSs and OSDs.
434 */
435 static void ceph_monc_handle_map(struct ceph_mon_client *monc,
436 struct ceph_msg *msg)
437 {
438 struct ceph_client *client = monc->client;
439 struct ceph_monmap *monmap = NULL, *old = monc->monmap;
440 void *p, *end;
441 int had_debugfs_info, init_debugfs = 0;
442
443 mutex_lock(&monc->mutex);
444
445 had_debugfs_info = have_debugfs_info(monc);
446
447 dout("handle_monmap\n");
448 p = msg->front.iov_base;
449 end = p + msg->front.iov_len;
450
451 monmap = ceph_monmap_decode(p, end);
452 if (IS_ERR(monmap)) {
453 pr_err("problem decoding monmap, %d\n",
454 (int)PTR_ERR(monmap));
455 goto out;
456 }
457
458 if (ceph_check_fsid(monc->client, &monmap->fsid) < 0) {
459 kfree(monmap);
460 goto out;
461 }
462
463 client->monc.monmap = monmap;
464 kfree(old);
465
466 if (!client->have_fsid) {
467 client->have_fsid = true;
468 if (!had_debugfs_info && have_debugfs_info(monc)) {
469 pr_info("client%lld fsid %pU\n",
470 ceph_client_id(monc->client),
471 &monc->client->fsid);
472 init_debugfs = 1;
473 }
474 mutex_unlock(&monc->mutex);
475
476 if (init_debugfs) {
477 /*
478 * do debugfs initialization without mutex to avoid
479 * creating a locking dependency
480 */
481 ceph_debugfs_client_init(monc->client);
482 }
483
484 goto out_unlocked;
485 }
486 out:
487 mutex_unlock(&monc->mutex);
488 out_unlocked:
489 wake_up_all(&client->auth_wq);
490 }
491
492 /*
493 * generic requests (e.g., statfs, poolop)
494 */
495 static struct ceph_mon_generic_request *__lookup_generic_req(
496 struct ceph_mon_client *monc, u64 tid)
497 {
498 struct ceph_mon_generic_request *req;
499 struct rb_node *n = monc->generic_request_tree.rb_node;
500
501 while (n) {
502 req = rb_entry(n, struct ceph_mon_generic_request, node);
503 if (tid < req->tid)
504 n = n->rb_left;
505 else if (tid > req->tid)
506 n = n->rb_right;
507 else
508 return req;
509 }
510 return NULL;
511 }
512
513 static void __insert_generic_request(struct ceph_mon_client *monc,
514 struct ceph_mon_generic_request *new)
515 {
516 struct rb_node **p = &monc->generic_request_tree.rb_node;
517 struct rb_node *parent = NULL;
518 struct ceph_mon_generic_request *req = NULL;
519
520 while (*p) {
521 parent = *p;
522 req = rb_entry(parent, struct ceph_mon_generic_request, node);
523 if (new->tid < req->tid)
524 p = &(*p)->rb_left;
525 else if (new->tid > req->tid)
526 p = &(*p)->rb_right;
527 else
528 BUG();
529 }
530
531 rb_link_node(&new->node, parent, p);
532 rb_insert_color(&new->node, &monc->generic_request_tree);
533 }
534
535 static void release_generic_request(struct kref *kref)
536 {
537 struct ceph_mon_generic_request *req =
538 container_of(kref, struct ceph_mon_generic_request, kref);
539
540 if (req->reply)
541 ceph_msg_put(req->reply);
542 if (req->request)
543 ceph_msg_put(req->request);
544
545 kfree(req);
546 }
547
548 static void put_generic_request(struct ceph_mon_generic_request *req)
549 {
550 kref_put(&req->kref, release_generic_request);
551 }
552
553 static void get_generic_request(struct ceph_mon_generic_request *req)
554 {
555 kref_get(&req->kref);
556 }
557
558 static struct ceph_msg *get_generic_reply(struct ceph_connection *con,
559 struct ceph_msg_header *hdr,
560 int *skip)
561 {
562 struct ceph_mon_client *monc = con->private;
563 struct ceph_mon_generic_request *req;
564 u64 tid = le64_to_cpu(hdr->tid);
565 struct ceph_msg *m;
566
567 mutex_lock(&monc->mutex);
568 req = __lookup_generic_req(monc, tid);
569 if (!req) {
570 dout("get_generic_reply %lld dne\n", tid);
571 *skip = 1;
572 m = NULL;
573 } else {
574 dout("get_generic_reply %lld got %p\n", tid, req->reply);
575 *skip = 0;
576 m = ceph_msg_get(req->reply);
577 /*
578 * we don't need to track the connection reading into
579 * this reply because we only have one open connection
580 * at a time, ever.
581 */
582 }
583 mutex_unlock(&monc->mutex);
584 return m;
585 }
586
587 static int __do_generic_request(struct ceph_mon_client *monc, u64 tid,
588 struct ceph_mon_generic_request *req)
589 {
590 int err;
591
592 /* register request */
593 req->tid = tid != 0 ? tid : ++monc->last_tid;
594 req->request->hdr.tid = cpu_to_le64(req->tid);
595 __insert_generic_request(monc, req);
596 monc->num_generic_requests++;
597 ceph_con_send(&monc->con, ceph_msg_get(req->request));
598 mutex_unlock(&monc->mutex);
599
600 err = wait_for_completion_interruptible(&req->completion);
601
602 mutex_lock(&monc->mutex);
603 rb_erase(&req->node, &monc->generic_request_tree);
604 monc->num_generic_requests--;
605
606 if (!err)
607 err = req->result;
608 return err;
609 }
610
611 static int do_generic_request(struct ceph_mon_client *monc,
612 struct ceph_mon_generic_request *req)
613 {
614 int err;
615
616 mutex_lock(&monc->mutex);
617 err = __do_generic_request(monc, 0, req);
618 mutex_unlock(&monc->mutex);
619
620 return err;
621 }
622
623 /*
624 * statfs
625 */
626 static void handle_statfs_reply(struct ceph_mon_client *monc,
627 struct ceph_msg *msg)
628 {
629 struct ceph_mon_generic_request *req;
630 struct ceph_mon_statfs_reply *reply = msg->front.iov_base;
631 u64 tid = le64_to_cpu(msg->hdr.tid);
632
633 if (msg->front.iov_len != sizeof(*reply))
634 goto bad;
635 dout("handle_statfs_reply %p tid %llu\n", msg, tid);
636
637 mutex_lock(&monc->mutex);
638 req = __lookup_generic_req(monc, tid);
639 if (req) {
640 *(struct ceph_statfs *)req->buf = reply->st;
641 req->result = 0;
642 get_generic_request(req);
643 }
644 mutex_unlock(&monc->mutex);
645 if (req) {
646 complete_all(&req->completion);
647 put_generic_request(req);
648 }
649 return;
650
651 bad:
652 pr_err("corrupt generic reply, tid %llu\n", tid);
653 ceph_msg_dump(msg);
654 }
655
656 /*
657 * Do a synchronous statfs().
658 */
659 int ceph_monc_do_statfs(struct ceph_mon_client *monc, struct ceph_statfs *buf)
660 {
661 struct ceph_mon_generic_request *req;
662 struct ceph_mon_statfs *h;
663 int err;
664
665 req = kzalloc(sizeof(*req), GFP_NOFS);
666 if (!req)
667 return -ENOMEM;
668
669 kref_init(&req->kref);
670 req->buf = buf;
671 req->buf_len = sizeof(*buf);
672 init_completion(&req->completion);
673
674 err = -ENOMEM;
675 req->request = ceph_msg_new(CEPH_MSG_STATFS, sizeof(*h), GFP_NOFS,
676 true);
677 if (!req->request)
678 goto out;
679 req->reply = ceph_msg_new(CEPH_MSG_STATFS_REPLY, 1024, GFP_NOFS,
680 true);
681 if (!req->reply)
682 goto out;
683
684 /* fill out request */
685 h = req->request->front.iov_base;
686 h->monhdr.have_version = 0;
687 h->monhdr.session_mon = cpu_to_le16(-1);
688 h->monhdr.session_mon_tid = 0;
689 h->fsid = monc->monmap->fsid;
690
691 err = do_generic_request(monc, req);
692
693 out:
694 kref_put(&req->kref, release_generic_request);
695 return err;
696 }
697 EXPORT_SYMBOL(ceph_monc_do_statfs);
698
699 static void handle_get_version_reply(struct ceph_mon_client *monc,
700 struct ceph_msg *msg)
701 {
702 struct ceph_mon_generic_request *req;
703 u64 tid = le64_to_cpu(msg->hdr.tid);
704 void *p = msg->front.iov_base;
705 void *end = p + msg->front_alloc_len;
706 u64 handle;
707
708 dout("%s %p tid %llu\n", __func__, msg, tid);
709
710 ceph_decode_need(&p, end, 2*sizeof(u64), bad);
711 handle = ceph_decode_64(&p);
712 if (tid != 0 && tid != handle)
713 goto bad;
714
715 mutex_lock(&monc->mutex);
716 req = __lookup_generic_req(monc, handle);
717 if (req) {
718 *(u64 *)req->buf = ceph_decode_64(&p);
719 req->result = 0;
720 get_generic_request(req);
721 }
722 mutex_unlock(&monc->mutex);
723 if (req) {
724 complete_all(&req->completion);
725 put_generic_request(req);
726 }
727
728 return;
729 bad:
730 pr_err("corrupt mon_get_version reply\n");
731 ceph_msg_dump(msg);
732 }
733
734 /*
735 * Send MMonGetVersion and wait for the reply.
736 *
737 * @what: one of "mdsmap", "osdmap" or "monmap"
738 */
739 int ceph_monc_do_get_version(struct ceph_mon_client *monc, const char *what,
740 u64 *newest)
741 {
742 struct ceph_mon_generic_request *req;
743 void *p, *end;
744 u64 tid;
745 int err;
746
747 req = kzalloc(sizeof(*req), GFP_NOFS);
748 if (!req)
749 return -ENOMEM;
750
751 kref_init(&req->kref);
752 req->buf = newest;
753 req->buf_len = sizeof(*newest);
754 init_completion(&req->completion);
755
756 req->request = ceph_msg_new(CEPH_MSG_MON_GET_VERSION,
757 sizeof(u64) + sizeof(u32) + strlen(what),
758 GFP_NOFS, true);
759 if (!req->request) {
760 err = -ENOMEM;
761 goto out;
762 }
763
764 req->reply = ceph_msg_new(CEPH_MSG_MON_GET_VERSION_REPLY, 1024,
765 GFP_NOFS, true);
766 if (!req->reply) {
767 err = -ENOMEM;
768 goto out;
769 }
770
771 p = req->request->front.iov_base;
772 end = p + req->request->front_alloc_len;
773
774 /* fill out request */
775 mutex_lock(&monc->mutex);
776 tid = ++monc->last_tid;
777 ceph_encode_64(&p, tid); /* handle */
778 ceph_encode_string(&p, end, what, strlen(what));
779
780 err = __do_generic_request(monc, tid, req);
781
782 mutex_unlock(&monc->mutex);
783 out:
784 kref_put(&req->kref, release_generic_request);
785 return err;
786 }
787 EXPORT_SYMBOL(ceph_monc_do_get_version);
788
789 /*
790 * pool ops
791 */
792 static int get_poolop_reply_buf(const char *src, size_t src_len,
793 char *dst, size_t dst_len)
794 {
795 u32 buf_len;
796
797 if (src_len != sizeof(u32) + dst_len)
798 return -EINVAL;
799
800 buf_len = le32_to_cpu(*(u32 *)src);
801 if (buf_len != dst_len)
802 return -EINVAL;
803
804 memcpy(dst, src + sizeof(u32), dst_len);
805 return 0;
806 }
807
808 static void handle_poolop_reply(struct ceph_mon_client *monc,
809 struct ceph_msg *msg)
810 {
811 struct ceph_mon_generic_request *req;
812 struct ceph_mon_poolop_reply *reply = msg->front.iov_base;
813 u64 tid = le64_to_cpu(msg->hdr.tid);
814
815 if (msg->front.iov_len < sizeof(*reply))
816 goto bad;
817 dout("handle_poolop_reply %p tid %llu\n", msg, tid);
818
819 mutex_lock(&monc->mutex);
820 req = __lookup_generic_req(monc, tid);
821 if (req) {
822 if (req->buf_len &&
823 get_poolop_reply_buf(msg->front.iov_base + sizeof(*reply),
824 msg->front.iov_len - sizeof(*reply),
825 req->buf, req->buf_len) < 0) {
826 mutex_unlock(&monc->mutex);
827 goto bad;
828 }
829 req->result = le32_to_cpu(reply->reply_code);
830 get_generic_request(req);
831 }
832 mutex_unlock(&monc->mutex);
833 if (req) {
834 complete(&req->completion);
835 put_generic_request(req);
836 }
837 return;
838
839 bad:
840 pr_err("corrupt generic reply, tid %llu\n", tid);
841 ceph_msg_dump(msg);
842 }
843
844 /*
845 * Do a synchronous pool op.
846 */
847 static int do_poolop(struct ceph_mon_client *monc, u32 op,
848 u32 pool, u64 snapid,
849 char *buf, int len)
850 {
851 struct ceph_mon_generic_request *req;
852 struct ceph_mon_poolop *h;
853 int err;
854
855 req = kzalloc(sizeof(*req), GFP_NOFS);
856 if (!req)
857 return -ENOMEM;
858
859 kref_init(&req->kref);
860 req->buf = buf;
861 req->buf_len = len;
862 init_completion(&req->completion);
863
864 err = -ENOMEM;
865 req->request = ceph_msg_new(CEPH_MSG_POOLOP, sizeof(*h), GFP_NOFS,
866 true);
867 if (!req->request)
868 goto out;
869 req->reply = ceph_msg_new(CEPH_MSG_POOLOP_REPLY, 1024, GFP_NOFS,
870 true);
871 if (!req->reply)
872 goto out;
873
874 /* fill out request */
875 req->request->hdr.version = cpu_to_le16(2);
876 h = req->request->front.iov_base;
877 h->monhdr.have_version = 0;
878 h->monhdr.session_mon = cpu_to_le16(-1);
879 h->monhdr.session_mon_tid = 0;
880 h->fsid = monc->monmap->fsid;
881 h->pool = cpu_to_le32(pool);
882 h->op = cpu_to_le32(op);
883 h->auid = 0;
884 h->snapid = cpu_to_le64(snapid);
885 h->name_len = 0;
886
887 err = do_generic_request(monc, req);
888
889 out:
890 kref_put(&req->kref, release_generic_request);
891 return err;
892 }
893
894 int ceph_monc_create_snapid(struct ceph_mon_client *monc,
895 u32 pool, u64 *snapid)
896 {
897 return do_poolop(monc, POOL_OP_CREATE_UNMANAGED_SNAP,
898 pool, 0, (char *)snapid, sizeof(*snapid));
899
900 }
901 EXPORT_SYMBOL(ceph_monc_create_snapid);
902
903 int ceph_monc_delete_snapid(struct ceph_mon_client *monc,
904 u32 pool, u64 snapid)
905 {
906 return do_poolop(monc, POOL_OP_CREATE_UNMANAGED_SNAP,
907 pool, snapid, NULL, 0);
908
909 }
910
911 /*
912 * Resend pending generic requests.
913 */
914 static void __resend_generic_request(struct ceph_mon_client *monc)
915 {
916 struct ceph_mon_generic_request *req;
917 struct rb_node *p;
918
919 for (p = rb_first(&monc->generic_request_tree); p; p = rb_next(p)) {
920 req = rb_entry(p, struct ceph_mon_generic_request, node);
921 ceph_msg_revoke(req->request);
922 ceph_msg_revoke_incoming(req->reply);
923 ceph_con_send(&monc->con, ceph_msg_get(req->request));
924 }
925 }
926
927 /*
928 * Delayed work. If we haven't mounted yet, retry. Otherwise,
929 * renew/retry subscription as needed (in case it is timing out, or we
930 * got an ENOMEM). And keep the monitor connection alive.
931 */
932 static void delayed_work(struct work_struct *work)
933 {
934 struct ceph_mon_client *monc =
935 container_of(work, struct ceph_mon_client, delayed_work.work);
936
937 dout("monc delayed_work\n");
938 mutex_lock(&monc->mutex);
939 if (monc->hunting) {
940 __close_session(monc);
941 __open_session(monc); /* continue hunting */
942 } else {
943 ceph_con_keepalive(&monc->con);
944
945 __validate_auth(monc);
946
947 if (ceph_auth_is_authenticated(monc->auth))
948 __send_subscribe(monc);
949 }
950 __schedule_delayed(monc);
951 mutex_unlock(&monc->mutex);
952 }
953
954 /*
955 * On startup, we build a temporary monmap populated with the IPs
956 * provided by mount(2).
957 */
958 static int build_initial_monmap(struct ceph_mon_client *monc)
959 {
960 struct ceph_options *opt = monc->client->options;
961 struct ceph_entity_addr *mon_addr = opt->mon_addr;
962 int num_mon = opt->num_mon;
963 int i;
964
965 /* build initial monmap */
966 monc->monmap = kzalloc(sizeof(*monc->monmap) +
967 num_mon*sizeof(monc->monmap->mon_inst[0]),
968 GFP_KERNEL);
969 if (!monc->monmap)
970 return -ENOMEM;
971 for (i = 0; i < num_mon; i++) {
972 monc->monmap->mon_inst[i].addr = mon_addr[i];
973 monc->monmap->mon_inst[i].addr.nonce = 0;
974 monc->monmap->mon_inst[i].name.type =
975 CEPH_ENTITY_TYPE_MON;
976 monc->monmap->mon_inst[i].name.num = cpu_to_le64(i);
977 }
978 monc->monmap->num_mon = num_mon;
979 return 0;
980 }
981
982 int ceph_monc_init(struct ceph_mon_client *monc, struct ceph_client *cl)
983 {
984 int err = 0;
985
986 dout("init\n");
987 memset(monc, 0, sizeof(*monc));
988 monc->client = cl;
989 monc->monmap = NULL;
990 mutex_init(&monc->mutex);
991
992 err = build_initial_monmap(monc);
993 if (err)
994 goto out;
995
996 /* connection */
997 /* authentication */
998 monc->auth = ceph_auth_init(cl->options->name,
999 cl->options->key);
1000 if (IS_ERR(monc->auth)) {
1001 err = PTR_ERR(monc->auth);
1002 goto out_monmap;
1003 }
1004 monc->auth->want_keys =
1005 CEPH_ENTITY_TYPE_AUTH | CEPH_ENTITY_TYPE_MON |
1006 CEPH_ENTITY_TYPE_OSD | CEPH_ENTITY_TYPE_MDS;
1007
1008 /* msgs */
1009 err = -ENOMEM;
1010 monc->m_subscribe_ack = ceph_msg_new(CEPH_MSG_MON_SUBSCRIBE_ACK,
1011 sizeof(struct ceph_mon_subscribe_ack),
1012 GFP_NOFS, true);
1013 if (!monc->m_subscribe_ack)
1014 goto out_auth;
1015
1016 monc->m_subscribe = ceph_msg_new(CEPH_MSG_MON_SUBSCRIBE, 96, GFP_NOFS,
1017 true);
1018 if (!monc->m_subscribe)
1019 goto out_subscribe_ack;
1020
1021 monc->m_auth_reply = ceph_msg_new(CEPH_MSG_AUTH_REPLY, 4096, GFP_NOFS,
1022 true);
1023 if (!monc->m_auth_reply)
1024 goto out_subscribe;
1025
1026 monc->m_auth = ceph_msg_new(CEPH_MSG_AUTH, 4096, GFP_NOFS, true);
1027 monc->pending_auth = 0;
1028 if (!monc->m_auth)
1029 goto out_auth_reply;
1030
1031 ceph_con_init(&monc->con, monc, &mon_con_ops,
1032 &monc->client->msgr);
1033
1034 monc->cur_mon = -1;
1035 monc->hunting = true;
1036 monc->sub_renew_after = jiffies;
1037 monc->sub_sent = 0;
1038
1039 INIT_DELAYED_WORK(&monc->delayed_work, delayed_work);
1040 monc->generic_request_tree = RB_ROOT;
1041 monc->num_generic_requests = 0;
1042 monc->last_tid = 0;
1043
1044 monc->have_mdsmap = 0;
1045 monc->have_osdmap = 0;
1046 monc->want_next_osdmap = 1;
1047 return 0;
1048
1049 out_auth_reply:
1050 ceph_msg_put(monc->m_auth_reply);
1051 out_subscribe:
1052 ceph_msg_put(monc->m_subscribe);
1053 out_subscribe_ack:
1054 ceph_msg_put(monc->m_subscribe_ack);
1055 out_auth:
1056 ceph_auth_destroy(monc->auth);
1057 out_monmap:
1058 kfree(monc->monmap);
1059 out:
1060 return err;
1061 }
1062 EXPORT_SYMBOL(ceph_monc_init);
1063
1064 void ceph_monc_stop(struct ceph_mon_client *monc)
1065 {
1066 dout("stop\n");
1067 cancel_delayed_work_sync(&monc->delayed_work);
1068
1069 mutex_lock(&monc->mutex);
1070 __close_session(monc);
1071
1072 mutex_unlock(&monc->mutex);
1073
1074 /*
1075 * flush msgr queue before we destroy ourselves to ensure that:
1076 * - any work that references our embedded con is finished.
1077 * - any osd_client or other work that may reference an authorizer
1078 * finishes before we shut down the auth subsystem.
1079 */
1080 ceph_msgr_flush();
1081
1082 ceph_auth_destroy(monc->auth);
1083
1084 ceph_msg_put(monc->m_auth);
1085 ceph_msg_put(monc->m_auth_reply);
1086 ceph_msg_put(monc->m_subscribe);
1087 ceph_msg_put(monc->m_subscribe_ack);
1088
1089 kfree(monc->monmap);
1090 }
1091 EXPORT_SYMBOL(ceph_monc_stop);
1092
1093 static void handle_auth_reply(struct ceph_mon_client *monc,
1094 struct ceph_msg *msg)
1095 {
1096 int ret;
1097 int was_auth = 0;
1098 int had_debugfs_info, init_debugfs = 0;
1099
1100 mutex_lock(&monc->mutex);
1101 had_debugfs_info = have_debugfs_info(monc);
1102 was_auth = ceph_auth_is_authenticated(monc->auth);
1103 monc->pending_auth = 0;
1104 ret = ceph_handle_auth_reply(monc->auth, msg->front.iov_base,
1105 msg->front.iov_len,
1106 monc->m_auth->front.iov_base,
1107 monc->m_auth->front_alloc_len);
1108 if (ret < 0) {
1109 monc->client->auth_err = ret;
1110 wake_up_all(&monc->client->auth_wq);
1111 } else if (ret > 0) {
1112 __send_prepared_auth_request(monc, ret);
1113 } else if (!was_auth && ceph_auth_is_authenticated(monc->auth)) {
1114 dout("authenticated, starting session\n");
1115
1116 monc->client->msgr.inst.name.type = CEPH_ENTITY_TYPE_CLIENT;
1117 monc->client->msgr.inst.name.num =
1118 cpu_to_le64(monc->auth->global_id);
1119
1120 __send_subscribe(monc);
1121 __resend_generic_request(monc);
1122 }
1123
1124 if (!had_debugfs_info && have_debugfs_info(monc)) {
1125 pr_info("client%lld fsid %pU\n",
1126 ceph_client_id(monc->client),
1127 &monc->client->fsid);
1128 init_debugfs = 1;
1129 }
1130 mutex_unlock(&monc->mutex);
1131
1132 if (init_debugfs) {
1133 /*
1134 * do debugfs initialization without mutex to avoid
1135 * creating a locking dependency
1136 */
1137 ceph_debugfs_client_init(monc->client);
1138 }
1139 }
1140
1141 static int __validate_auth(struct ceph_mon_client *monc)
1142 {
1143 int ret;
1144
1145 if (monc->pending_auth)
1146 return 0;
1147
1148 ret = ceph_build_auth(monc->auth, monc->m_auth->front.iov_base,
1149 monc->m_auth->front_alloc_len);
1150 if (ret <= 0)
1151 return ret; /* either an error, or no need to authenticate */
1152 __send_prepared_auth_request(monc, ret);
1153 return 0;
1154 }
1155
1156 int ceph_monc_validate_auth(struct ceph_mon_client *monc)
1157 {
1158 int ret;
1159
1160 mutex_lock(&monc->mutex);
1161 ret = __validate_auth(monc);
1162 mutex_unlock(&monc->mutex);
1163 return ret;
1164 }
1165 EXPORT_SYMBOL(ceph_monc_validate_auth);
1166
1167 /*
1168 * handle incoming message
1169 */
1170 static void dispatch(struct ceph_connection *con, struct ceph_msg *msg)
1171 {
1172 struct ceph_mon_client *monc = con->private;
1173 int type = le16_to_cpu(msg->hdr.type);
1174
1175 if (!monc)
1176 return;
1177
1178 switch (type) {
1179 case CEPH_MSG_AUTH_REPLY:
1180 handle_auth_reply(monc, msg);
1181 break;
1182
1183 case CEPH_MSG_MON_SUBSCRIBE_ACK:
1184 handle_subscribe_ack(monc, msg);
1185 break;
1186
1187 case CEPH_MSG_STATFS_REPLY:
1188 handle_statfs_reply(monc, msg);
1189 break;
1190
1191 case CEPH_MSG_MON_GET_VERSION_REPLY:
1192 handle_get_version_reply(monc, msg);
1193 break;
1194
1195 case CEPH_MSG_POOLOP_REPLY:
1196 handle_poolop_reply(monc, msg);
1197 break;
1198
1199 case CEPH_MSG_MON_MAP:
1200 ceph_monc_handle_map(monc, msg);
1201 break;
1202
1203 case CEPH_MSG_OSD_MAP:
1204 ceph_osdc_handle_map(&monc->client->osdc, msg);
1205 break;
1206
1207 default:
1208 /* can the chained handler handle it? */
1209 if (monc->client->extra_mon_dispatch &&
1210 monc->client->extra_mon_dispatch(monc->client, msg) == 0)
1211 break;
1212
1213 pr_err("received unknown message type %d %s\n", type,
1214 ceph_msg_type_name(type));
1215 }
1216 ceph_msg_put(msg);
1217 }
1218
1219 /*
1220 * Allocate memory for incoming message
1221 */
1222 static struct ceph_msg *mon_alloc_msg(struct ceph_connection *con,
1223 struct ceph_msg_header *hdr,
1224 int *skip)
1225 {
1226 struct ceph_mon_client *monc = con->private;
1227 int type = le16_to_cpu(hdr->type);
1228 int front_len = le32_to_cpu(hdr->front_len);
1229 struct ceph_msg *m = NULL;
1230
1231 *skip = 0;
1232
1233 switch (type) {
1234 case CEPH_MSG_MON_SUBSCRIBE_ACK:
1235 m = ceph_msg_get(monc->m_subscribe_ack);
1236 break;
1237 case CEPH_MSG_POOLOP_REPLY:
1238 case CEPH_MSG_STATFS_REPLY:
1239 return get_generic_reply(con, hdr, skip);
1240 case CEPH_MSG_AUTH_REPLY:
1241 m = ceph_msg_get(monc->m_auth_reply);
1242 break;
1243 case CEPH_MSG_MON_GET_VERSION_REPLY:
1244 if (le64_to_cpu(hdr->tid) != 0)
1245 return get_generic_reply(con, hdr, skip);
1246
1247 /*
1248 * Older OSDs don't set reply tid even if the orignal
1249 * request had a non-zero tid. Workaround this weirdness
1250 * by falling through to the allocate case.
1251 */
1252 case CEPH_MSG_MON_MAP:
1253 case CEPH_MSG_MDS_MAP:
1254 case CEPH_MSG_OSD_MAP:
1255 m = ceph_msg_new(type, front_len, GFP_NOFS, false);
1256 if (!m)
1257 return NULL; /* ENOMEM--return skip == 0 */
1258 break;
1259 }
1260
1261 if (!m) {
1262 pr_info("alloc_msg unknown type %d\n", type);
1263 *skip = 1;
1264 }
1265 return m;
1266 }
1267
1268 /*
1269 * If the monitor connection resets, pick a new monitor and resubmit
1270 * any pending requests.
1271 */
1272 static void mon_fault(struct ceph_connection *con)
1273 {
1274 struct ceph_mon_client *monc = con->private;
1275
1276 if (!monc)
1277 return;
1278
1279 dout("mon_fault\n");
1280 mutex_lock(&monc->mutex);
1281 if (!con->private)
1282 goto out;
1283
1284 if (!monc->hunting)
1285 pr_info("mon%d %s session lost, "
1286 "hunting for new mon\n", monc->cur_mon,
1287 ceph_pr_addr(&monc->con.peer_addr.in_addr));
1288
1289 __close_session(monc);
1290 if (!monc->hunting) {
1291 /* start hunting */
1292 monc->hunting = true;
1293 __open_session(monc);
1294 } else {
1295 /* already hunting, let's wait a bit */
1296 __schedule_delayed(monc);
1297 }
1298 out:
1299 mutex_unlock(&monc->mutex);
1300 }
1301
1302 /*
1303 * We can ignore refcounting on the connection struct, as all references
1304 * will come from the messenger workqueue, which is drained prior to
1305 * mon_client destruction.
1306 */
1307 static struct ceph_connection *con_get(struct ceph_connection *con)
1308 {
1309 return con;
1310 }
1311
1312 static void con_put(struct ceph_connection *con)
1313 {
1314 }
1315
1316 static const struct ceph_connection_operations mon_con_ops = {
1317 .get = con_get,
1318 .put = con_put,
1319 .dispatch = dispatch,
1320 .fault = mon_fault,
1321 .alloc_msg = mon_alloc_msg,
1322 };
1323
1324
1325
1326
1327
1328 /* LDV_COMMENT_BEGIN_MAIN */
1329 #ifdef LDV_MAIN5_sequence_infinite_withcheck_stateful
1330
1331 /*###########################################################################*/
1332
1333 /*############## Driver Environment Generator 0.2 output ####################*/
1334
1335 /*###########################################################################*/
1336
1337
1338
1339 /* LDV_COMMENT_FUNCTION_DECLARE_LDV Special function for LDV verifier. Test if all kernel resources are correctly released by driver before driver will be unloaded. */
1340 void ldv_check_final_state(void);
1341
1342 /* LDV_COMMENT_FUNCTION_DECLARE_LDV Special function for LDV verifier. Test correct return result. */
1343 void ldv_check_return_value(int res);
1344
1345 /* LDV_COMMENT_FUNCTION_DECLARE_LDV Special function for LDV verifier. Test correct return result of probe() function. */
1346 void ldv_check_return_value_probe(int res);
1347
1348 /* LDV_COMMENT_FUNCTION_DECLARE_LDV Special function for LDV verifier. Initializes the model. */
1349 void ldv_initialize(void);
1350
1351 /* LDV_COMMENT_FUNCTION_DECLARE_LDV Special function for LDV verifier. Reinitializes the model between distinct model function calls. */
1352 void ldv_handler_precall(void);
1353
1354 /* LDV_COMMENT_FUNCTION_DECLARE_LDV Special function for LDV verifier. Returns arbitrary interger value. */
1355 int nondet_int(void);
1356
1357 /* LDV_COMMENT_VAR_DECLARE_LDV Special variable for LDV verifier. */
1358 int LDV_IN_INTERRUPT;
1359
1360 /* LDV_COMMENT_FUNCTION_MAIN Main function for LDV verifier. */
1361 void ldv_main5_sequence_infinite_withcheck_stateful(void) {
1362
1363
1364
1365 /* LDV_COMMENT_BEGIN_VARIABLE_DECLARATION_PART */
1366 /*============================= VARIABLE DECLARATION PART =============================*/
1367 /** STRUCT: struct type: ceph_connection_operations, struct name: mon_con_ops **/
1368 /* content: static struct ceph_connection *con_get(struct ceph_connection *con)*/
1369 /* LDV_COMMENT_END_PREP */
1370 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "con_get" */
1371 struct ceph_connection * var_group1;
1372 /* content: static void con_put(struct ceph_connection *con)*/
1373 /* LDV_COMMENT_END_PREP */
1374 /* content: static void dispatch(struct ceph_connection *con, struct ceph_msg *msg)*/
1375 /* LDV_COMMENT_END_PREP */
1376 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "dispatch" */
1377 struct ceph_msg * var_group2;
1378 /* content: static void mon_fault(struct ceph_connection *con)*/
1379 /* LDV_COMMENT_END_PREP */
1380 /* content: static struct ceph_msg *mon_alloc_msg(struct ceph_connection *con, struct ceph_msg_header *hdr, int *skip)*/
1381 /* LDV_COMMENT_END_PREP */
1382 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "mon_alloc_msg" */
1383 struct ceph_msg_header * var_group3;
1384 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "mon_alloc_msg" */
1385 int * var_mon_alloc_msg_42_p2;
1386
1387
1388
1389
1390 /* LDV_COMMENT_END_VARIABLE_DECLARATION_PART */
1391 /* LDV_COMMENT_BEGIN_VARIABLE_INITIALIZING_PART */
1392 /*============================= VARIABLE INITIALIZING PART =============================*/
1393 LDV_IN_INTERRUPT=1;
1394
1395
1396
1397
1398 /* LDV_COMMENT_END_VARIABLE_INITIALIZING_PART */
1399 /* LDV_COMMENT_BEGIN_FUNCTION_CALL_SECTION */
1400 /*============================= FUNCTION CALL SECTION =============================*/
1401 /* LDV_COMMENT_FUNCTION_CALL Initialize LDV model. */
1402 ldv_initialize();
1403
1404
1405
1406 while( nondet_int()
1407 ) {
1408
1409 switch(nondet_int()) {
1410
1411 case 0: {
1412
1413 /** STRUCT: struct type: ceph_connection_operations, struct name: mon_con_ops **/
1414
1415
1416 /* content: static struct ceph_connection *con_get(struct ceph_connection *con)*/
1417 /* LDV_COMMENT_END_PREP */
1418 /* LDV_COMMENT_FUNCTION_CALL Function from field "get" from driver structure with callbacks "mon_con_ops" */
1419 ldv_handler_precall();
1420 con_get( var_group1);
1421
1422
1423
1424
1425 }
1426
1427 break;
1428 case 1: {
1429
1430 /** STRUCT: struct type: ceph_connection_operations, struct name: mon_con_ops **/
1431
1432
1433 /* content: static void con_put(struct ceph_connection *con)*/
1434 /* LDV_COMMENT_END_PREP */
1435 /* LDV_COMMENT_FUNCTION_CALL Function from field "put" from driver structure with callbacks "mon_con_ops" */
1436 ldv_handler_precall();
1437 con_put( var_group1);
1438
1439
1440
1441
1442 }
1443
1444 break;
1445 case 2: {
1446
1447 /** STRUCT: struct type: ceph_connection_operations, struct name: mon_con_ops **/
1448
1449
1450 /* content: static void dispatch(struct ceph_connection *con, struct ceph_msg *msg)*/
1451 /* LDV_COMMENT_END_PREP */
1452 /* LDV_COMMENT_FUNCTION_CALL Function from field "dispatch" from driver structure with callbacks "mon_con_ops" */
1453 ldv_handler_precall();
1454 dispatch( var_group1, var_group2);
1455
1456
1457
1458
1459 }
1460
1461 break;
1462 case 3: {
1463
1464 /** STRUCT: struct type: ceph_connection_operations, struct name: mon_con_ops **/
1465
1466
1467 /* content: static void mon_fault(struct ceph_connection *con)*/
1468 /* LDV_COMMENT_END_PREP */
1469 /* LDV_COMMENT_FUNCTION_CALL Function from field "fault" from driver structure with callbacks "mon_con_ops" */
1470 ldv_handler_precall();
1471 mon_fault( var_group1);
1472
1473
1474
1475
1476 }
1477
1478 break;
1479 case 4: {
1480
1481 /** STRUCT: struct type: ceph_connection_operations, struct name: mon_con_ops **/
1482
1483
1484 /* content: static struct ceph_msg *mon_alloc_msg(struct ceph_connection *con, struct ceph_msg_header *hdr, int *skip)*/
1485 /* LDV_COMMENT_END_PREP */
1486 /* LDV_COMMENT_FUNCTION_CALL Function from field "alloc_msg" from driver structure with callbacks "mon_con_ops" */
1487 ldv_handler_precall();
1488 mon_alloc_msg( var_group1, var_group3, var_mon_alloc_msg_42_p2);
1489
1490
1491
1492
1493 }
1494
1495 break;
1496 default: break;
1497
1498 }
1499
1500 }
1501
1502 ldv_module_exit:
1503
1504 /* LDV_COMMENT_FUNCTION_CALL Checks that all resources and locks are correctly released before the driver will be unloaded. */
1505 ldv_final: ldv_check_final_state();
1506
1507 /* LDV_COMMENT_END_FUNCTION_CALL_SECTION */
1508 return;
1509
1510 }
1511 #endif
1512
1513 /* LDV_COMMENT_END_MAIN */ 1
2 #include <linux/kernel.h>
3 #include <linux/mutex.h>
4
5 extern int mutex_lock_interruptible(struct mutex *lock);
6 extern int mutex_lock_killable(struct mutex *lock);
7 extern void mutex_lock(struct mutex *lock);
8 extern int ldv_mutex_lock_interruptible_crush_scratch_mutex_of_ceph_osdmap(struct mutex *lock);
9 extern int ldv_mutex_lock_killable_crush_scratch_mutex_of_ceph_osdmap(struct mutex *lock);
10 extern void ldv_mutex_lock_nested_crush_scratch_mutex_of_ceph_osdmap(struct mutex *lock, unsigned int subclass);
11 extern void ldv_mutex_lock_crush_scratch_mutex_of_ceph_osdmap(struct mutex *lock);
12 extern int ldv_mutex_trylock_crush_scratch_mutex_of_ceph_osdmap(struct mutex *lock);
13 extern int ldv_atomic_dec_and_mutex_lock_crush_scratch_mutex_of_ceph_osdmap(atomic_t *cnt, struct mutex *lock);
14 extern int ldv_mutex_is_locked_crush_scratch_mutex_of_ceph_osdmap(struct mutex *lock);
15 extern void ldv_mutex_unlock_crush_scratch_mutex_of_ceph_osdmap(struct mutex *lock);
16 extern int ldv_mutex_lock_interruptible_i_mutex_of_inode(struct mutex *lock);
17 extern int ldv_mutex_lock_killable_i_mutex_of_inode(struct mutex *lock);
18 extern void ldv_mutex_lock_nested_i_mutex_of_inode(struct mutex *lock, unsigned int subclass);
19 extern void ldv_mutex_lock_i_mutex_of_inode(struct mutex *lock);
20 extern int ldv_mutex_trylock_i_mutex_of_inode(struct mutex *lock);
21 extern int ldv_atomic_dec_and_mutex_lock_i_mutex_of_inode(atomic_t *cnt, struct mutex *lock);
22 extern int ldv_mutex_is_locked_i_mutex_of_inode(struct mutex *lock);
23 extern void ldv_mutex_unlock_i_mutex_of_inode(struct mutex *lock);
24 extern int ldv_mutex_lock_interruptible_lock(struct mutex *lock);
25 extern int ldv_mutex_lock_killable_lock(struct mutex *lock);
26 extern void ldv_mutex_lock_nested_lock(struct mutex *lock, unsigned int subclass);
27 extern void ldv_mutex_lock_lock(struct mutex *lock);
28 extern int ldv_mutex_trylock_lock(struct mutex *lock);
29 extern int ldv_atomic_dec_and_mutex_lock_lock(atomic_t *cnt, struct mutex *lock);
30 extern int ldv_mutex_is_locked_lock(struct mutex *lock);
31 extern void ldv_mutex_unlock_lock(struct mutex *lock);
32 extern int ldv_mutex_lock_interruptible_mount_mutex_of_ceph_client(struct mutex *lock);
33 extern int ldv_mutex_lock_killable_mount_mutex_of_ceph_client(struct mutex *lock);
34 extern void ldv_mutex_lock_nested_mount_mutex_of_ceph_client(struct mutex *lock, unsigned int subclass);
35 extern void ldv_mutex_lock_mount_mutex_of_ceph_client(struct mutex *lock);
36 extern int ldv_mutex_trylock_mount_mutex_of_ceph_client(struct mutex *lock);
37 extern int ldv_atomic_dec_and_mutex_lock_mount_mutex_of_ceph_client(atomic_t *cnt, struct mutex *lock);
38 extern int ldv_mutex_is_locked_mount_mutex_of_ceph_client(struct mutex *lock);
39 extern void ldv_mutex_unlock_mount_mutex_of_ceph_client(struct mutex *lock);
40 extern int ldv_mutex_lock_interruptible_mutex_of_ceph_auth_client(struct mutex *lock);
41 extern int ldv_mutex_lock_killable_mutex_of_ceph_auth_client(struct mutex *lock);
42 extern void ldv_mutex_lock_nested_mutex_of_ceph_auth_client(struct mutex *lock, unsigned int subclass);
43 extern void ldv_mutex_lock_mutex_of_ceph_auth_client(struct mutex *lock);
44 extern int ldv_mutex_trylock_mutex_of_ceph_auth_client(struct mutex *lock);
45 extern int ldv_atomic_dec_and_mutex_lock_mutex_of_ceph_auth_client(atomic_t *cnt, struct mutex *lock);
46 extern int ldv_mutex_is_locked_mutex_of_ceph_auth_client(struct mutex *lock);
47 extern void ldv_mutex_unlock_mutex_of_ceph_auth_client(struct mutex *lock);
48 extern int ldv_mutex_lock_interruptible_mutex_of_ceph_connection(struct mutex *lock);
49 extern int ldv_mutex_lock_killable_mutex_of_ceph_connection(struct mutex *lock);
50 extern void ldv_mutex_lock_nested_mutex_of_ceph_connection(struct mutex *lock, unsigned int subclass);
51 extern void ldv_mutex_lock_mutex_of_ceph_connection(struct mutex *lock);
52 extern int ldv_mutex_trylock_mutex_of_ceph_connection(struct mutex *lock);
53 extern int ldv_atomic_dec_and_mutex_lock_mutex_of_ceph_connection(atomic_t *cnt, struct mutex *lock);
54 extern int ldv_mutex_is_locked_mutex_of_ceph_connection(struct mutex *lock);
55 extern void ldv_mutex_unlock_mutex_of_ceph_connection(struct mutex *lock);
56 extern int ldv_mutex_lock_interruptible_mutex_of_ceph_mon_client(struct mutex *lock);
57 extern int ldv_mutex_lock_killable_mutex_of_ceph_mon_client(struct mutex *lock);
58 extern void ldv_mutex_lock_nested_mutex_of_ceph_mon_client(struct mutex *lock, unsigned int subclass);
59 extern void ldv_mutex_lock_mutex_of_ceph_mon_client(struct mutex *lock);
60 extern int ldv_mutex_trylock_mutex_of_ceph_mon_client(struct mutex *lock);
61 extern int ldv_atomic_dec_and_mutex_lock_mutex_of_ceph_mon_client(atomic_t *cnt, struct mutex *lock);
62 extern int ldv_mutex_is_locked_mutex_of_ceph_mon_client(struct mutex *lock);
63 extern void ldv_mutex_unlock_mutex_of_ceph_mon_client(struct mutex *lock);
64 extern int ldv_mutex_lock_interruptible_mutex_of_device(struct mutex *lock);
65 extern int ldv_mutex_lock_killable_mutex_of_device(struct mutex *lock);
66 extern void ldv_mutex_lock_nested_mutex_of_device(struct mutex *lock, unsigned int subclass);
67 extern void ldv_mutex_lock_mutex_of_device(struct mutex *lock);
68 extern int ldv_mutex_trylock_mutex_of_device(struct mutex *lock);
69 extern int ldv_atomic_dec_and_mutex_lock_mutex_of_device(atomic_t *cnt, struct mutex *lock);
70 extern int ldv_mutex_is_locked_mutex_of_device(struct mutex *lock);
71 extern void ldv_mutex_unlock_mutex_of_device(struct mutex *lock);
72 extern int ldv_mutex_lock_interruptible_request_mutex_of_ceph_osd_client(struct mutex *lock);
73 extern int ldv_mutex_lock_killable_request_mutex_of_ceph_osd_client(struct mutex *lock);
74 extern void ldv_mutex_lock_nested_request_mutex_of_ceph_osd_client(struct mutex *lock, unsigned int subclass);
75 extern void ldv_mutex_lock_request_mutex_of_ceph_osd_client(struct mutex *lock);
76 extern int ldv_mutex_trylock_request_mutex_of_ceph_osd_client(struct mutex *lock);
77 extern int ldv_atomic_dec_and_mutex_lock_request_mutex_of_ceph_osd_client(atomic_t *cnt, struct mutex *lock);
78 extern int ldv_mutex_is_locked_request_mutex_of_ceph_osd_client(struct mutex *lock);
79 extern void ldv_mutex_unlock_request_mutex_of_ceph_osd_client(struct mutex *lock);
80
81
82 #include <linux/ceph/ceph_debug.h>
83
84 #include <linux/module.h>
85 #include <linux/err.h>
86 #include <linux/highmem.h>
87 #include <linux/mm.h>
88 #include <linux/pagemap.h>
89 #include <linux/slab.h>
90 #include <linux/uaccess.h>
91 #ifdef CONFIG_BLOCK
92 #include <linux/bio.h>
93 #endif
94
95 #include <linux/ceph/libceph.h>
96 #include <linux/ceph/osd_client.h>
97 #include <linux/ceph/messenger.h>
98 #include <linux/ceph/decode.h>
99 #include <linux/ceph/auth.h>
100 #include <linux/ceph/pagelist.h>
101
102 #define OSD_OP_FRONT_LEN 4096
103 #define OSD_OPREPLY_FRONT_LEN 512
104
105 static struct kmem_cache *ceph_osd_request_cache;
106
107 static const struct ceph_connection_operations osd_con_ops;
108
109 static void __send_queued(struct ceph_osd_client *osdc);
110 static int __reset_osd(struct ceph_osd_client *osdc, struct ceph_osd *osd);
111 static void __register_request(struct ceph_osd_client *osdc,
112 struct ceph_osd_request *req);
113 static void __unregister_linger_request(struct ceph_osd_client *osdc,
114 struct ceph_osd_request *req);
115 static void __send_request(struct ceph_osd_client *osdc,
116 struct ceph_osd_request *req);
117
118 /*
119 * Implement client access to distributed object storage cluster.
120 *
121 * All data objects are stored within a cluster/cloud of OSDs, or
122 * "object storage devices." (Note that Ceph OSDs have _nothing_ to
123 * do with the T10 OSD extensions to SCSI.) Ceph OSDs are simply
124 * remote daemons serving up and coordinating consistent and safe
125 * access to storage.
126 *
127 * Cluster membership and the mapping of data objects onto storage devices
128 * are described by the osd map.
129 *
130 * We keep track of pending OSD requests (read, write), resubmit
131 * requests to different OSDs when the cluster topology/data layout
132 * change, or retry the affected requests when the communications
133 * channel with an OSD is reset.
134 */
135
136 /*
137 * calculate the mapping of a file extent onto an object, and fill out the
138 * request accordingly. shorten extent as necessary if it crosses an
139 * object boundary.
140 *
141 * fill osd op in request message.
142 */
143 static int calc_layout(struct ceph_file_layout *layout, u64 off, u64 *plen,
144 u64 *objnum, u64 *objoff, u64 *objlen)
145 {
146 u64 orig_len = *plen;
147 int r;
148
149 /* object extent? */
150 r = ceph_calc_file_object_mapping(layout, off, orig_len, objnum,
151 objoff, objlen);
152 if (r < 0)
153 return r;
154 if (*objlen < orig_len) {
155 *plen = *objlen;
156 dout(" skipping last %llu, final file extent %llu~%llu\n",
157 orig_len - *plen, off, *plen);
158 }
159
160 dout("calc_layout objnum=%llx %llu~%llu\n", *objnum, *objoff, *objlen);
161
162 return 0;
163 }
164
165 static void ceph_osd_data_init(struct ceph_osd_data *osd_data)
166 {
167 memset(osd_data, 0, sizeof (*osd_data));
168 osd_data->type = CEPH_OSD_DATA_TYPE_NONE;
169 }
170
171 static void ceph_osd_data_pages_init(struct ceph_osd_data *osd_data,
172 struct page **pages, u64 length, u32 alignment,
173 bool pages_from_pool, bool own_pages)
174 {
175 osd_data->type = CEPH_OSD_DATA_TYPE_PAGES;
176 osd_data->pages = pages;
177 osd_data->length = length;
178 osd_data->alignment = alignment;
179 osd_data->pages_from_pool = pages_from_pool;
180 osd_data->own_pages = own_pages;
181 }
182
183 static void ceph_osd_data_pagelist_init(struct ceph_osd_data *osd_data,
184 struct ceph_pagelist *pagelist)
185 {
186 osd_data->type = CEPH_OSD_DATA_TYPE_PAGELIST;
187 osd_data->pagelist = pagelist;
188 }
189
190 #ifdef CONFIG_BLOCK
191 static void ceph_osd_data_bio_init(struct ceph_osd_data *osd_data,
192 struct bio *bio, size_t bio_length)
193 {
194 osd_data->type = CEPH_OSD_DATA_TYPE_BIO;
195 osd_data->bio = bio;
196 osd_data->bio_length = bio_length;
197 }
198 #endif /* CONFIG_BLOCK */
199
200 #define osd_req_op_data(oreq, whch, typ, fld) \
201 ({ \
202 BUG_ON(whch >= (oreq)->r_num_ops); \
203 &(oreq)->r_ops[whch].typ.fld; \
204 })
205
206 static struct ceph_osd_data *
207 osd_req_op_raw_data_in(struct ceph_osd_request *osd_req, unsigned int which)
208 {
209 BUG_ON(which >= osd_req->r_num_ops);
210
211 return &osd_req->r_ops[which].raw_data_in;
212 }
213
214 struct ceph_osd_data *
215 osd_req_op_extent_osd_data(struct ceph_osd_request *osd_req,
216 unsigned int which)
217 {
218 return osd_req_op_data(osd_req, which, extent, osd_data);
219 }
220 EXPORT_SYMBOL(osd_req_op_extent_osd_data);
221
222 struct ceph_osd_data *
223 osd_req_op_cls_response_data(struct ceph_osd_request *osd_req,
224 unsigned int which)
225 {
226 return osd_req_op_data(osd_req, which, cls, response_data);
227 }
228 EXPORT_SYMBOL(osd_req_op_cls_response_data); /* ??? */
229
230 void osd_req_op_raw_data_in_pages(struct ceph_osd_request *osd_req,
231 unsigned int which, struct page **pages,
232 u64 length, u32 alignment,
233 bool pages_from_pool, bool own_pages)
234 {
235 struct ceph_osd_data *osd_data;
236
237 osd_data = osd_req_op_raw_data_in(osd_req, which);
238 ceph_osd_data_pages_init(osd_data, pages, length, alignment,
239 pages_from_pool, own_pages);
240 }
241 EXPORT_SYMBOL(osd_req_op_raw_data_in_pages);
242
243 void osd_req_op_extent_osd_data_pages(struct ceph_osd_request *osd_req,
244 unsigned int which, struct page **pages,
245 u64 length, u32 alignment,
246 bool pages_from_pool, bool own_pages)
247 {
248 struct ceph_osd_data *osd_data;
249
250 osd_data = osd_req_op_data(osd_req, which, extent, osd_data);
251 ceph_osd_data_pages_init(osd_data, pages, length, alignment,
252 pages_from_pool, own_pages);
253 }
254 EXPORT_SYMBOL(osd_req_op_extent_osd_data_pages);
255
256 void osd_req_op_extent_osd_data_pagelist(struct ceph_osd_request *osd_req,
257 unsigned int which, struct ceph_pagelist *pagelist)
258 {
259 struct ceph_osd_data *osd_data;
260
261 osd_data = osd_req_op_data(osd_req, which, extent, osd_data);
262 ceph_osd_data_pagelist_init(osd_data, pagelist);
263 }
264 EXPORT_SYMBOL(osd_req_op_extent_osd_data_pagelist);
265
266 #ifdef CONFIG_BLOCK
267 void osd_req_op_extent_osd_data_bio(struct ceph_osd_request *osd_req,
268 unsigned int which, struct bio *bio, size_t bio_length)
269 {
270 struct ceph_osd_data *osd_data;
271
272 osd_data = osd_req_op_data(osd_req, which, extent, osd_data);
273 ceph_osd_data_bio_init(osd_data, bio, bio_length);
274 }
275 EXPORT_SYMBOL(osd_req_op_extent_osd_data_bio);
276 #endif /* CONFIG_BLOCK */
277
278 static void osd_req_op_cls_request_info_pagelist(
279 struct ceph_osd_request *osd_req,
280 unsigned int which, struct ceph_pagelist *pagelist)
281 {
282 struct ceph_osd_data *osd_data;
283
284 osd_data = osd_req_op_data(osd_req, which, cls, request_info);
285 ceph_osd_data_pagelist_init(osd_data, pagelist);
286 }
287
288 void osd_req_op_cls_request_data_pagelist(
289 struct ceph_osd_request *osd_req,
290 unsigned int which, struct ceph_pagelist *pagelist)
291 {
292 struct ceph_osd_data *osd_data;
293
294 osd_data = osd_req_op_data(osd_req, which, cls, request_data);
295 ceph_osd_data_pagelist_init(osd_data, pagelist);
296 }
297 EXPORT_SYMBOL(osd_req_op_cls_request_data_pagelist);
298
299 void osd_req_op_cls_request_data_pages(struct ceph_osd_request *osd_req,
300 unsigned int which, struct page **pages, u64 length,
301 u32 alignment, bool pages_from_pool, bool own_pages)
302 {
303 struct ceph_osd_data *osd_data;
304
305 osd_data = osd_req_op_data(osd_req, which, cls, request_data);
306 ceph_osd_data_pages_init(osd_data, pages, length, alignment,
307 pages_from_pool, own_pages);
308 }
309 EXPORT_SYMBOL(osd_req_op_cls_request_data_pages);
310
311 void osd_req_op_cls_response_data_pages(struct ceph_osd_request *osd_req,
312 unsigned int which, struct page **pages, u64 length,
313 u32 alignment, bool pages_from_pool, bool own_pages)
314 {
315 struct ceph_osd_data *osd_data;
316
317 osd_data = osd_req_op_data(osd_req, which, cls, response_data);
318 ceph_osd_data_pages_init(osd_data, pages, length, alignment,
319 pages_from_pool, own_pages);
320 }
321 EXPORT_SYMBOL(osd_req_op_cls_response_data_pages);
322
323 static u64 ceph_osd_data_length(struct ceph_osd_data *osd_data)
324 {
325 switch (osd_data->type) {
326 case CEPH_OSD_DATA_TYPE_NONE:
327 return 0;
328 case CEPH_OSD_DATA_TYPE_PAGES:
329 return osd_data->length;
330 case CEPH_OSD_DATA_TYPE_PAGELIST:
331 return (u64)osd_data->pagelist->length;
332 #ifdef CONFIG_BLOCK
333 case CEPH_OSD_DATA_TYPE_BIO:
334 return (u64)osd_data->bio_length;
335 #endif /* CONFIG_BLOCK */
336 default:
337 WARN(true, "unrecognized data type %d\n", (int)osd_data->type);
338 return 0;
339 }
340 }
341
342 static void ceph_osd_data_release(struct ceph_osd_data *osd_data)
343 {
344 if (osd_data->type == CEPH_OSD_DATA_TYPE_PAGES && osd_data->own_pages) {
345 int num_pages;
346
347 num_pages = calc_pages_for((u64)osd_data->alignment,
348 (u64)osd_data->length);
349 ceph_release_page_vector(osd_data->pages, num_pages);
350 }
351 ceph_osd_data_init(osd_data);
352 }
353
354 static void osd_req_op_data_release(struct ceph_osd_request *osd_req,
355 unsigned int which)
356 {
357 struct ceph_osd_req_op *op;
358
359 BUG_ON(which >= osd_req->r_num_ops);
360 op = &osd_req->r_ops[which];
361
362 switch (op->op) {
363 case CEPH_OSD_OP_READ:
364 case CEPH_OSD_OP_WRITE:
365 ceph_osd_data_release(&op->extent.osd_data);
366 break;
367 case CEPH_OSD_OP_CALL:
368 ceph_osd_data_release(&op->cls.request_info);
369 ceph_osd_data_release(&op->cls.request_data);
370 ceph_osd_data_release(&op->cls.response_data);
371 break;
372 default:
373 break;
374 }
375 }
376
377 /*
378 * requests
379 */
380 static void ceph_osdc_release_request(struct kref *kref)
381 {
382 struct ceph_osd_request *req = container_of(kref,
383 struct ceph_osd_request, r_kref);
384 unsigned int which;
385
386 dout("%s %p (r_request %p r_reply %p)\n", __func__, req,
387 req->r_request, req->r_reply);
388 WARN_ON(!RB_EMPTY_NODE(&req->r_node));
389 WARN_ON(!list_empty(&req->r_req_lru_item));
390 WARN_ON(!list_empty(&req->r_osd_item));
391 WARN_ON(!list_empty(&req->r_linger_item));
392 WARN_ON(!list_empty(&req->r_linger_osd_item));
393 WARN_ON(req->r_osd);
394
395 if (req->r_request)
396 ceph_msg_put(req->r_request);
397 if (req->r_reply) {
398 ceph_msg_revoke_incoming(req->r_reply);
399 ceph_msg_put(req->r_reply);
400 }
401
402 for (which = 0; which < req->r_num_ops; which++)
403 osd_req_op_data_release(req, which);
404
405 ceph_put_snap_context(req->r_snapc);
406 if (req->r_mempool)
407 mempool_free(req, req->r_osdc->req_mempool);
408 else
409 kmem_cache_free(ceph_osd_request_cache, req);
410
411 }
412
413 void ceph_osdc_get_request(struct ceph_osd_request *req)
414 {
415 dout("%s %p (was %d)\n", __func__, req,
416 atomic_read(&req->r_kref.refcount));
417 kref_get(&req->r_kref);
418 }
419 EXPORT_SYMBOL(ceph_osdc_get_request);
420
421 void ceph_osdc_put_request(struct ceph_osd_request *req)
422 {
423 dout("%s %p (was %d)\n", __func__, req,
424 atomic_read(&req->r_kref.refcount));
425 kref_put(&req->r_kref, ceph_osdc_release_request);
426 }
427 EXPORT_SYMBOL(ceph_osdc_put_request);
428
429 struct ceph_osd_request *ceph_osdc_alloc_request(struct ceph_osd_client *osdc,
430 struct ceph_snap_context *snapc,
431 unsigned int num_ops,
432 bool use_mempool,
433 gfp_t gfp_flags)
434 {
435 struct ceph_osd_request *req;
436 struct ceph_msg *msg;
437 size_t msg_size;
438
439 BUILD_BUG_ON(CEPH_OSD_MAX_OP > U16_MAX);
440 BUG_ON(num_ops > CEPH_OSD_MAX_OP);
441
442 msg_size = 4 + 4 + 8 + 8 + 4+8;
443 msg_size += 2 + 4 + 8 + 4 + 4; /* oloc */
444 msg_size += 1 + 8 + 4 + 4; /* pg_t */
445 msg_size += 4 + CEPH_MAX_OID_NAME_LEN; /* oid */
446 msg_size += 2 + num_ops*sizeof(struct ceph_osd_op);
447 msg_size += 8; /* snapid */
448 msg_size += 8; /* snap_seq */
449 msg_size += 8 * (snapc ? snapc->num_snaps : 0); /* snaps */
450 msg_size += 4;
451
452 if (use_mempool) {
453 req = mempool_alloc(osdc->req_mempool, |