From: Mike Galbraith <efault@gmx.de>
To: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Oleg Nesterov <oleg@redhat.com>,
LKML <linux-kernel@vger.kernel.org>,
Pavel Emelyanov <xemul@parallels.com>,
Cyrill Gorcunov <gorcunov@openvz.org>,
Louis Rilling <louis.rilling@kerlabs.com>
Subject: Re: [PATCH] Re: [RFC PATCH] namespaces: fix leak on fork() failure
Date: Sat, 05 May 2012 07:56:02 +0200 [thread overview]
Message-ID: <1336197362.7346.9.camel@marge.simpson.net> (raw)
In-Reply-To: <m1fwbfd71h.fsf@fess.ebiederm.org>
On Fri, 2012-05-04 at 13:29 -0700, Eric W. Biederman wrote:
> Shrug. I have skimmed through all of that code and I don't see anything
> obvious. I guess it would take a few more data points to figure out
> where we are sleeping for a jiffy or two while we are reaping children.
GrimReaper meets SynchroZilla
vsftpd-7977 [003] .... 577.171463: sys_wait4 <-system_call_fastpath
vsftpd-7977 [003] .... 577.171463: do_wait <-sys_wait4
vsftpd-7977 [003] .... 577.171463: add_wait_queue <-do_wait
vsftpd-7977 [003] .... 577.171463: _raw_spin_lock_irqsave <-add_wait_queue
vsftpd-7977 [003] d... 577.171463: _raw_spin_unlock_irqrestore <-add_wait_queue
vsftpd-7977 [003] .... 577.171464: _raw_read_lock <-do_wait
vsftpd-7977 [003] .... 577.171464: wait_consider_task <-do_wait
vsftpd-7977 [003] .... 577.171464: wait_consider_task <-do_wait
vsftpd-7977 [003] .... 577.171464: wait_consider_task <-do_wait
vsftpd-7977 [003] .... 577.171465: __task_pid_nr_ns <-wait_consider_task
vsftpd-7977 [003] .... 577.171465: pid_nr_ns <-__task_pid_nr_ns
vsftpd-7977 [003] .... 577.171465: thread_group_times <-wait_consider_task
vsftpd-7977 [003] .... 577.171466: thread_group_cputime <-thread_group_times
vsftpd-7977 [003] .... 577.171466: task_sched_runtime <-thread_group_cputime
vsftpd-7977 [003] .... 577.171466: task_rq_lock <-task_sched_runtime
vsftpd-7977 [003] .... 577.171466: _raw_spin_lock_irqsave <-task_rq_lock
vsftpd-7977 [003] d... 577.171467: _raw_spin_lock <-task_rq_lock
vsftpd-7977 [003] d... 577.171467: _raw_spin_unlock_irqrestore <-task_sched_runtime
vsftpd-7977 [003] .... 577.171467: nsecs_to_jiffies <-thread_group_times
vsftpd-7977 [003] .... 577.171467: _raw_spin_lock_irq <-wait_consider_task
vsftpd-7977 [003] .... 577.171468: release_task <-wait_consider_task
vsftpd-7977 [003] .... 577.171468: proc_flush_task <-release_task
vsftpd-7977 [003] .... 577.171470: d_hash_and_lookup <-proc_flush_task
vsftpd-7977 [003] .... 577.171470: full_name_hash <-d_hash_and_lookup
vsftpd-7977 [003] .... 577.171470: d_lookup <-d_hash_and_lookup
vsftpd-7977 [003] .... 577.171470: __d_lookup <-d_lookup
vsftpd-7977 [003] .... 577.171471: d_hash_and_lookup <-proc_flush_task
vsftpd-7977 [003] .... 577.171471: full_name_hash <-d_hash_and_lookup
vsftpd-7977 [003] .... 577.171471: d_lookup <-d_hash_and_lookup
vsftpd-7977 [003] .... 577.171472: __d_lookup <-d_lookup
vsftpd-7977 [003] .... 577.171472: d_hash_and_lookup <-proc_flush_task
vsftpd-7977 [003] .... 577.171472: full_name_hash <-d_hash_and_lookup
vsftpd-7977 [003] .... 577.171472: d_lookup <-d_hash_and_lookup
vsftpd-7977 [003] .... 577.171473: __d_lookup <-d_lookup
vsftpd-7977 [003] .... 577.171473: d_hash_and_lookup <-proc_flush_task
vsftpd-7977 [003] .... 577.171473: full_name_hash <-d_hash_and_lookup
vsftpd-7977 [003] .... 577.171473: d_lookup <-d_hash_and_lookup
vsftpd-7977 [003] .... 577.171473: __d_lookup <-d_lookup
vsftpd-7977 [003] .... 577.171474: pid_ns_release_proc <-proc_flush_task
vsftpd-7977 [003] .... 577.171474: kern_unmount <-pid_ns_release_proc
vsftpd-7977 [003] .... 577.171474: mnt_make_shortterm <-kern_unmount
vsftpd-7977 [003] .... 577.171474: vfsmount_lock_global_lock_online <-mnt_make_shortterm
vsftpd-7977 [003] .... 577.171474: _raw_spin_lock <-vfsmount_lock_global_lock_online
vsftpd-7977 [003] .... 577.171475: vfsmount_lock_global_unlock_online <-mnt_make_shortterm
vsftpd-7977 [003] .... 577.171475: mntput <-kern_unmount
vsftpd-7977 [003] .... 577.171475: mntput_no_expire <-mntput
vsftpd-7977 [003] .... 577.171476: vfsmount_lock_local_lock <-mntput_no_expire
vsftpd-7977 [003] .... 577.171476: vfsmount_lock_global_lock_online <-mntput_no_expire
vsftpd-7977 [003] .... 577.171476: _raw_spin_lock <-vfsmount_lock_global_lock_online
vsftpd-7977 [003] .... 577.171476: mnt_get_count <-mntput_no_expire
vsftpd-7977 [003] .... 577.171477: vfsmount_lock_global_unlock_online <-mntput_no_expire
vsftpd-7977 [003] .... 577.171477: mnt_get_writers.isra.12 <-mntput_no_expire
vsftpd-7977 [003] .... 577.171477: __fsnotify_vfsmount_delete <-mntput_no_expire
vsftpd-7977 [003] .... 577.171477: fsnotify_clear_marks_by_mount <-__fsnotify_vfsmount_delete
vsftpd-7977 [003] .... 577.171478: _raw_spin_lock <-fsnotify_clear_marks_by_mount
vsftpd-7977 [003] .... 577.171478: dput <-mntput_no_expire
vsftpd-7977 [003] .... 577.171478: _raw_spin_lock <-dput
vsftpd-7977 [003] .... 577.171478: free_vfsmnt <-mntput_no_expire
vsftpd-7977 [003] .... 577.171478: kfree <-free_vfsmnt
vsftpd-7977 [003] .... 577.171479: __phys_addr <-kfree
vsftpd-7977 [003] .... 577.171479: __slab_free <-kfree
vsftpd-7977 [003] .... 577.171479: free_debug_processing <-__slab_free
vsftpd-7977 [003] d... 577.171479: check_slab <-free_debug_processing
vsftpd-7977 [003] d... 577.171479: slab_pad_check.part.42 <-check_slab
vsftpd-7977 [003] d... 577.171480: on_freelist <-free_debug_processing
vsftpd-7977 [003] d... 577.171480: check_object <-free_debug_processing
vsftpd-7977 [003] d... 577.171480: check_bytes_and_report <-check_object
vsftpd-7977 [003] d... 577.171480: check_bytes_and_report <-check_object
vsftpd-7977 [003] d... 577.171481: set_track <-free_debug_processing
vsftpd-7977 [003] d... 577.171481: dump_trace <-save_stack_trace
vsftpd-7977 [003] d... 577.171481: print_context_stack <-dump_trace
vsftpd-7977 [003] d... 577.171484: init_object <-free_debug_processing
vsftpd-7977 [003] .... 577.171485: _raw_spin_lock_irqsave <-__slab_free
vsftpd-7977 [003] d... 577.171485: _raw_spin_unlock_irqrestore <-__slab_free
vsftpd-7977 [003] .... 577.171485: mnt_free_id.isra.20 <-free_vfsmnt
vsftpd-7977 [003] .... 577.171485: _raw_spin_lock <-mnt_free_id.isra.20
vsftpd-7977 [003] .... 577.171486: free_percpu <-free_vfsmnt
vsftpd-7977 [003] .... 577.171486: _raw_spin_lock_irqsave <-free_percpu
vsftpd-7977 [003] d... 577.171486: pcpu_free_area <-free_percpu
vsftpd-7977 [003] d... 577.171487: pcpu_chunk_slot <-pcpu_free_area
vsftpd-7977 [003] d... 577.171487: pcpu_chunk_relocate <-pcpu_free_area
vsftpd-7977 [003] d... 577.171488: pcpu_chunk_slot <-pcpu_chunk_relocate
vsftpd-7977 [003] d... 577.171488: _raw_spin_unlock_irqrestore <-free_percpu
vsftpd-7977 [003] .... 577.171488: kmem_cache_free <-free_vfsmnt
vsftpd-7977 [003] .... 577.171488: __phys_addr <-kmem_cache_free
vsftpd-7977 [003] .... 577.171489: __slab_free <-kmem_cache_free
vsftpd-7977 [003] .... 577.171489: free_debug_processing <-__slab_free
vsftpd-7977 [003] d... 577.171489: check_slab <-free_debug_processing
vsftpd-7977 [003] d... 577.171489: slab_pad_check.part.42 <-check_slab
vsftpd-7977 [003] d... 577.171489: on_freelist <-free_debug_processing
vsftpd-7977 [003] d... 577.171490: check_object <-free_debug_processing
vsftpd-7977 [003] d... 577.171490: check_bytes_and_report <-check_object
vsftpd-7977 [003] d... 577.171490: check_bytes_and_report <-check_object
vsftpd-7977 [003] d... 577.171491: set_track <-free_debug_processing
vsftpd-7977 [003] d... 577.171491: dump_trace <-save_stack_trace
vsftpd-7977 [003] d... 577.171491: print_context_stack <-dump_trace
vsftpd-7977 [003] d... 577.171494: init_object <-free_debug_processing
vsftpd-7977 [003] .... 577.171495: deactivate_super <-mntput_no_expire
vsftpd-7977 [003] .... 577.171495: down_write <-deactivate_super
vsftpd-7977 [003] .... 577.171495: _cond_resched <-down_write
vsftpd-7977 [003] .... 577.171495: deactivate_locked_super <-deactivate_super
vsftpd-7977 [003] .... 577.171496: proc_kill_sb <-deactivate_locked_super
vsftpd-7977 [003] .... 577.171496: kill_anon_super <-proc_kill_sb
vsftpd-7977 [003] .... 577.171496: generic_shutdown_super <-kill_anon_super
vsftpd-7977 [003] .... 577.171496: shrink_dcache_for_umount <-generic_shutdown_super
vsftpd-7977 [003] .... 577.171496: down_read_trylock <-shrink_dcache_for_umount
vsftpd-7977 [003] .... 577.171497: shrink_dcache_for_umount_subtree <-shrink_dcache_for_umount
vsftpd-7977 [003] .... 577.171497: dentry_lru_prune <-shrink_dcache_for_umount_subtree
vsftpd-7977 [003] .... 577.171498: __d_shrink <-shrink_dcache_for_umount_subtree
vsftpd-7977 [003] .... 577.171498: iput <-shrink_dcache_for_umount_subtree
vsftpd-7977 [003] .... 577.171498: _raw_spin_lock <-_atomic_dec_and_lock
vsftpd-7977 [003] .... 577.171499: generic_delete_inode <-iput
vsftpd-7977 [003] .... 577.171499: evict <-iput
vsftpd-7977 [003] .... 577.171499: _raw_spin_lock <-evict
vsftpd-7977 [003] .... 577.171500: proc_evict_inode <-evict
vsftpd-7977 [003] .... 577.171500: truncate_inode_pages <-proc_evict_inode
vsftpd-7977 [003] .... 577.171500: truncate_inode_pages_range <-truncate_inode_pages
vsftpd-7977 [003] .... 577.171501: end_writeback <-proc_evict_inode
vsftpd-7977 [003] .... 577.171501: _cond_resched <-end_writeback
vsftpd-7977 [003] .... 577.171501: _raw_spin_lock_irq <-end_writeback
vsftpd-7977 [003] .... 577.171501: _cond_resched <-end_writeback
vsftpd-7977 [003] .... 577.171501: put_pid <-proc_evict_inode
vsftpd-7977 [003] .... 577.171502: put_pid: put_pid: NULL
vsftpd-7977 [003] .... 577.171502: pde_put <-proc_evict_inode
vsftpd-7977 [003] .... 577.171502: __remove_inode_hash <-evict
vsftpd-7977 [003] .... 577.171503: _raw_spin_lock <-__remove_inode_hash
vsftpd-7977 [003] .... 577.171503: _raw_spin_lock <-__remove_inode_hash
vsftpd-7977 [003] .... 577.171503: _raw_spin_lock <-evict
vsftpd-7977 [003] .... 577.171504: wake_up_bit <-evict
vsftpd-7977 [003] .... 577.171504: bit_waitqueue <-wake_up_bit
vsftpd-7977 [003] .... 577.171504: __phys_addr <-bit_waitqueue
vsftpd-7977 [003] .... 577.171504: __wake_up_bit <-wake_up_bit
vsftpd-7977 [003] .... 577.171504: destroy_inode <-evict
vsftpd-7977 [003] .... 577.171505: __destroy_inode <-destroy_inode
vsftpd-7977 [003] .... 577.171505: inode_has_buffers <-__destroy_inode
vsftpd-7977 [003] .... 577.171505: __fsnotify_inode_delete <-__destroy_inode
vsftpd-7977 [003] .... 577.171505: fsnotify_clear_marks_by_inode <-__fsnotify_inode_delete
vsftpd-7977 [003] .... 577.171505: _raw_spin_lock <-fsnotify_clear_marks_by_inode
vsftpd-7977 [003] .... 577.171506: proc_destroy_inode <-destroy_inode
vsftpd-7977 [003] .... 577.171506: call_rcu_sched <-proc_destroy_inode
vsftpd-7977 [003] .... 577.171506: __call_rcu <-call_rcu_sched
vsftpd-7977 [003] .... 577.171506: d_free <-shrink_dcache_for_umount_subtree
vsftpd-7977 [003] .... 577.171507: __d_free <-d_free
vsftpd-7977 [003] .... 577.171507: kmem_cache_free <-__d_free
vsftpd-7977 [003] .... 577.171507: __phys_addr <-kmem_cache_free
vsftpd-7977 [003] .... 577.171507: __slab_free <-kmem_cache_free
vsftpd-7977 [003] .... 577.171507: free_debug_processing <-__slab_free
vsftpd-7977 [003] d... 577.171508: check_slab <-free_debug_processing
vsftpd-7977 [003] d... 577.171508: slab_pad_check.part.42 <-check_slab
vsftpd-7977 [003] d... 577.171508: on_freelist <-free_debug_processing
vsftpd-7977 [003] d... 577.171509: check_object <-free_debug_processing
vsftpd-7977 [003] d... 577.171509: check_bytes_and_report <-check_object
vsftpd-7977 [003] d... 577.171510: check_bytes_and_report <-check_object
vsftpd-7977 [003] d... 577.171510: set_track <-free_debug_processing
vsftpd-7977 [003] d... 577.171510: dump_trace <-save_stack_trace
vsftpd-7977 [003] d... 577.171510: print_context_stack <-dump_trace
vsftpd-7977 [003] d... 577.171514: init_object <-free_debug_processing
vsftpd-7977 [003] .... 577.171515: sync_filesystem <-generic_shutdown_super
vsftpd-7977 [003] .... 577.171515: __sync_filesystem <-sync_filesystem
vsftpd-7977 [003] .... 577.171515: __sync_filesystem <-sync_filesystem
vsftpd-7977 [003] .... 577.171516: fsnotify_unmount_inodes <-generic_shutdown_super
vsftpd-7977 [003] .... 577.171516: _raw_spin_lock <-fsnotify_unmount_inodes
vsftpd-7977 [003] .... 577.171516: evict_inodes <-generic_shutdown_super
vsftpd-7977 [003] .... 577.171516: _raw_spin_lock <-evict_inodes
vsftpd-7977 [003] .... 577.171516: dispose_list <-evict_inodes
vsftpd-7977 [003] .... 577.171517: _raw_spin_lock <-generic_shutdown_super
vsftpd-7977 [003] .... 577.171517: up_write <-generic_shutdown_super
vsftpd-7977 [003] .... 577.171517: free_anon_bdev <-kill_anon_super
vsftpd-7977 [003] .... 577.171517: _raw_spin_lock <-free_anon_bdev
vsftpd-7977 [003] .... 577.171518: proc_kill_sb: put_pid_ns: 0xffff8801dc56f320 count:2->1
vsftpd-7977 [003] .... 577.171518: unregister_shrinker <-deactivate_locked_super
vsftpd-7977 [003] .... 577.171518: down_write <-unregister_shrinker
vsftpd-7977 [003] .... 577.171518: _cond_resched <-down_write
vsftpd-7977 [003] .... 577.171519: up_write <-unregister_shrinker
vsftpd-7977 [003] .... 577.171519: rcu_barrier <-deactivate_locked_super
vsftpd-7977 [003] .... 577.171519: rcu_barrier_sched <-rcu_barrier
vsftpd-7977 [003] .... 577.171519: _rcu_barrier.isra.31 <-rcu_barrier_sched
vsftpd-7977 [003] .... 577.171519: mutex_lock <-_rcu_barrier.isra.31
vsftpd-7977 [003] .... 577.171520: _cond_resched <-mutex_lock
vsftpd-7977 [003] .... 577.171520: __init_waitqueue_head <-_rcu_barrier.isra.31
vsftpd-7977 [003] .... 577.171520: on_each_cpu <-_rcu_barrier.isra.31
vsftpd-7977 [003] .... 577.171520: smp_call_function <-on_each_cpu
vsftpd-7977 [003] .... 577.171521: smp_call_function_many <-smp_call_function
vsftpd-7977 [003] .... 577.171521: _raw_spin_lock_irqsave <-smp_call_function_many
vsftpd-7977 [003] d... 577.171521: _raw_spin_unlock_irqrestore <-smp_call_function_many
vsftpd-7977 [003] .... 577.171522: native_send_call_func_ipi <-smp_call_function_many
vsftpd-7977 [003] .... 577.171522: flat_send_IPI_allbutself <-native_send_call_func_ipi
vsftpd-7977 [003] d... 577.171532: rcu_barrier_func <-on_each_cpu
vsftpd-7977 [003] d... 577.171532: call_rcu_sched <-rcu_barrier_func
vsftpd-7977 [003] d... 577.171533: __call_rcu <-call_rcu_sched
vsftpd-7977 [003] .... 577.171533: wait_for_completion <-_rcu_barrier.isra.31
vsftpd-7977 [003] .... 577.171533: wait_for_common <-wait_for_completion
vsftpd-7977 [003] .... 577.171533: _cond_resched <-wait_for_common
vsftpd-7977 [003] .... 577.171533: _raw_spin_lock_irq <-wait_for_common
vsftpd-7977 [003] .... 577.171534: schedule_timeout <-wait_for_common
vsftpd-7977 [003] .... 577.171534: schedule <-schedule_timeout
vsftpd-7977 [003] .... 577.171534: __schedule <-schedule
next prev parent reply other threads:[~2012-05-05 5:56 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-28 9:19 [RFC PATCH] namespaces: fix leak on fork() failure Mike Galbraith
2012-04-28 14:26 ` Oleg Nesterov
2012-04-29 4:13 ` Mike Galbraith
2012-04-29 7:57 ` Eric W. Biederman
2012-04-29 9:49 ` Mike Galbraith
2012-04-29 16:58 ` Oleg Nesterov
2012-04-30 2:59 ` Eric W. Biederman
2012-04-30 3:25 ` Mike Galbraith
2012-05-02 12:40 ` Oleg Nesterov
2012-05-02 17:37 ` Eric W. Biederman
2012-04-30 3:01 ` [PATCH] " Mike Galbraith
[not found] ` <m1zk9rmyh4.fsf@fess.ebiederm.org>
2012-05-01 20:42 ` Andrew Morton
2012-05-03 3:12 ` Mike Galbraith
2012-05-03 14:56 ` Mike Galbraith
2012-05-04 4:27 ` Mike Galbraith
2012-05-04 7:55 ` Eric W. Biederman
2012-05-04 8:34 ` Mike Galbraith
2012-05-04 9:45 ` Mike Galbraith
2012-05-04 14:13 ` Eric W. Biederman
2012-05-04 14:49 ` Mike Galbraith
2012-05-04 15:36 ` Eric W. Biederman
2012-05-04 16:57 ` Mike Galbraith
2012-05-04 20:29 ` Eric W. Biederman
2012-05-05 5:56 ` Mike Galbraith [this message]
2012-05-05 6:08 ` Mike Galbraith
2012-05-05 7:12 ` Mike Galbraith
2012-05-05 11:37 ` Eric W. Biederman
2012-05-07 21:51 ` [PATCH] vfs: Speed up deactivate_super for non-modular filesystems Eric W. Biederman
2012-05-07 22:17 ` Al Viro
2012-05-07 23:56 ` Paul E. McKenney
2012-05-08 1:07 ` Eric W. Biederman
2012-05-08 4:53 ` Mike Galbraith
2012-05-09 7:55 ` Nick Piggin
2012-05-09 11:02 ` Eric W. Biederman
2012-05-15 8:40 ` Nick Piggin
2012-05-16 0:34 ` Eric W. Biederman
2012-05-09 13:59 ` Paul E. McKenney
2012-05-04 8:03 ` [PATCH] Re: [RFC PATCH] namespaces: fix leak on fork() failure Eric W. Biederman
2012-05-04 8:19 ` Mike Galbraith
2012-05-04 8:54 ` Mike Galbraith
2012-05-07 0:32 ` [PATCH 0/3] pidns: Closing the pid namespace exit race Eric W. Biederman
2012-05-07 0:33 ` [PATCH 1/3] pidns: Use task_active_pid_ns in do_notify_parent Eric W. Biederman
2012-05-07 0:35 ` [PATCH 2/3] pidns: Guarantee that the pidns init will be the last pidns process reaped Eric W. Biederman
2012-05-08 22:50 ` Andrew Morton
2012-05-16 18:39 ` Oleg Nesterov
2012-05-16 19:34 ` Oleg Nesterov
2012-05-16 20:54 ` Eric W. Biederman
2012-05-17 17:00 ` Oleg Nesterov
2012-05-17 21:46 ` Eric W. Biederman
2012-05-18 12:39 ` Oleg Nesterov
2012-05-19 0:03 ` Eric W. Biederman
2012-05-21 12:44 ` Oleg Nesterov
2012-05-22 0:16 ` Eric W. Biederman
2012-05-22 0:20 ` [PATCH] pidns: Guarantee that the pidns init will be the last pidns process reaped. v2 Eric W. Biederman
2012-05-22 16:54 ` Oleg Nesterov
2012-05-22 19:23 ` Andrew Morton
2012-05-23 14:52 ` Oleg Nesterov
2012-05-25 15:15 ` [PATCH -mm] pidns-guarantee-that-the-pidns-init-will-be-the-last-pidns-process-r eaped-v2-fix-fix Oleg Nesterov
2012-05-25 15:59 ` [PATCH -mm 0/1] pidns: find_new_reaper() can no longer switch to init_pid_ns.child_reaper Oleg Nesterov
2012-05-25 16:00 ` [PATCH -mm 1/1] " Oleg Nesterov
2012-05-25 21:43 ` Eric W. Biederman
2012-05-27 19:10 ` [PATCH v2 -mm 0/1] " Oleg Nesterov
2012-05-27 19:11 ` [PATCH v2 -mm 1/1] " Oleg Nesterov
2012-05-29 6:34 ` Eric W. Biederman
2012-05-25 21:25 ` [PATCH -mm] pidns-guarantee-that-the-pidns-init-will-be-the-last-pidns-process-r eaped-v2-fix-fix Eric W. Biederman
2012-05-27 18:41 ` [PATCH -mm v2] " Oleg Nesterov
2012-05-07 0:35 ` [PATCH 3/3] pidns: Make killed children autoreap Eric W. Biederman
2012-05-08 22:51 ` Andrew Morton
2012-04-30 13:57 ` [RFC PATCH] namespaces: fix leak on fork() failure Mike Galbraith
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1336197362.7346.9.camel@marge.simpson.net \
--to=efault@gmx.de \
--cc=akpm@linux-foundation.org \
--cc=ebiederm@xmission.com \
--cc=gorcunov@openvz.org \
--cc=linux-kernel@vger.kernel.org \
--cc=louis.rilling@kerlabs.com \
--cc=oleg@redhat.com \
--cc=xemul@parallels.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).