Whamcloud - gitweb
LU-3318 llite: Always build 64bit ino internally
[fs/lustre-release.git] / lustre / llite / llite_lib.c
index 81916ce..01ddfd2 100644 (file)
@@ -27,7 +27,7 @@
  * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  *
- * Copyright (c) 2011, 2012, Intel Corporation.
+ * Copyright (c) 2011, 2013, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
@@ -529,7 +529,7 @@ static int client_common_fill_super(struct super_block *sb, char *md, char *dt,
 
         LASSERT(fid_is_sane(&sbi->ll_root_fid));
        root = ll_iget(sb, cl_fid_build_ino(&sbi->ll_root_fid,
-                                           ll_need_32bit_api(sbi)),
+                                           sbi->ll_flags & LL_SBI_32BIT_API),
                       &lmd);
         md_free_lustre_md(sbi->ll_md_exp, &lmd);
         ptlrpc_req_finished(request);
@@ -733,9 +733,11 @@ void ll_kill_super(struct super_block *sb)
         /* we need restore s_dev from changed for clustred NFS before put_super
          * because new kernels have cached s_dev and change sb->s_dev in
          * put_super not affected real removing devices */
-        if (sbi)
-                sb->s_dev = sbi->ll_sdev_orig;
-        EXIT;
+       if (sbi) {
+               sb->s_dev = sbi->ll_sdev_orig;
+               sbi->ll_umounting = 1;
+       }
+       EXIT;
 }
 
 char *ll_read_opt(const char *opt, char *data)
@@ -1737,7 +1739,8 @@ void ll_update_inode(struct inode *inode, struct lustre_md *md)
                spin_unlock(&lli->lli_lock);
        }
 #endif
-       inode->i_ino = cl_fid_build_ino(&body->fid1, ll_need_32bit_api(sbi));
+       inode->i_ino = cl_fid_build_ino(&body->fid1,
+                                       sbi->ll_flags & LL_SBI_32BIT_API);
         inode->i_generation = cl_fid_build_gen(&body->fid1);
 
         if (body->valid & OBD_MD_FLATIME) {
@@ -1903,7 +1906,8 @@ void ll_delete_inode(struct inode *inode)
        if (S_ISREG(inode->i_mode) && lli->lli_clob != NULL)
                /* discard all dirty pages before truncating them, required by
                 * osc_extent implementation at LU-1030. */
-               cl_sync_file_range(inode, 0, OBD_OBJECT_EOF, CL_FSYNC_DISCARD);
+               cl_sync_file_range(inode, 0, OBD_OBJECT_EOF,
+                                  CL_FSYNC_DISCARD, 1);
 
         truncate_inode_pages(&inode->i_data, 0);
 
@@ -2087,7 +2091,6 @@ void ll_umount_begin(struct super_block *sb)
                OBD_FREE_PTR(ioc_data);
        }
 
-
         /* Really, we'd like to wait until there are no requests outstanding,
          * and then continue.  For now, we just invalidate the requests,
          * schedule() and sleep one second if needed, and hope.
@@ -2166,7 +2169,7 @@ int ll_prep_inode(struct inode **inode, struct ptlrpc_request *req,
                 LASSERT(fid_is_sane(&md.body->fid1));
 
                *inode = ll_iget(sb, cl_fid_build_ino(&md.body->fid1,
-                                                     ll_need_32bit_api(sbi)),
+                                            sbi->ll_flags & LL_SBI_32BIT_API),
                                 &md);
                 if (*inode == NULL || IS_ERR(*inode)) {
 #ifdef CONFIG_FS_POSIX_ACL