All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vlad Apostolov <vapo@sgi.com>
To: Christoph Hellwig <hch@lst.de>
Cc: xfs@oss.sgi.com
Subject: Re: [PATCH] remove unessecary vfs argument to DM_EVENT_ENABLED
Date: Fri, 03 Aug 2007 12:21:14 +1000	[thread overview]
Message-ID: <46B2911A.60308@sgi.com> (raw)
In-Reply-To: <20070802143417.GA30414@lst.de>

It is looking good Christoph. I built it and ran DMAPI QA and all went fine.
Dave is also looking at it and would provide a feedback.

Regards,
Vlad

Christoph Hellwig wrote:
> We can easily derive the vfs from the inode passed in.  Also kill
> the unused DM_EVENT_ENABLED_IO macro.
>
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
>
> Index: linux-2.6-xfs/fs/xfs/dmapi/xfs_dm.c
> ===================================================================
> --- linux-2.6-xfs.orig/fs/xfs/dmapi/xfs_dm.c	2007-08-01 19:53:27.000000000 +0200
> +++ linux-2.6-xfs/fs/xfs/dmapi/xfs_dm.c	2007-08-01 19:53:42.000000000 +0200
> @@ -3271,8 +3271,7 @@ xfs_dm_send_mmap_event(
>  
>  	xfs_ilock(ip, iolock);
>  	/* If write possible, try a DMAPI write event */
> -	if ((max_event == DM_EVENT_WRITE) &&
> -	    DM_EVENT_ENABLED(vp->v_vfsp, ip, max_event)){
> +	if (max_event == DM_EVENT_WRITE && DM_EVENT_ENABLED(ip, max_event)) {
>  		error = xfs_dm_send_data_event(max_event, vp, offset,
>  					       evsize, 0, &locktype);
>  		goto out_unlock;
> @@ -3281,7 +3280,7 @@ xfs_dm_send_mmap_event(
>  	/* Try a read event if max_event was != DM_EVENT_WRITE or if it
>  	 * was DM_EVENT_WRITE but the WRITE event was not enabled.
>  	 */
> -	if (DM_EVENT_ENABLED (vp->v_vfsp, ip, DM_EVENT_READ)) {
> +	if (DM_EVENT_ENABLED(ip, DM_EVENT_READ)) {
>  		error = xfs_dm_send_data_event(DM_EVENT_READ, vp, offset,
>  					       evsize, 0, &locktype);
>  	}
> Index: linux-2.6-xfs/fs/xfs/linux-2.6/xfs_file.c
> ===================================================================
> --- linux-2.6-xfs.orig/fs/xfs/linux-2.6/xfs_file.c	2007-08-01 19:53:22.000000000 +0200
> +++ linux-2.6-xfs/fs/xfs/linux-2.6/xfs_file.c	2007-08-01 19:53:42.000000000 +0200
> @@ -384,7 +384,7 @@ xfs_file_open_exec(
>  
>  		if (!ip)
>  			return -EINVAL;
> -		if (DM_EVENT_ENABLED(vp->v_vfsp, ip, DM_EVENT_READ))
> +		if (DM_EVENT_ENABLED(ip, DM_EVENT_READ))
>  			return -XFS_SEND_DATA(mp, DM_EVENT_READ, vp,
>  					       0, 0, 0, NULL);
>  	}
> Index: linux-2.6-xfs/fs/xfs/linux-2.6/xfs_lrw.c
> ===================================================================
> --- linux-2.6-xfs.orig/fs/xfs/linux-2.6/xfs_lrw.c	2007-08-01 19:53:27.000000000 +0200
> +++ linux-2.6-xfs/fs/xfs/linux-2.6/xfs_lrw.c	2007-08-01 19:56:14.000000000 +0200
> @@ -245,8 +245,7 @@ xfs_read(
>  		mutex_lock(&inode->i_mutex);
>  	xfs_ilock(ip, XFS_IOLOCK_SHARED);
>  
> -	if (DM_EVENT_ENABLED(vp->v_vfsp, ip, DM_EVENT_READ) &&
> -	    !(ioflags & IO_INVIS)) {
> +	if (DM_EVENT_ENABLED(ip, DM_EVENT_READ) && !(ioflags & IO_INVIS)) {
>  		bhv_vrwlock_t locktype = VRWLOCK_READ;
>  		int dmflags = FILP_DELAY_FLAG(file) | DM_SEM_FLAG_RD(ioflags);
>  
> @@ -307,8 +306,7 @@ xfs_sendfile(
>  
>  	xfs_ilock(ip, XFS_IOLOCK_SHARED);
>  
> -	if (DM_EVENT_ENABLED(BHV_TO_VNODE(bdp)->v_vfsp, ip, DM_EVENT_READ) &&
> -	    (!(ioflags & IO_INVIS))) {
> +	if (DM_EVENT_ENABLED(ip, DM_EVENT_READ) && !(ioflags & IO_INVIS)) {
>  		bhv_vrwlock_t locktype = VRWLOCK_READ;
>  		int error;
>  
> @@ -351,8 +349,7 @@ xfs_splice_read(
>  
>  	xfs_ilock(ip, XFS_IOLOCK_SHARED);
>  
> -	if (DM_EVENT_ENABLED(BHV_TO_VNODE(bdp)->v_vfsp, ip, DM_EVENT_READ) &&
> -	    (!(ioflags & IO_INVIS))) {
> +	if (DM_EVENT_ENABLED(ip, DM_EVENT_READ) && !(ioflags & IO_INVIS)) {
>  		bhv_vrwlock_t locktype = VRWLOCK_READ;
>  		int error;
>  
> @@ -398,8 +395,7 @@ xfs_splice_write(
>  
>  	xfs_ilock(ip, XFS_IOLOCK_EXCL);
>  
> -	if (DM_EVENT_ENABLED(BHV_TO_VNODE(bdp)->v_vfsp, ip, DM_EVENT_WRITE) &&
> -	    (!(ioflags & IO_INVIS))) {
> +	if (DM_EVENT_ENABLED(ip, DM_EVENT_WRITE) && !(ioflags & IO_INVIS)) {
>  		bhv_vrwlock_t locktype = VRWLOCK_WRITE;
>  		int error;
>  
> @@ -724,7 +720,7 @@ start:
>  		goto out_unlock_mutex;
>  	}
>  
> -	if ((DM_EVENT_ENABLED(vp->v_vfsp, xip, DM_EVENT_WRITE) &&
> +	if ((DM_EVENT_ENABLED(xip, DM_EVENT_WRITE) &&
>  	    !(ioflags & IO_INVIS) && !eventsent)) {
>  		int		dmflags = FILP_DELAY_FLAG(file);
>  
> @@ -876,10 +872,8 @@ retry:
>  	if (ret == -EIOCBQUEUED && !(ioflags & IO_ISAIO))
>  		ret = wait_on_sync_kiocb(iocb);
>  
> -	if ((ret == -ENOSPC) &&
> -	    DM_EVENT_ENABLED(vp->v_vfsp, xip, DM_EVENT_NOSPACE) &&
> -	    !(ioflags & IO_INVIS)) {
> -
> +	if (ret == -ENOSPC &&
> +	    DM_EVENT_ENABLED(xip, DM_EVENT_NOSPACE) && !(ioflags & IO_INVIS)) {
>  		xfs_rwunlock(bdp, locktype);
>  		if (need_i_mutex)
>  			mutex_unlock(&inode->i_mutex);
> Index: linux-2.6-xfs/fs/xfs/xfs_bmap.c
> ===================================================================
> --- linux-2.6-xfs.orig/fs/xfs/xfs_bmap.c	2007-08-01 19:53:27.000000000 +0200
> +++ linux-2.6-xfs/fs/xfs/xfs_bmap.c	2007-08-01 19:53:42.000000000 +0200
> @@ -5811,10 +5811,9 @@ xfs_getbmap(
>  	 *	could misinterpret holes in a DMAPI file as true holes,
>  	 *	when in fact they may represent offline user data.
>  	 */
> -	if (   (interface & BMV_IF_NO_DMAPI_READ) == 0
> -	    && DM_EVENT_ENABLED(vp->v_vfsp, ip, DM_EVENT_READ)
> -	    && whichfork == XFS_DATA_FORK) {
> -
> +	if ((interface & BMV_IF_NO_DMAPI_READ) == 0 &&
> +	    DM_EVENT_ENABLED(ip, DM_EVENT_READ) &&
> +	    whichfork == XFS_DATA_FORK) {
>  		error = XFS_SEND_DATA(mp, DM_EVENT_READ, vp, 0, 0, 0, NULL);
>  		if (error)
>  			return XFS_ERROR(error);
> Index: linux-2.6-xfs/fs/xfs/xfs_dmapi.h
> ===================================================================
> --- linux-2.6-xfs.orig/fs/xfs/xfs_dmapi.h	2007-08-01 19:53:16.000000000 +0200
> +++ linux-2.6-xfs/fs/xfs/xfs_dmapi.h	2007-08-01 19:53:42.000000000 +0200
> @@ -67,18 +67,12 @@ typedef enum {
>  #define HAVE_DM_RIGHT_T
>  
>  /* Defines for determining if an event message should be sent. */
> -#define	DM_EVENT_ENABLED(vfsp, ip, event) ( \
> -	unlikely ((vfsp)->vfs_flag & VFS_DMI) && \
> +#define	DM_EVENT_ENABLED(ip, event) ( \
> +	unlikely (XFS_MTOVFS((ip)->i_mount)->vfs_flag & VFS_DMI) && \
>  		( ((ip)->i_d.di_dmevmask & (1 << event)) || \
>  		  ((ip)->i_mount->m_dmevmask & (1 << event)) ) \
>  	)
>  
> -#define	DM_EVENT_ENABLED_IO(vfsp, io, event) ( \
> -	unlikely ((vfsp)->vfs_flag & VFS_DMI) && \
> -		( ((io)->io_dmevmask & (1 << event)) || \
> -		  ((io)->io_mount->m_dmevmask & (1 << event)) ) \
> -	)
> -
>  #define DM_XFS_VALID_FS_EVENTS		( \
>  	(1 << DM_EVENT_PREUNMOUNT)	| \
>  	(1 << DM_EVENT_UNMOUNT)		| \
> Index: linux-2.6-xfs/fs/xfs/xfs_rename.c
> ===================================================================
> --- linux-2.6-xfs.orig/fs/xfs/xfs_rename.c	2007-08-01 19:53:27.000000000 +0200
> +++ linux-2.6-xfs/fs/xfs/xfs_rename.c	2007-08-01 19:53:42.000000000 +0200
> @@ -264,9 +264,8 @@ xfs_rename(
>  	src_dp = XFS_BHVTOI(src_dir_bdp);
>  	mp = src_dp->i_mount;
>  
> -	if (DM_EVENT_ENABLED(src_dir_vp->v_vfsp, src_dp, DM_EVENT_RENAME) ||
> -	    DM_EVENT_ENABLED(target_dir_vp->v_vfsp,
> -				target_dp, DM_EVENT_RENAME)) {
> +	if (DM_EVENT_ENABLED(src_dp, DM_EVENT_RENAME) ||
> +	    DM_EVENT_ENABLED(target_dp, DM_EVENT_RENAME)) {
>  		error = XFS_SEND_NAMESP(mp, DM_EVENT_RENAME,
>  					src_dir_vp, DM_RIGHT_NULL,
>  					target_dir_vp, DM_RIGHT_NULL,
> @@ -603,9 +602,8 @@ xfs_rename(
>  	/* Fall through to std_return with error = 0 or errno from
>  	 * xfs_trans_commit	 */
>  std_return:
> -	if (DM_EVENT_ENABLED(src_dir_vp->v_vfsp, src_dp, DM_EVENT_POSTRENAME) ||
> -	    DM_EVENT_ENABLED(target_dir_vp->v_vfsp,
> -				target_dp, DM_EVENT_POSTRENAME)) {
> +	if (DM_EVENT_ENABLED(src_dp, DM_EVENT_POSTRENAME) ||
> +	    DM_EVENT_ENABLED(target_dp, DM_EVENT_POSTRENAME)) {
>  		(void) XFS_SEND_NAMESP (mp, DM_EVENT_POSTRENAME,
>  					src_dir_vp, DM_RIGHT_NULL,
>  					target_dir_vp, DM_RIGHT_NULL,
> Index: linux-2.6-xfs/fs/xfs/xfs_vnodeops.c
> ===================================================================
> --- linux-2.6-xfs.orig/fs/xfs/xfs_vnodeops.c	2007-08-01 19:53:27.000000000 +0200
> +++ linux-2.6-xfs/fs/xfs/xfs_vnodeops.c	2007-08-01 19:58:06.000000000 +0200
> @@ -337,7 +337,7 @@ xfs_setattr(
>  			}
>  		}
>  	} else {
> -		if (DM_EVENT_ENABLED (vp->v_vfsp, ip, DM_EVENT_TRUNCATE) &&
> +		if (DM_EVENT_ENABLED(ip, DM_EVENT_TRUNCATE) &&
>  		    !(flags & ATTR_DMI)) {
>  			int dmflags = AT_DELAY_FLAG(flags) | DM_SEM_FLAG_WR;
>  			code = XFS_SEND_DATA(mp, DM_EVENT_TRUNCATE, vp,
> @@ -896,7 +896,7 @@ xfs_setattr(
>  		return code;
>  	}
>  
> -	if (DM_EVENT_ENABLED(vp->v_vfsp, ip, DM_EVENT_ATTRIBUTE) &&
> +	if (DM_EVENT_ENABLED(ip, DM_EVENT_ATTRIBUTE) &&
>  	    !(flags & ATTR_DMI)) {
>  		(void) XFS_SEND_NAMESP(mp, DM_EVENT_ATTRIBUTE, vp, DM_RIGHT_NULL,
>  					NULL, DM_RIGHT_NULL, NULL, NULL,
> @@ -1651,8 +1651,7 @@ xfs_inactive(
>  
>  	mp = ip->i_mount;
>  
> -	if (ip->i_d.di_nlink == 0 &&
> -	    DM_EVENT_ENABLED(vp->v_vfsp, ip, DM_EVENT_DESTROY)) {
> +	if (ip->i_d.di_nlink == 0 && DM_EVENT_ENABLED(ip, DM_EVENT_DESTROY)) {
>  		(void) XFS_SEND_DESTROY(mp, vp, DM_RIGHT_NULL);
>  	}
>  
> @@ -1907,7 +1906,7 @@ xfs_create(
>  	dm_di_mode = vap->va_mode;
>  	namelen = VNAMELEN(dentry);
>  
> -	if (DM_EVENT_ENABLED(dir_vp->v_vfsp, dp, DM_EVENT_CREATE)) {
> +	if (DM_EVENT_ENABLED(dp, DM_EVENT_CREATE)) {
>  		error = XFS_SEND_NAMESP(mp, DM_EVENT_CREATE,
>  				dir_vp, DM_RIGHT_NULL, NULL,
>  				DM_RIGHT_NULL, name, NULL,
> @@ -2072,9 +2071,8 @@ xfs_create(
>  	/* Fallthrough to std_return with error = 0  */
>  
>  std_return:
> -	if ( (*vpp || (error != 0 && dm_event_sent != 0)) &&
> -			DM_EVENT_ENABLED(dir_vp->v_vfsp, XFS_BHVTOI(dir_bdp),
> -							DM_EVENT_POSTCREATE)) {
> +	if ((*vpp || (error != 0 && dm_event_sent != 0)) &&
> +	    DM_EVENT_ENABLED(XFS_BHVTOI(dir_bdp), DM_EVENT_POSTCREATE)) {
>  		(void) XFS_SEND_NAMESP(mp, DM_EVENT_POSTCREATE,
>  			dir_vp, DM_RIGHT_NULL,
>  			*vpp ? vp:NULL,
> @@ -2408,7 +2406,7 @@ xfs_remove(
>  		IRELE(ip);
>  	}
>  
> -	if (DM_EVENT_ENABLED(dir_vp->v_vfsp, dp, DM_EVENT_REMOVE)) {
> +	if (DM_EVENT_ENABLED(dp, DM_EVENT_REMOVE)) {
>  		error = XFS_SEND_NAMESP(mp, DM_EVENT_REMOVE, dir_vp,
>  					DM_RIGHT_NULL, NULL, DM_RIGHT_NULL,
>  					name, NULL, dm_di_mode, 0, 0);
> @@ -2584,8 +2582,7 @@ xfs_remove(
>  
>  /*	Fall through to std_return with error = 0 */
>   std_return:
> -	if (DM_EVENT_ENABLED(dir_vp->v_vfsp, dp,
> -						DM_EVENT_POSTREMOVE)) {
> +	if (DM_EVENT_ENABLED(dp, DM_EVENT_POSTREMOVE)) {
>  		(void) XFS_SEND_NAMESP(mp, DM_EVENT_POSTREMOVE,
>  				dir_vp, DM_RIGHT_NULL,
>  				NULL, DM_RIGHT_NULL,
> @@ -2662,7 +2659,7 @@ xfs_link(
>  	if (XFS_FORCED_SHUTDOWN(mp))
>  		return XFS_ERROR(EIO);
>  
> -	if (DM_EVENT_ENABLED(src_vp->v_vfsp, tdp, DM_EVENT_LINK)) {
> +	if (DM_EVENT_ENABLED(tdp, DM_EVENT_LINK)) {
>  		error = XFS_SEND_NAMESP(mp, DM_EVENT_LINK,
>  					target_dir_vp, DM_RIGHT_NULL,
>  					src_vp, DM_RIGHT_NULL,
> @@ -2773,8 +2770,7 @@ xfs_link(
>  
>  	/* Fall through to std_return with error = 0. */
>  std_return:
> -	if (DM_EVENT_ENABLED(src_vp->v_vfsp, sip,
> -						DM_EVENT_POSTLINK)) {
> +	if (DM_EVENT_ENABLED(sip, DM_EVENT_POSTLINK)) {
>  		(void) XFS_SEND_NAMESP(mp, DM_EVENT_POSTLINK,
>  				target_dir_vp, DM_RIGHT_NULL,
>  				src_vp, DM_RIGHT_NULL,
> @@ -2838,7 +2834,7 @@ xfs_mkdir(
>  	dp_joined_to_trans = B_FALSE;
>  	dm_di_mode = vap->va_mode;
>  
> -	if (DM_EVENT_ENABLED(dir_vp->v_vfsp, dp, DM_EVENT_CREATE)) {
> +	if (DM_EVENT_ENABLED(dp, DM_EVENT_CREATE)) {
>  		error = XFS_SEND_NAMESP(mp, DM_EVENT_CREATE,
>  					dir_vp, DM_RIGHT_NULL, NULL,
>  					DM_RIGHT_NULL, dir_name, NULL,
> @@ -2995,9 +2991,8 @@ xfs_mkdir(
>  	 * xfs_trans_commit. */
>  
>  std_return:
> -	if ( (created || (error != 0 && dm_event_sent != 0)) &&
> -			DM_EVENT_ENABLED(dir_vp->v_vfsp, XFS_BHVTOI(dir_bdp),
> -						DM_EVENT_POSTCREATE)) {
> +	if ((created || (error != 0 && dm_event_sent != 0)) &&
> +	    DM_EVENT_ENABLED(XFS_BHVTOI(dir_bdp), DM_EVENT_POSTCREATE)) {
>  		(void) XFS_SEND_NAMESP(mp, DM_EVENT_POSTCREATE,
>  					dir_vp, DM_RIGHT_NULL,
>  					created ? XFS_ITOV(cdp):NULL,
> @@ -3066,7 +3061,7 @@ xfs_rmdir(
>  		IRELE(cdp);
>  	}
>  
> -	if (DM_EVENT_ENABLED(dir_vp->v_vfsp, dp, DM_EVENT_REMOVE)) {
> +	if (DM_EVENT_ENABLED(dp, DM_EVENT_REMOVE)) {
>  		error = XFS_SEND_NAMESP(mp, DM_EVENT_REMOVE,
>  					dir_vp, DM_RIGHT_NULL,
>  					NULL, DM_RIGHT_NULL,
> @@ -3255,7 +3250,7 @@ xfs_rmdir(
>  	/* Fall through to std_return with error = 0 or the errno
>  	 * from xfs_trans_commit. */
>   std_return:
> -	if (DM_EVENT_ENABLED(dir_vp->v_vfsp, dp, DM_EVENT_POSTREMOVE)) {
> +	if (DM_EVENT_ENABLED(dp, DM_EVENT_POSTREMOVE)) {
>  		(void) XFS_SEND_NAMESP(mp, DM_EVENT_POSTREMOVE,
>  					dir_vp, DM_RIGHT_NULL,
>  					NULL, DM_RIGHT_NULL,
> @@ -3359,7 +3354,7 @@ xfs_symlink(
>  		}
>  	}
>  
> -	if (DM_EVENT_ENABLED(dir_vp->v_vfsp, dp, DM_EVENT_SYMLINK)) {
> +	if (DM_EVENT_ENABLED(dp, DM_EVENT_SYMLINK)) {
>  		error = XFS_SEND_NAMESP(mp, DM_EVENT_SYMLINK, dir_vp,
>  					DM_RIGHT_NULL, NULL, DM_RIGHT_NULL,
>  					link_name, target_path, 0, 0, 0);
> @@ -3559,8 +3554,7 @@ xfs_symlink(
>  	/* Fall through to std_return with error = 0 or errno from
>  	 * xfs_trans_commit	*/
>  std_return:
> -	if (DM_EVENT_ENABLED(dir_vp->v_vfsp, XFS_BHVTOI(dir_bdp),
> -			     DM_EVENT_POSTSYMLINK)) {
> +	if (DM_EVENT_ENABLED(XFS_BHVTOI(dir_bdp), DM_EVENT_POSTSYMLINK)) {
>  		(void) XFS_SEND_NAMESP(mp, DM_EVENT_POSTSYMLINK,
>  					dir_vp, DM_RIGHT_NULL,
>  					error ? NULL : XFS_ITOV(ip),
> @@ -4062,7 +4056,7 @@ xfs_alloc_file_space(
>  	/*	Generate a DMAPI event if needed.	*/
>  	if (alloc_type != 0 && offset < ip->i_size &&
>  			(attr_flags&ATTR_DMI) == 0  &&
> -			DM_EVENT_ENABLED(XFS_MTOVFS(mp), ip, DM_EVENT_WRITE)) {
> +			DM_EVENT_ENABLED(ip, DM_EVENT_WRITE)) {
>  		xfs_off_t           end_dmi_offset;
>  
>  		end_dmi_offset = offset+len;
> @@ -4176,9 +4170,8 @@ retry:
>  		allocatesize_fsb -= allocated_fsb;
>  	}
>  dmapi_enospc_check:
> -	if (error == ENOSPC && (attr_flags&ATTR_DMI) == 0 &&
> -	    DM_EVENT_ENABLED(XFS_MTOVFS(mp), ip, DM_EVENT_NOSPACE)) {
> -
> +	if (error == ENOSPC && (attr_flags & ATTR_DMI) == 0 &&
> +	    DM_EVENT_ENABLED(ip, DM_EVENT_NOSPACE)) {
>  		error = XFS_SEND_NAMESP(mp, DM_EVENT_NOSPACE,
>  				XFS_ITOV(ip), DM_RIGHT_NULL,
>  				XFS_ITOV(ip), DM_RIGHT_NULL,
> @@ -4322,9 +4315,8 @@ xfs_free_file_space(
>  	end_dmi_offset = offset + len;
>  	endoffset_fsb = XFS_B_TO_FSBT(mp, end_dmi_offset);
>  
> -	if (offset < ip->i_size &&
> -	    (attr_flags & ATTR_DMI) == 0 &&
> -	    DM_EVENT_ENABLED(XFS_MTOVFS(mp), ip, DM_EVENT_WRITE)) {
> +	if (offset < ip->i_size && (attr_flags & ATTR_DMI) == 0 &&
> +	    DM_EVENT_ENABLED(ip, DM_EVENT_WRITE)) {
>  		if (end_dmi_offset > ip->i_size)
>  			end_dmi_offset = ip->i_size;
>  		error = XFS_SEND_DATA(mp, DM_EVENT_WRITE, vp,
>
>   

      reply	other threads:[~2007-08-03  2:31 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-08-02 14:34 [PATCH] remove unessecary vfs argument to DM_EVENT_ENABLED Christoph Hellwig
2007-08-03  2:21 ` Vlad Apostolov [this message]

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=46B2911A.60308@sgi.com \
    --to=vapo@sgi.com \
    --cc=hch@lst.de \
    --cc=xfs@oss.sgi.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.