Whamcloud - gitweb
LU-6378 osd-ldiskfs: unlock inode before attr_init
[fs/lustre-release.git] / lustre / osd-ldiskfs / osd_handler.c
index 6aa802e..2105a26 100644 (file)
 #define DEBUG_SUBSYSTEM S_OSD
 
 #include <linux/module.h>
+#include <linux/user_namespace.h>
+#ifdef HAVE_UIDGID_HEADER
+# include <linux/uidgid.h>
+#endif
 
 /* LUSTRE_VERSION_CODE */
 #include <lustre_ver.h>
@@ -2197,17 +2201,19 @@ static int __osd_object_create(struct osd_thread_info *info,
 
        result = osd_create_type_f(dof->dof_type)(info, obj, attr, hint, dof,
                                                  th);
-       if (result == 0) {
-               osd_attr_init(info, obj, attr, dof);
-               osd_object_init0(obj);
-       }
-
-       if (obj->oo_inode != NULL) {
+       if (likely(obj->oo_inode != NULL)) {
                LASSERT(obj->oo_inode->i_state & I_NEW);
 
+               /* Unlock the inode before attr initialization to avoid
+                * unnecessary dqget operations. LU-6378 */
                unlock_new_inode(obj->oo_inode);
        }
 
+       if (likely(result == 0)) {
+               osd_attr_init(info, obj, attr, dof);
+               osd_object_init0(obj);
+       }
+
        /* restore previous umask value */
        current->fs->umask = umask;
 
@@ -6249,6 +6255,8 @@ static void __exit osd_mod_exit(void)
 
 MODULE_AUTHOR("Sun Microsystems, Inc. <http://www.lustre.org/>");
 MODULE_DESCRIPTION("Lustre Object Storage Device ("LUSTRE_OSD_LDISKFS_NAME")");
+MODULE_VERSION(LUSTRE_VERSION_STRING);
 MODULE_LICENSE("GPL");
 
-cfs_module(osd, "0.1.0", osd_mod_init, osd_mod_exit);
+module_init(osd_mod_init);
+module_exit(osd_mod_exit);