]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - fs/udf/ialloc.c
Merge tag 'v2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / fs / udf / ialloc.c
index 75d9304d0dc3a8c6b30ebbfab209677a0c78289f..6fb7e0adcda0f1f93ced150f7e4ab727a36a17cb 100644 (file)
@@ -92,28 +92,19 @@ struct inode *udf_new_inode(struct inode *dir, int mode, int *err)
                return NULL;
        }
 
-       mutex_lock(&sbi->s_alloc_mutex);
        if (sbi->s_lvid_bh) {
-               struct logicalVolIntegrityDesc *lvid =
-                       (struct logicalVolIntegrityDesc *)
-                       sbi->s_lvid_bh->b_data;
-               struct logicalVolIntegrityDescImpUse *lvidiu =
-                                                       udf_sb_lvidiu(sbi);
-               struct logicalVolHeaderDesc *lvhd;
-               uint64_t uniqueID;
-               lvhd = (struct logicalVolHeaderDesc *)
-                               (lvid->logicalVolContentsUse);
+               struct logicalVolIntegrityDescImpUse *lvidiu;
+
+               iinfo->i_unique = lvid_get_unique_id(sb);
+               mutex_lock(&sbi->s_alloc_mutex);
+               lvidiu = udf_sb_lvidiu(sbi);
                if (S_ISDIR(mode))
                        le32_add_cpu(&lvidiu->numDirs, 1);
                else
                        le32_add_cpu(&lvidiu->numFiles, 1);
-               iinfo->i_unique = uniqueID = le64_to_cpu(lvhd->uniqueID);
-               if (!(++uniqueID & 0x00000000FFFFFFFFUL))
-                       uniqueID += 16;
-               lvhd->uniqueID = cpu_to_le64(uniqueID);
                udf_updated_lvid(sb);
+               mutex_unlock(&sbi->s_alloc_mutex);
        }
-       mutex_unlock(&sbi->s_alloc_mutex);
 
        inode_init_owner(inode, dir, mode);