Details
-
Bug
-
Resolution: Fixed
-
Minor
-
Lustre 2.5.0
-
3
-
10903
Description
Using the coccinelle script below we can easily find statements of the form GOTO(label, -ERRNO):
@@ identifier I; expression E; @@ * GOTO(I, -E)
Here are the results:
diff =
diff -u -p lustre/mdt/mdt_xattr.c /tmp/nothing/mdt/mdt_xattr.c
--- lustre/mdt/mdt_xattr.c
+++ /tmp/nothing/mdt/mdt_xattr.c
@@ -419,7 +419,6 @@ int mdt_reint_setxattr(struct mdt_thread
sizeof(XATTR_NAME_ACL_DEFAULT) - 1) == 0)) {
/* currently lustre limit acl access size */
if (xattr_len > LUSTRE_POSIX_ACL_MAX_SIZE)
- GOTO(out, -ERANGE);
}
lockpart = MDS_INODELOCK_UPDATE;
diff -u -p lustre/quota/qsd_request.c /tmp/nothing/quota/qsd_request.c
--- lustre/quota/qsd_request.c
+++ /tmp/nothing/quota/qsd_request.c
@@ -287,7 +287,6 @@ int qsd_intent_lock(const struct lu_env
lock = ldlm_handle2lock(&qti->qti_lockh);
if (lock == NULL) {
ptlrpc_req_finished(req);
- GOTO(out, -ENOLCK);
}
lu_ref_add(&qqi->qqi_reference, "glb_lock", lock);
LDLM_LOCK_PUT(lock);
diff -u -p lustre/ldlm/ldlm_inodebits.c /tmp/nothing/ldlm/ldlm_inodebits.c
--- lustre/ldlm/ldlm_inodebits.c
+++ /tmp/nothing/ldlm/ldlm_inodebits.c
@@ -228,7 +228,6 @@ int ldlm_process_inodebits_lock(struct l
LDLM_WORK_BL_AST);
lock_res(res);
if (rc == -ERESTART)
- GOTO(restart, -ERESTART);
*flags |= LDLM_FL_BLOCK_GRANTED;
} else {
ldlm_resource_unlink_lock(lock);
diff -u -p lustre/ldlm/ldlm_flock.c /tmp/nothing/ldlm/ldlm_flock.c
--- lustre/ldlm/ldlm_flock.c
+++ /tmp/nothing/ldlm/ldlm_flock.c
@@ -602,7 +602,6 @@ restart:
LDLM_WORK_CP_AST);
lock_res_and_lock(req);
if (rc == -ERESTART)
- GOTO(restart, -ERESTART);
}
} else {
LASSERT(req->l_completion_ast);
@@ -184,7 +184,6 @@ int ldlm_process_plain_lock(struct ldlm_
LDLM_WORK_BL_AST);
lock_res(res);
if (rc == -ERESTART)
- GOTO(restart, -ERESTART);
*flags |= LDLM_FL_BLOCK_GRANTED;
} else {
ldlm_resource_unlink_lock(lock);
@@ -783,7 +783,6 @@ int ldlm_process_extent_lock(struct ldlm
GOTO(out, rc = 0);
}
- GOTO(restart, -ERESTART);
}
/* this way we force client to wait for the lock
diff -u -p lustre/osd-zfs/osd_io.c /tmp/nothing/osd-zfs/osd_io.c
--- lustre/osd-zfs/osd_io.c
+++ /tmp/nothing/osd-zfs/osd_io.c
@@ -351,7 +351,6 @@ static int osd_bufs_get_write(const stru
abuf = dmu_request_arcbuf(obj->oo_db, bs);
if (unlikely(abuf == NULL))
- GOTO(out_err, -ENOMEM);
cfs_atomic_inc(&osd->od_zerocopy_loan);
@@ -402,7 +401,6 @@ static int osd_bufs_get_write(const stru
lnb[i].page = alloc_page(OSD_GFP_IO);
if (unlikely(lnb[i].page == NULL))
- GOTO(out_err, -ENOMEM);
LASSERT(lnb[i].page->mapping == NULL);
lnb[i].page->mapping = (void *)obj;
diff -u -p lustre/obdclass/genops.c /tmp/nothing/obdclass/genops.c
--- lustre/obdclass/genops.c
+++ /tmp/nothing/obdclass/genops.c
@@ -671,26 +671,22 @@ int obd_init_caches(void)
sizeof(struct obd_device),
0, 0, NULL);
if (!obd_device_cachep)
- GOTO(out, -ENOMEM);
LASSERT(obdo_cachep == NULL);
obdo_cachep = kmem_cache_create("ll_obdo_cache", sizeof(struct obdo),
0, 0, NULL);
if (!obdo_cachep)
- GOTO(out, -ENOMEM);
LASSERT(import_cachep == NULL);
import_cachep = kmem_cache_create("ll_import_cache",
sizeof(struct obd_import),
0, 0, NULL);
if (!import_cachep)
- GOTO(out, -ENOMEM);
LASSERT(capa_cachep == NULL);
capa_cachep = kmem_cache_create("capa_cache", sizeof(struct obd_capa),
0, 0, NULL);
if (!capa_cachep)
- GOTO(out, -ENOMEM);
RETURN(0);
out:
Note that despite its format, the coccinelle output is not to be taken as a literal patch. Also the LDLM GOTOs are not bugs per-se.