Whamcloud - gitweb
LU-6042 osc: osc_object_ast_clear() LBUG
[fs/lustre-release.git] / lustre / osc / osc_request.c
index cc065cc..6b90eff 100644 (file)
@@ -27,7 +27,7 @@
  * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  *
- * Copyright (c) 2011, 2013, Intel Corporation.
+ * Copyright (c) 2011, 2014, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
@@ -697,7 +697,7 @@ static void osc_announce_cached(struct client_obd *cli, struct obdo *oa,
         LASSERT(!(oa->o_valid & bits));
 
        oa->o_valid |= bits;
-       client_obd_list_lock(&cli->cl_loi_list_lock);
+       spin_lock(&cli->cl_loi_list_lock);
        oa->o_dirty = cli->cl_dirty_pages << PAGE_CACHE_SHIFT;
        if (unlikely(cli->cl_dirty_pages - cli->cl_dirty_transit >
                     cli->cl_dirty_max_pages)) {
@@ -732,7 +732,7 @@ static void osc_announce_cached(struct client_obd *cli, struct obdo *oa,
        oa->o_grant = cli->cl_avail_grant + cli->cl_reserved_grant;
         oa->o_dropped = cli->cl_lost_grant;
         cli->cl_lost_grant = 0;
-        client_obd_list_unlock(&cli->cl_loi_list_lock);
+       spin_unlock(&cli->cl_loi_list_lock);
         CDEBUG(D_CACHE,"dirty: "LPU64" undirty: %u dropped %u grant: "LPU64"\n",
                oa->o_dirty, oa->o_undirty, oa->o_dropped, oa->o_grant);
 
@@ -748,9 +748,9 @@ void osc_update_next_shrink(struct client_obd *cli)
 
 static void __osc_update_grant(struct client_obd *cli, obd_size grant)
 {
-        client_obd_list_lock(&cli->cl_loi_list_lock);
-        cli->cl_avail_grant += grant;
-        client_obd_list_unlock(&cli->cl_loi_list_lock);
+       spin_lock(&cli->cl_loi_list_lock);
+       cli->cl_avail_grant += grant;
+       spin_unlock(&cli->cl_loi_list_lock);
 }
 
 static void osc_update_grant(struct client_obd *cli, struct ost_body *body)
@@ -788,10 +788,10 @@ out:
 
 static void osc_shrink_grant_local(struct client_obd *cli, struct obdo *oa)
 {
-        client_obd_list_lock(&cli->cl_loi_list_lock);
-        oa->o_grant = cli->cl_avail_grant / 4;
-        cli->cl_avail_grant -= oa->o_grant;
-        client_obd_list_unlock(&cli->cl_loi_list_lock);
+       spin_lock(&cli->cl_loi_list_lock);
+       oa->o_grant = cli->cl_avail_grant / 4;
+       cli->cl_avail_grant -= oa->o_grant;
+       spin_unlock(&cli->cl_loi_list_lock);
         if (!(oa->o_valid & OBD_MD_FLFLAGS)) {
                 oa->o_valid |= OBD_MD_FLFLAGS;
                 oa->o_flags = 0;
@@ -809,10 +809,10 @@ static int osc_shrink_grant(struct client_obd *cli)
        __u64 target_bytes = (cli->cl_max_rpcs_in_flight + 1) *
                             (cli->cl_max_pages_per_rpc << PAGE_CACHE_SHIFT);
 
-       client_obd_list_lock(&cli->cl_loi_list_lock);
+       spin_lock(&cli->cl_loi_list_lock);
        if (cli->cl_avail_grant <= target_bytes)
                target_bytes = cli->cl_max_pages_per_rpc << PAGE_CACHE_SHIFT;
-       client_obd_list_unlock(&cli->cl_loi_list_lock);
+       spin_unlock(&cli->cl_loi_list_lock);
 
        return osc_shrink_grant_to_target(cli, target_bytes);
 }
@@ -823,7 +823,7 @@ int osc_shrink_grant_to_target(struct client_obd *cli, __u64 target_bytes)
        struct ost_body        *body;
        ENTRY;
 
-       client_obd_list_lock(&cli->cl_loi_list_lock);
+       spin_lock(&cli->cl_loi_list_lock);
        /* Don't shrink if we are already above or below the desired limit
         * We don't want to shrink below a single RPC, as that will negatively
         * impact block allocation and long-term performance. */
@@ -831,10 +831,10 @@ int osc_shrink_grant_to_target(struct client_obd *cli, __u64 target_bytes)
                target_bytes = cli->cl_max_pages_per_rpc << PAGE_CACHE_SHIFT;
 
        if (target_bytes >= cli->cl_avail_grant) {
-               client_obd_list_unlock(&cli->cl_loi_list_lock);
+               spin_unlock(&cli->cl_loi_list_lock);
                RETURN(0);
        }
-       client_obd_list_unlock(&cli->cl_loi_list_lock);
+       spin_unlock(&cli->cl_loi_list_lock);
 
        OBD_ALLOC_PTR(body);
        if (!body)
@@ -842,10 +842,10 @@ int osc_shrink_grant_to_target(struct client_obd *cli, __u64 target_bytes)
 
        osc_announce_cached(cli, &body->oa, 0);
 
-       client_obd_list_lock(&cli->cl_loi_list_lock);
+       spin_lock(&cli->cl_loi_list_lock);
        body->oa.o_grant = cli->cl_avail_grant - target_bytes;
        cli->cl_avail_grant = target_bytes;
-        client_obd_list_unlock(&cli->cl_loi_list_lock);
+       spin_unlock(&cli->cl_loi_list_lock);
         if (!(body->oa.o_valid & OBD_MD_FLFLAGS)) {
                 body->oa.o_valid |= OBD_MD_FLFLAGS;
                 body->oa.o_flags = 0;
@@ -933,7 +933,7 @@ static void osc_init_grant(struct client_obd *cli, struct obd_connect_data *ocd)
         * race is tolerable here: if we're evicted, but imp_state already
         * left EVICTED state, then cl_dirty_pages must be 0 already.
         */
-       client_obd_list_lock(&cli->cl_loi_list_lock);
+       spin_lock(&cli->cl_loi_list_lock);
        if (cli->cl_import->imp_state == LUSTRE_IMP_EVICTED)
                cli->cl_avail_grant = ocd->ocd_grant;
        else
@@ -951,7 +951,7 @@ static void osc_init_grant(struct client_obd *cli, struct obd_connect_data *ocd)
 
        /* determine the appropriate chunk size used by osc_extent. */
        cli->cl_chunkbits = max_t(int, PAGE_CACHE_SHIFT, ocd->ocd_blocksize);
-       client_obd_list_unlock(&cli->cl_loi_list_lock);
+       spin_unlock(&cli->cl_loi_list_lock);
 
        CDEBUG(D_CACHE, "%s, setting cl_avail_grant: %ld cl_lost_grant: %ld."
                "chunk bits: %d.\n", cli->cl_import->imp_obd->obd_name,
@@ -1736,7 +1736,7 @@ static int brw_interpret(const struct lu_env *env,
        osc_release_ppga(aa->aa_ppga, aa->aa_page_count);
        ptlrpc_lprocfs_brw(req, req->rq_bulk->bd_nob_transferred);
 
-       client_obd_list_lock(&cli->cl_loi_list_lock);
+       spin_lock(&cli->cl_loi_list_lock);
        /* We need to decrement before osc_ap_completion->osc_wake_cache_waiters
         * is called so we know whether to go to sync BRWs or wait for more
         * RPCs to complete */
@@ -1745,7 +1745,7 @@ static int brw_interpret(const struct lu_env *env,
        else
                cli->cl_r_in_flight--;
        osc_wake_cache_waiters(cli);
-       client_obd_list_unlock(&cli->cl_loi_list_lock);
+       spin_unlock(&cli->cl_loi_list_lock);
 
        osc_io_unplug(env, cli, NULL, PDL_POLICY_SAME);
        RETURN(rc);
@@ -1920,7 +1920,7 @@ int osc_build_rpc(const struct lu_env *env, struct client_obd *cli,
        if (tmp != NULL)
                tmp->oap_request = ptlrpc_request_addref(req);
 
-       client_obd_list_lock(&cli->cl_loi_list_lock);
+       spin_lock(&cli->cl_loi_list_lock);
        starting_offset >>= PAGE_CACHE_SHIFT;
        if (cmd == OBD_BRW_READ) {
                cli->cl_r_in_flight++;
@@ -1935,7 +1935,7 @@ int osc_build_rpc(const struct lu_env *env, struct client_obd *cli,
                lprocfs_oh_tally_log2(&cli->cl_write_offset_hist,
                                      starting_offset + 1);
        }
-       client_obd_list_unlock(&cli->cl_loi_list_lock);
+       spin_unlock(&cli->cl_loi_list_lock);
 
        DEBUG_REQ(D_INODE, req, "%d pages, aa %p. now %ur/%uw in flight",
                  page_count, aa, cli->cl_r_in_flight,
@@ -2763,13 +2763,13 @@ static int osc_reconnect(const struct lu_env *env,
         if (data != NULL && (data->ocd_connect_flags & OBD_CONNECT_GRANT)) {
                 long lost_grant;
 
-               client_obd_list_lock(&cli->cl_loi_list_lock);
+               spin_lock(&cli->cl_loi_list_lock);
                data->ocd_grant = (cli->cl_avail_grant +
                                  (cli->cl_dirty_pages << PAGE_CACHE_SHIFT)) ?:
                                  2 * cli_brw_size(obd);
-                lost_grant = cli->cl_lost_grant;
-                cli->cl_lost_grant = 0;
-                client_obd_list_unlock(&cli->cl_loi_list_lock);
+               lost_grant = cli->cl_lost_grant;
+               cli->cl_lost_grant = 0;
+               spin_unlock(&cli->cl_loi_list_lock);
 
                 CDEBUG(D_RPCTRACE, "ocd_connect_flags: "LPX64" ocd_version: %d"
                       " ocd_grant: %d, lost: %ld.\n", data->ocd_connect_flags,
@@ -2820,10 +2820,10 @@ static int osc_import_event(struct obd_device *obd,
         switch (event) {
         case IMP_EVENT_DISCON: {
                 cli = &obd->u.cli;
-                client_obd_list_lock(&cli->cl_loi_list_lock);
-                cli->cl_avail_grant = 0;
-                cli->cl_lost_grant = 0;
-                client_obd_list_unlock(&cli->cl_loi_list_lock);
+               spin_lock(&cli->cl_loi_list_lock);
+               cli->cl_avail_grant = 0;
+               cli->cl_lost_grant = 0;
+               spin_unlock(&cli->cl_loi_list_lock);
                 break;
         }
         case IMP_EVENT_INACTIVE: {
@@ -3082,12 +3082,12 @@ int osc_process_config_base(struct obd_device *obd, struct lustre_cfg *lcfg)
        return rc > 0 ? 0: rc;
 }
 
-static int osc_process_config(struct obd_device *obd, obd_count len, void *buf)
+static int osc_process_config(struct obd_device *obd, size_t len, void *buf)
 {
         return osc_process_config_base(obd, buf);
 }
 
-struct obd_ops osc_obd_ops = {
+static struct obd_ops osc_obd_ops = {
         .o_owner                = THIS_MODULE,
         .o_setup                = osc_setup,
         .o_precleanup           = osc_precleanup,
@@ -3116,10 +3116,7 @@ struct obd_ops osc_obd_ops = {
         .o_quotacheck           = osc_quotacheck,
 };
 
-extern struct lu_kmem_descr osc_caches[];
-extern struct lock_class_key osc_ast_guard_class;
-
-int __init osc_init(void)
+static int __init osc_init(void)
 {
        bool enable_proc = true;
        struct obd_type *type;