|
@@ -1201,6 +1201,7 @@ static void udf_fill_inode(struct inode *inode, struct buffer_head *bh)
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ read_lock(&sbi->s_cred_lock);
|
|
inode->i_uid = le32_to_cpu(fe->uid);
|
|
inode->i_uid = le32_to_cpu(fe->uid);
|
|
if (inode->i_uid == -1 ||
|
|
if (inode->i_uid == -1 ||
|
|
UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_UID_IGNORE) ||
|
|
UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_UID_IGNORE) ||
|
|
@@ -1213,13 +1214,6 @@ static void udf_fill_inode(struct inode *inode, struct buffer_head *bh)
|
|
UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_GID_SET))
|
|
UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_GID_SET))
|
|
inode->i_gid = UDF_SB(inode->i_sb)->s_gid;
|
|
inode->i_gid = UDF_SB(inode->i_sb)->s_gid;
|
|
|
|
|
|
- inode->i_nlink = le16_to_cpu(fe->fileLinkCount);
|
|
|
|
- if (!inode->i_nlink)
|
|
|
|
- inode->i_nlink = 1;
|
|
|
|
-
|
|
|
|
- inode->i_size = le64_to_cpu(fe->informationLength);
|
|
|
|
- iinfo->i_lenExtents = inode->i_size;
|
|
|
|
-
|
|
|
|
if (fe->icbTag.fileType != ICBTAG_FILE_TYPE_DIRECTORY &&
|
|
if (fe->icbTag.fileType != ICBTAG_FILE_TYPE_DIRECTORY &&
|
|
sbi->s_fmode != UDF_INVALID_MODE)
|
|
sbi->s_fmode != UDF_INVALID_MODE)
|
|
inode->i_mode = sbi->s_fmode;
|
|
inode->i_mode = sbi->s_fmode;
|
|
@@ -1229,6 +1223,14 @@ static void udf_fill_inode(struct inode *inode, struct buffer_head *bh)
|
|
else
|
|
else
|
|
inode->i_mode = udf_convert_permissions(fe);
|
|
inode->i_mode = udf_convert_permissions(fe);
|
|
inode->i_mode &= ~sbi->s_umask;
|
|
inode->i_mode &= ~sbi->s_umask;
|
|
|
|
+ read_unlock(&sbi->s_cred_lock);
|
|
|
|
+
|
|
|
|
+ inode->i_nlink = le16_to_cpu(fe->fileLinkCount);
|
|
|
|
+ if (!inode->i_nlink)
|
|
|
|
+ inode->i_nlink = 1;
|
|
|
|
+
|
|
|
|
+ inode->i_size = le64_to_cpu(fe->informationLength);
|
|
|
|
+ iinfo->i_lenExtents = inode->i_size;
|
|
|
|
|
|
if (iinfo->i_efe == 0) {
|
|
if (iinfo->i_efe == 0) {
|
|
inode->i_blocks = le64_to_cpu(fe->logicalBlocksRecorded) <<
|
|
inode->i_blocks = le64_to_cpu(fe->logicalBlocksRecorded) <<
|