if (!m->queue_if_no_path || m->suspended) { 
if (!m->queue_if_no_path) { 
static int do_end_io(struct multipath *m, struct bio *bio,		     int error, struct mpath_io *mpio){	struct hw_handler *hwh = &m->hw_handler;	unsigned err_flags = MP_FAIL_PATH;	/* Default behavior */	if (!error)		return 0;	/* I/O complete */	if ((error == -EWOULDBLOCK) && bio_rw_ahead(bio))		return error;	if (error == -EOPNOTSUPP)		return error;	spin_lock(&m->lock);	if (!m->nr_valid_paths) {		if (!m->queue_if_no_path || m->suspended) {			spin_unlock(&m->lock);			return -EIO;		} else {			spin_unlock(&m->lock);			goto requeue;		}	}	spin_unlock(&m->lock);	if (hwh->type && hwh->type->error)		err_flags = hwh->type->error(hwh, bio);	if (mpio->pgpath) {		if (err_flags & MP_FAIL_PATH)			fail_path(mpio->pgpath);		if (err_flags & MP_BYPASS_PG)			bypass_pg(m, mpio->pgpath->pg, 1);	}	if (err_flags & MP_ERROR_IO)		return -EIO;      requeue:	dm_bio_restore(&mpio->details, bio);	/* queue for the daemon to resubmit or fail */	spin_lock(&m->lock);	bio_list_add(&m->queued_ios, bio);	m->queue_size++;	if (!m->queue_io)		queue_work(kmultipathd, &m->process_queued_ios);	spin_unlock(&m->lock);	return 1;	/* io not complete */}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/436d41087d047b61f8ab0604dc74fff3240a8933/dm-mpath.c/buggy/drivers/md/dm-mpath.c