Commit 490e0e89 authored by Julia Lawall's avatar Julia Lawall Committed by Greg Kroah-Hartman
Browse files

staging: lustre: osc: remove final uses of the GOTO macro

The semantic patch that makes this change is as follows:
(http://coccinelle.lip6.fr/

)

// <smpl>
@@
identifier lbl;
identifier rc;
constant c;
@@

- GOTO(lbl,\(rc\|c\));
+ goto lbl;

@@
identifier lbl;
expression rc;
@@

- GOTO(lbl,rc);
+ rc;
+ goto lbl;
// </smpl>

In one case (OES_INV), consecutive gotos were factorized and a break was
removed.

Signed-off-by: default avatarJulia Lawall <Julia.Lawall@lip6.fr>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 337832b7
Loading
Loading
Loading
Loading
+110 −58
Original line number Diff line number Diff line
@@ -178,76 +178,113 @@ static int osc_extent_sanity_check0(struct osc_extent *ext,
	int page_count;
	int rc = 0;

	if (!osc_object_is_locked(obj))
		GOTO(out, rc = 9);
	if (!osc_object_is_locked(obj)) {
		rc = 9;
		goto out;
	}

	if (ext->oe_state >= OES_STATE_MAX)
		GOTO(out, rc = 10);
	if (ext->oe_state >= OES_STATE_MAX) {
		rc = 10;
		goto out;
	}

	if (atomic_read(&ext->oe_refc) <= 0)
		GOTO(out, rc = 20);
	if (atomic_read(&ext->oe_refc) <= 0) {
		rc = 20;
		goto out;
	}

	if (atomic_read(&ext->oe_refc) < atomic_read(&ext->oe_users))
		GOTO(out, rc = 30);
	if (atomic_read(&ext->oe_refc) < atomic_read(&ext->oe_users)) {
		rc = 30;
		goto out;
	}

	switch (ext->oe_state) {
	case OES_INV:
		if (ext->oe_nr_pages > 0 || !list_empty(&ext->oe_pages))
			GOTO(out, rc = 35);
		GOTO(out, rc = 0);
		break;
			rc = 35;
		else
			rc = 0;
		goto out;
	case OES_ACTIVE:
		if (atomic_read(&ext->oe_users) == 0)
			GOTO(out, rc = 40);
		if (ext->oe_hp)
			GOTO(out, rc = 50);
		if (ext->oe_fsync_wait && !ext->oe_urgent)
			GOTO(out, rc = 55);
		if (atomic_read(&ext->oe_users) == 0) {
			rc = 40;
			goto out;
		}
		if (ext->oe_hp) {
			rc = 50;
			goto out;
		}
		if (ext->oe_fsync_wait && !ext->oe_urgent) {
			rc = 55;
			goto out;
		}
		break;
	case OES_CACHE:
		if (ext->oe_grants == 0)
			GOTO(out, rc = 60);
		if (ext->oe_fsync_wait && !ext->oe_urgent && !ext->oe_hp)
			GOTO(out, rc = 65);
		if (ext->oe_grants == 0) {
			rc = 60;
			goto out;
		}
		if (ext->oe_fsync_wait && !ext->oe_urgent && !ext->oe_hp) {
			rc = 65;
			goto out;
		}
	default:
		if (atomic_read(&ext->oe_users) > 0)
			GOTO(out, rc = 70);
		if (atomic_read(&ext->oe_users) > 0) {
			rc = 70;
			goto out;
		}
	}

	if (ext->oe_max_end < ext->oe_end || ext->oe_end < ext->oe_start)
		GOTO(out, rc = 80);
	if (ext->oe_max_end < ext->oe_end || ext->oe_end < ext->oe_start) {
		rc = 80;
		goto out;
	}

	if (ext->oe_osclock == NULL && ext->oe_grants > 0)
		GOTO(out, rc = 90);
	if (ext->oe_osclock == NULL && ext->oe_grants > 0) {
		rc = 90;
		goto out;
	}

	if (ext->oe_osclock) {
		struct cl_lock_descr *descr;
		descr = &ext->oe_osclock->cll_descr;
		if (!(descr->cld_start <= ext->oe_start &&
		      descr->cld_end >= ext->oe_max_end))
			GOTO(out, rc = 100);
		      descr->cld_end >= ext->oe_max_end)) {
			rc = 100;
			goto out;
		}
	}

	if (ext->oe_nr_pages > ext->oe_mppr)
		GOTO(out, rc = 105);
	if (ext->oe_nr_pages > ext->oe_mppr) {
		rc = 105;
		goto out;
	}

	/* Do not verify page list if extent is in RPC. This is because an
	 * in-RPC extent is supposed to be exclusively accessible w/o lock. */
	if (ext->oe_state > OES_CACHE)
		GOTO(out, rc = 0);
	if (ext->oe_state > OES_CACHE) {
		rc = 0;
		goto out;
	}

	if (!extent_debug)
		GOTO(out, rc = 0);
	if (!extent_debug) {
		rc = 0;
		goto out;
	}

	page_count = 0;
	list_for_each_entry(oap, &ext->oe_pages, oap_pending_item) {
		pgoff_t index = oap2cl_page(oap)->cp_index;
		++page_count;
		if (index > ext->oe_end || index < ext->oe_start)
			GOTO(out, rc = 110);
		if (index > ext->oe_end || index < ext->oe_start) {
			rc = 110;
			goto out;
		}
	}
	if (page_count != ext->oe_nr_pages) {
		rc = 120;
		goto out;
	}
	if (page_count != ext->oe_nr_pages)
		GOTO(out, rc = 120);

out:
	if (rc != 0)
@@ -774,8 +811,10 @@ struct osc_extent *osc_extent_find(const struct lu_env *env,
		rc = osc_extent_wait(env, conflict, OES_INV);
		osc_extent_put(env, conflict);
		conflict = NULL;
		if (rc < 0)
			GOTO(out, found = ERR_PTR(rc));
		if (rc < 0) {
			found = ERR_PTR(rc);
			goto out;
		}

		goto restart;
	}
@@ -932,7 +971,7 @@ static int osc_extent_truncate(struct osc_extent *ext, pgoff_t trunc_index,
	io->ci_obj = cl_object_top(osc2cl(obj));
	rc = cl_io_init(env, io, CIT_MISC, io->ci_obj);
	if (rc < 0)
		GOTO(out, rc);
		goto out;

	/* discard all pages with index greater then trunc_index */
	list_for_each_entry_safe(oap, tmp, &ext->oe_pages,
@@ -1112,21 +1151,27 @@ static int osc_extent_expand(struct osc_extent *ext, pgoff_t index, int *grants)
	osc_object_lock(obj);
	LASSERT(sanity_check_nolock(ext) == 0);
	end_chunk = ext->oe_end >> ppc_bits;
	if (chunk > end_chunk + 1)
		GOTO(out, rc = -ERANGE);
	if (chunk > end_chunk + 1) {
		rc = -ERANGE;
		goto out;
	}

	if (end_chunk >= chunk)
		GOTO(out, rc = 0);
	if (end_chunk >= chunk) {
		rc = 0;
		goto out;
	}

	LASSERT(end_chunk + 1 == chunk);
	/* try to expand this extent to cover @index */
	end_index = min(ext->oe_max_end, ((chunk + 1) << ppc_bits) - 1);

	next = next_extent(ext);
	if (next != NULL && next->oe_start <= end_index)
	if (next != NULL && next->oe_start <= end_index) {
		/* complex mode - overlapped with the next extent,
		 * this case will be handled by osc_extent_find() */
		GOTO(out, rc = -EAGAIN);
		rc = -EAGAIN;
		goto out;
	}

	ext->oe_end = end_index;
	ext->oe_grants += chunksize;
@@ -1495,12 +1540,16 @@ static int osc_enter_cache(const struct lu_env *env, struct client_obd *cli,
	 * of queued writes and create a discontiguous rpc stream */
	if (OBD_FAIL_CHECK(OBD_FAIL_OSC_NO_GRANT) ||
	    cli->cl_dirty_max < PAGE_CACHE_SIZE     ||
	    cli->cl_ar.ar_force_sync || loi->loi_ar.ar_force_sync)
		GOTO(out, rc = -EDQUOT);
	    cli->cl_ar.ar_force_sync || loi->loi_ar.ar_force_sync) {
		rc = -EDQUOT;
		goto out;
	}

	/* Hopefully normal case - cache space and write credits available */
	if (osc_enter_cache_try(cli, oap, bytes, 0))
		GOTO(out, rc = 0);
	if (osc_enter_cache_try(cli, oap, bytes, 0)) {
		rc = 0;
		goto out;
	}

	/* We can get here for two reasons: too many dirty pages in cache, or
	 * run out of grants. In both cases we should write dirty pages out.
@@ -1528,16 +1577,18 @@ static int osc_enter_cache(const struct lu_env *env, struct client_obd *cli,
		/* l_wait_event is interrupted by signal */
		if (rc < 0) {
			list_del_init(&ocw.ocw_entry);
			GOTO(out, rc);
			goto out;
		}

		LASSERT(list_empty(&ocw.ocw_entry));
		rc = ocw.ocw_rc;

		if (rc != -EDQUOT)
			GOTO(out, rc);
		if (osc_enter_cache_try(cli, oap, bytes, 0))
			GOTO(out, rc = 0);
			goto out;
		if (osc_enter_cache_try(cli, oap, bytes, 0)) {
			rc = 0;
			goto out;
		}
	}
out:
	client_obd_list_unlock(&cli->cl_loi_list_lock);
@@ -2399,14 +2450,15 @@ int osc_flush_async_page(const struct lu_env *env, struct cl_io *io,
		 * one making the extent active, we could deadlock waiting for
		 * the page writeback to clear but it won't because the extent
		 * is active and won't be written out. */
		GOTO(out, rc = -EAGAIN);
		rc = -EAGAIN;
		goto out;
	default:
		break;
	}

	rc = cl_page_prep(env, io, cl_page_top(cp), CRT_WRITE);
	if (rc)
		GOTO(out, rc);
		goto out;

	spin_lock(&oap->oap_lock);
	oap->oap_async_flags |= ASYNC_READY|ASYNC_URGENT;