[stgt] [PATCH 08/12] Use bs_finish in thread per target

Chandra Seetharaman sekharan at us.ibm.com
Tue Oct 12 03:45:23 CEST 2010


I did my coding/testing/debugging on RHEL 6. There is no direct support
for this system call :(, hence I used syscall (man page also suggests
so).

chandra

On Tue, 2010-10-12 at 03:34 +0900, FUJITA Tomonori wrote:
> On Mon, 27 Sep 2010 14:07:19 -0700
> Chandra Seetharaman <sekharan at us.ibm.com> wrote:
> 
> > Use bs_finish data structure in iSCSI thread per target context.
> > 
> > Signed-off-by: FUJITA Tomonori <fujita.tomonori at lab.ntt.co.jp>
> > Signed-off-by: Chandra Seetharaman <sekharan at us.ibm.com>
> > 
> > ---
> >  usr/bs.c           |    1 +
> >  usr/iscsi/iscsid.h |    2 ++
> >  usr/iscsi/target.c |   17 ++++++++++++++++-
> >  3 files changed, 19 insertions(+), 1 deletion(-)
> > 
> > Index: tgt-102236c/usr/bs.c
> > ===================================================================
> > --- tgt-102236c.orig/usr/bs.c
> > +++ tgt-102236c/usr/bs.c
> > @@ -34,6 +34,7 @@
> >  
> >  #include "list.h"
> >  #include "tgtd.h"
> > +#include "target.h"
> >  #include "tgtadm_error.h"
> >  #include "util.h"
> >  #include "target.h"
> > Index: tgt-102236c/usr/iscsi/iscsid.h
> > ===================================================================
> > --- tgt-102236c.orig/usr/iscsi/iscsid.h
> > +++ tgt-102236c/usr/iscsi/iscsid.h
> > @@ -259,6 +259,8 @@ struct iscsi_target {
> >  
> >  	pthread_t thread;
> >  	int stop_pthread;
> > +
> > +	struct bs_finish bsfin;
> >  };
> >  
> >  enum task_flags {
> > Index: tgt-102236c/usr/iscsi/target.c
> > ===================================================================
> > --- tgt-102236c.orig/usr/iscsi/target.c
> > +++ tgt-102236c/usr/iscsi/target.c
> > @@ -384,6 +384,7 @@ void iscsi_target_destroy(int tid)
> >  		pthread_kill(target->thread, SIGUSR2);
> >  
> >  		pthread_join(target->thread, NULL);
> > +		pthread_mutex_destroy(&target->bsfin.finished_lock);
> >  	}
> >  
> >  	close(target->efd);
> > @@ -405,6 +406,18 @@ static void *iscsi_thread_fn(void *arg)
> >  	sigaddset(&mask, SIGUSR2);
> >  	pthread_sigmask(SIG_BLOCK, &mask, NULL);
> >  
> > +	pthread_mutex_init(&t->bsfin.finished_lock, NULL);
> > +	INIT_LIST_HEAD(&t->bsfin.finished_list);
> > +
> > +	t->bsfin.th_id = syscall(SYS_gettid);
> 
> Can we simply use gettid here?


--
To unsubscribe from this list: send the line "unsubscribe stgt" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html



More information about the stgt mailing list