diff options
| -rw-r--r-- | fs/udf/ialloc.c | 41 |
1 files changed, 18 insertions, 23 deletions
diff --git a/fs/udf/ialloc.c b/fs/udf/ialloc.c index c4943c8988c2..a4f2b3ce45b0 100644 --- a/fs/udf/ialloc.c +++ b/fs/udf/ialloc.c | |||
| @@ -76,11 +76,24 @@ struct inode *udf_new_inode(struct inode *dir, int mode, int *err) | |||
| 76 | *err = -ENOSPC; | 76 | *err = -ENOSPC; |
| 77 | 77 | ||
| 78 | iinfo = UDF_I(inode); | 78 | iinfo = UDF_I(inode); |
| 79 | iinfo->i_unique = 0; | 79 | if (UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_USE_EXTENDED_FE)) { |
| 80 | iinfo->i_lenExtents = 0; | 80 | iinfo->i_efe = 1; |
| 81 | iinfo->i_next_alloc_block = 0; | 81 | if (UDF_VERS_USE_EXTENDED_FE > sbi->s_udfrev) |
| 82 | iinfo->i_next_alloc_goal = 0; | 82 | sbi->s_udfrev = UDF_VERS_USE_EXTENDED_FE; |
| 83 | iinfo->i_strat4096 = 0; | 83 | iinfo->i_ext.i_data = kzalloc(inode->i_sb->s_blocksize - |
| 84 | sizeof(struct extendedFileEntry), | ||
| 85 | GFP_KERNEL); | ||
| 86 | } else { | ||
| 87 | iinfo->i_efe = 0; | ||
| 88 | iinfo->i_ext.i_data = kzalloc(inode->i_sb->s_blocksize - | ||
| 89 | sizeof(struct fileEntry), | ||
| 90 | GFP_KERNEL); | ||
| 91 | } | ||
| 92 | if (!iinfo->i_ext.i_data) { | ||
| 93 | iput(inode); | ||
| 94 | *err = -ENOMEM; | ||
| 95 | return NULL; | ||
| 96 | } | ||
| 84 | 97 | ||
| 85 | block = udf_new_block(dir->i_sb, NULL, | 98 | block = udf_new_block(dir->i_sb, NULL, |
| 86 | dinfo->i_location.partitionReferenceNum, | 99 | dinfo->i_location.partitionReferenceNum, |
| @@ -130,24 +143,6 @@ struct inode *udf_new_inode(struct inode *dir, int mode, int *err) | |||
| 130 | iinfo->i_lenEAttr = 0; | 143 | iinfo->i_lenEAttr = 0; |
| 131 | iinfo->i_lenAlloc = 0; | 144 | iinfo->i_lenAlloc = 0; |
| 132 | iinfo->i_use = 0; | 145 | iinfo->i_use = 0; |
| 133 | if (UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_USE_EXTENDED_FE)) { | ||
| 134 | iinfo->i_efe = 1; | ||
| 135 | if (UDF_VERS_USE_EXTENDED_FE > sbi->s_udfrev) | ||
| 136 | sbi->s_udfrev = UDF_VERS_USE_EXTENDED_FE; | ||
| 137 | iinfo->i_ext.i_data = kzalloc(inode->i_sb->s_blocksize - | ||
| 138 | sizeof(struct extendedFileEntry), | ||
| 139 | GFP_KERNEL); | ||
| 140 | } else { | ||
| 141 | iinfo->i_efe = 0; | ||
| 142 | iinfo->i_ext.i_data = kzalloc(inode->i_sb->s_blocksize - | ||
| 143 | sizeof(struct fileEntry), | ||
| 144 | GFP_KERNEL); | ||
| 145 | } | ||
| 146 | if (!iinfo->i_ext.i_data) { | ||
| 147 | iput(inode); | ||
| 148 | *err = -ENOMEM; | ||
| 149 | return NULL; | ||
| 150 | } | ||
| 151 | if (UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_USE_AD_IN_ICB)) | 146 | if (UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_USE_AD_IN_ICB)) |
| 152 | iinfo->i_alloc_type = ICBTAG_FLAG_AD_IN_ICB; | 147 | iinfo->i_alloc_type = ICBTAG_FLAG_AD_IN_ICB; |
| 153 | else if (UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_USE_SHORT_AD)) | 148 | else if (UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_USE_SHORT_AD)) |
