Whamcloud - gitweb
Branch HEAD
[fs/lustre-release.git] / lustre / fld / fld_request.c
index 8a6a186..29a2813 100644 (file)
@@ -1,30 +1,45 @@
-/* -*- MODE: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
+/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
  * vim:expandtab:shiftwidth=8:tabstop=8:
  *
- *  lustre/fld/fld_request.c
- *  FLD (Fids Location Database)
+ * GPL HEADER START
  *
- *  Copyright (C) 2006 Cluster File Systems, Inc.
- *   Author: Yury Umanets <umka@clusterfs.com>
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
- *   This file is part of the Lustre file system, http://www.lustre.org
- *   Lustre is a trademark of Cluster File Systems, Inc.
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 only,
+ * as published by the Free Software Foundation.
  *
- *   You may have signed or agreed to another license before downloading
- *   this software.  If so, you are bound by the terms and conditions
- *   of that agreement, and the following does not apply to you.  See the
- *   LICENSE file included with this distribution for more information.
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License version 2 for more details (a copy is included
+ * in the LICENSE file that accompanied this code).
  *
- *   If you did not agree to a different license, then this copy of Lustre
- *   is open source software; you can redistribute it and/or modify it
- *   under the terms of version 2 of the GNU General Public License as
- *   published by the Free Software Foundation.
+ * You should have received a copy of the GNU General Public License
+ * version 2 along with this program; If not, see
+ * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
  *
- *   In either case, Lustre is distributed in the hope that it will be
- *   useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- *   of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   license text for more details.
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ *
+ * GPL HEADER END
+ */
+/*
+ * Copyright  2008 Sun Microsystems, Inc. All rights reserved
+ * Use is subject to license terms.
  */
+/*
+ * This file is part of Lustre, http://www.lustre.org/
+ * Lustre is a trademark of Sun Microsystems, Inc.
+ *
+ * lustre/fld/fld_request.c
+ *
+ * FLD (Fids Location Database)
+ *
+ * Author: Yury Umanets <umka@clusterfs.com>
+ */
+
 #ifndef EXPORT_SYMTAB
 # define EXPORT_SYMTAB
 #endif
@@ -73,7 +88,7 @@ static void fld_enter_request(struct client_obd *cli)
         spin_lock(&cli->cl_loi_list_lock);
         if (cli->cl_r_in_flight >= cli->cl_max_rpcs_in_flight) {
                 list_add_tail(&mcw.mcw_entry, &cli->cl_cache_waiters);
-                init_waitqueue_head(&mcw.mcw_waitq);
+                cfs_waitq_init(&mcw.mcw_waitq);
                 spin_unlock(&cli->cl_loi_list_lock);
                 l_wait_event(mcw.mcw_waitq, fld_req_avail(cli, &mcw), &lwi);
         } else {
@@ -99,7 +114,7 @@ static void fld_exit_request(struct client_obd *cli)
                 mcw = list_entry(l, struct mdc_cache_waiter, mcw_entry);
                 list_del_init(&mcw->mcw_entry);
                 cli->cl_r_in_flight++;
-                wake_up(&mcw->mcw_waitq);
+                cfs_waitq_signal(&mcw->mcw_waitq);
         }
         spin_unlock(&cli->cl_loi_list_lock);
 }
@@ -369,7 +384,7 @@ int fld_client_init(struct lu_client_fld *fld,
         spin_lock_init(&fld->lcf_lock);
         fld->lcf_hash = &fld_hash[hash];
         fld->lcf_flags = LUSTRE_FLD_INIT;
-        INIT_LIST_HEAD(&fld->lcf_targets);
+        CFS_INIT_LIST_HEAD(&fld->lcf_targets);
 
 #ifdef __KERNEL__
         cache_size = FLD_CLIENT_CACHE_SIZE /
@@ -456,6 +471,7 @@ static int fld_client_rpc(struct obd_export *exp,
 
         ptlrpc_request_set_replen(req);
         req->rq_request_portal = FLD_REQUEST_PORTAL;
+        ptlrpc_at_set_req_timeout(req);
 
         if (fld_op != FLD_LOOKUP)
                 mdc_get_rpc_lock(exp->exp_obd->u.cli.cl_rpc_lock, NULL);
@@ -598,6 +614,16 @@ int fld_client_lookup(struct lu_client_fld *fld,
 #ifdef __KERNEL__
         }
 #endif
+        if (seq < FID_SEQ_START) {
+                /*
+                 * The current solution for IGIF is to bind it to mds0.
+                 * In the future, this should be fixed once IGIF can be found
+                 * in FLD.
+                 */ 
+                md_fld.mf_mds = 0;
+                rc = 0;
+        }
+
         if (rc == 0) {
                 *mds = md_fld.mf_mds;
 
@@ -621,4 +647,3 @@ void fld_client_flush(struct lu_client_fld *fld)
 #endif
 }
 EXPORT_SYMBOL(fld_client_flush);
-