Whamcloud - gitweb
b=24037 Changes of 2.6.32 kernel.
[fs/lustre-release.git] / lustre / obdfilter / filter.c
index bff5eba..530762d 100644 (file)
@@ -1195,7 +1195,7 @@ static int filter_prep_groups(struct obd_device *obd)
         loff_t off = 0;
         ENTRY;
 
-        O_dentry = simple_mkdir(current->fs->pwd, obd->u.obt.obt_vfsmnt,
+        O_dentry = simple_mkdir(cfs_fs_pwd(current->fs), obd->u.obt.obt_vfsmnt,
                                 "O", 0700, 1);
         CDEBUG(D_INODE, "got/created O: %p\n", O_dentry);
         if (IS_ERR(O_dentry)) {
@@ -1724,7 +1724,7 @@ static int filter_intent_policy(struct ldlm_namespace *ns,
         if (rc == LDLM_ITER_CONTINUE) {
                 /* do not grant locks to the liblustre clients: they cannot
                  * handle ASTs robustly.  We need to do this while still
-                 * holding ns_lock to avoid the lock remaining on the res_link
+                 * holding lr_lock to avoid the lock remaining on the res_link
                  * list (and potentially being added to l_pending_list by an
                  * AST) when we are going to drop this lock ASAP. */
                 if (lock->l_export->exp_libclient ||
@@ -1747,7 +1747,7 @@ static int filter_intent_policy(struct ldlm_namespace *ns,
         *reply_lvb = *res_lvb;
 
         /*
-         * ->ns_lock guarantees that no new locks are granted, and,
+         * lr_lock guarantees that no new locks are granted, and,
          * therefore, that res->lr_lvb_data cannot increase beyond the
          * end of already granted lock. As a result, it is safe to
          * check against "stale" reply_lvb->lvb_size value without
@@ -1948,7 +1948,7 @@ int filter_common_setup(struct obd_device *obd, struct lustre_cfg* lcfg,
         __u8 *uuid_ptr;
         char *str, *label;
         char ns_name[48];
-        request_queue_t *q;
+        struct request_queue *q;
         int rc, i;
         ENTRY;
 
@@ -2059,8 +2059,10 @@ int filter_common_setup(struct obd_device *obd, struct lustre_cfg* lcfg,
                 GOTO(err_post, rc = -ENOMEM);
 
         sprintf(ns_name, "filter-%s", obd->obd_uuid.uuid);
-        obd->obd_namespace = ldlm_namespace_new(obd, ns_name, LDLM_NAMESPACE_SERVER,
-                                                LDLM_NAMESPACE_GREEDY);
+        obd->obd_namespace = ldlm_namespace_new(obd, ns_name,
+                                                LDLM_NAMESPACE_SERVER,
+                                                LDLM_NAMESPACE_GREEDY,
+                                                LDLM_NS_TYPE_OST);
         if (obd->obd_namespace == NULL)
                 GOTO(err_post, rc = -ENOMEM);
         obd->obd_namespace->ns_lvbp = obd;
@@ -2086,13 +2088,13 @@ int filter_common_setup(struct obd_device *obd, struct lustre_cfg* lcfg,
                 GOTO(err_post, rc);
 
         q = bdev_get_queue(mnt->mnt_sb->s_bdev);
-        if (q->max_sectors < q->max_hw_sectors &&
-            q->max_sectors < PTLRPC_MAX_BRW_SIZE >> 9)
+        if (queue_max_sectors(q) < queue_max_hw_sectors(q) &&
+            queue_max_sectors(q) < PTLRPC_MAX_BRW_SIZE >> 9)
                 LCONSOLE_INFO("%s: underlying device %s should be tuned "
                               "for larger I/O requests: max_sectors = %u "
                               "could be up to max_hw_sectors=%u\n",
                               obd->obd_name, mnt->mnt_sb->s_id,
-                              q->max_sectors, q->max_hw_sectors);
+                              queue_max_sectors(q), queue_max_hw_sectors(q));
 
         uuid_ptr = fsfilt_uuid(obd, obd->u.obt.obt_sb);
         if (uuid_ptr != NULL) {
@@ -2600,7 +2602,7 @@ static int filter_cleanup(struct obd_device *obd)
 
         filter_post(obd);
 
-        LL_DQUOT_OFF(obd->u.obt.obt_sb);
+        ll_vfs_dq_off(obd->u.obt.obt_sb, 0);
         shrink_dcache_sb(obd->u.obt.obt_sb);
 
         server_put_mount(obd->obd_name, obd->u.obt.obt_vfsmnt);
@@ -3276,7 +3278,10 @@ int filter_setattr_internal(struct obd_export *exp, struct dentry *dentry,
         * we have two left for the last_rcvd and VBR inode version updates. */
         err = fsfilt_extend(exp->exp_obd, inode, 2, handle);
 
-        rc = filter_finish_transno(exp, inode, oti, rc, sync);
+        /* Update inode version only if data has changed => size has changed */
+        rc = filter_finish_transno(exp, ia_valid & ATTR_SIZE ? inode : NULL,
+                                   oti, rc, sync);
+
         if (sync) {
                 filter_cancel_cookies_cb(exp->exp_obd, 0, fcc, rc);
                 fcc = NULL;