inode.c (c87e8e90d0da1134e42c89dc89559f4bfe282ef9) inode.c (cbf5676a0e0463f05e5073589f3194846dfb02e7)
1/*
2 * inode.c
3 *
4 * PURPOSE
5 * Inode handling routines for the OSTA-UDF(tm) filesystem.
6 *
7 * COPYRIGHT
8 * This file is distributed under the terms of the GNU General Public

--- 1122 unchanged lines hidden (view full) ---

1131 make_bad_inode(inode);
1132 return;
1133 }
1134 udf_fill_inode(inode, bh);
1135
1136 brelse(bh);
1137}
1138
1/*
2 * inode.c
3 *
4 * PURPOSE
5 * Inode handling routines for the OSTA-UDF(tm) filesystem.
6 *
7 * COPYRIGHT
8 * This file is distributed under the terms of the GNU General Public

--- 1122 unchanged lines hidden (view full) ---

1131 make_bad_inode(inode);
1132 return;
1133 }
1134 udf_fill_inode(inode, bh);
1135
1136 brelse(bh);
1137}
1138
1139static void udf_fill_inode_time(struct timespec *tspec,
1140 const timestamp *tstamp,
1141 struct udf_sb_info *sbi)
1142{
1143 time_t convtime;
1144 long convtime_usec;
1145 if (udf_stamp_to_time(&convtime, &convtime_usec,
1146 lets_to_cpu(*tstamp))) {
1147 tspec->tv_sec = convtime;
1148 tspec->tv_nsec = convtime_usec * 1000;
1149 } else
1150 *tspec = sbi->s_record_time;
1151}
1152
1153static void udf_fill_inode(struct inode *inode, struct buffer_head *bh)
1154{
1155 struct fileEntry *fe;
1156 struct extendedFileEntry *efe;
1157 int offset;
1158 struct udf_sb_info *sbi = UDF_SB(inode->i_sb);
1159 struct udf_inode_info *iinfo = UDF_I(inode);
1160

--- 75 unchanged lines hidden (view full) ---

1236
1237 inode->i_mode = udf_convert_permissions(fe);
1238 inode->i_mode &= ~UDF_SB(inode->i_sb)->s_umask;
1239
1240 if (iinfo->i_efe == 0) {
1241 inode->i_blocks = le64_to_cpu(fe->logicalBlocksRecorded) <<
1242 (inode->i_sb->s_blocksize_bits - 9);
1243
1139static void udf_fill_inode(struct inode *inode, struct buffer_head *bh)
1140{
1141 struct fileEntry *fe;
1142 struct extendedFileEntry *efe;
1143 int offset;
1144 struct udf_sb_info *sbi = UDF_SB(inode->i_sb);
1145 struct udf_inode_info *iinfo = UDF_I(inode);
1146

--- 75 unchanged lines hidden (view full) ---

1222
1223 inode->i_mode = udf_convert_permissions(fe);
1224 inode->i_mode &= ~UDF_SB(inode->i_sb)->s_umask;
1225
1226 if (iinfo->i_efe == 0) {
1227 inode->i_blocks = le64_to_cpu(fe->logicalBlocksRecorded) <<
1228 (inode->i_sb->s_blocksize_bits - 9);
1229
1244 udf_fill_inode_time(&inode->i_atime, &fe->accessTime, sbi);
1245 udf_fill_inode_time(&inode->i_mtime, &fe->modificationTime,
1246 sbi);
1247 udf_fill_inode_time(&inode->i_ctime, &fe->attrTime, sbi);
1230 if (!udf_stamp_to_time(&inode->i_atime,
1231 lets_to_cpu(fe->accessTime)))
1232 inode->i_atime = sbi->s_record_time;
1248
1233
1234 if (!udf_stamp_to_time(&inode->i_mtime,
1235 lets_to_cpu(fe->modificationTime)))
1236 inode->i_mtime = sbi->s_record_time;
1237
1238 if (!udf_stamp_to_time(&inode->i_ctime,
1239 lets_to_cpu(fe->attrTime)))
1240 inode->i_ctime = sbi->s_record_time;
1241
1249 iinfo->i_unique = le64_to_cpu(fe->uniqueID);
1250 iinfo->i_lenEAttr = le32_to_cpu(fe->lengthExtendedAttr);
1251 iinfo->i_lenAlloc = le32_to_cpu(fe->lengthAllocDescs);
1252 offset = sizeof(struct fileEntry) + iinfo->i_lenEAttr;
1253 } else {
1254 inode->i_blocks = le64_to_cpu(efe->logicalBlocksRecorded) <<
1255 (inode->i_sb->s_blocksize_bits - 9);
1256
1242 iinfo->i_unique = le64_to_cpu(fe->uniqueID);
1243 iinfo->i_lenEAttr = le32_to_cpu(fe->lengthExtendedAttr);
1244 iinfo->i_lenAlloc = le32_to_cpu(fe->lengthAllocDescs);
1245 offset = sizeof(struct fileEntry) + iinfo->i_lenEAttr;
1246 } else {
1247 inode->i_blocks = le64_to_cpu(efe->logicalBlocksRecorded) <<
1248 (inode->i_sb->s_blocksize_bits - 9);
1249
1257 udf_fill_inode_time(&inode->i_atime, &efe->accessTime, sbi);
1258 udf_fill_inode_time(&inode->i_mtime, &efe->modificationTime,
1259 sbi);
1260 udf_fill_inode_time(&iinfo->i_crtime, &efe->createTime, sbi);
1261 udf_fill_inode_time(&inode->i_ctime, &efe->attrTime, sbi);
1250 if (!udf_stamp_to_time(&inode->i_atime,
1251 lets_to_cpu(efe->accessTime)))
1252 inode->i_atime = sbi->s_record_time;
1262
1253
1254 if (!udf_stamp_to_time(&inode->i_mtime,
1255 lets_to_cpu(efe->modificationTime)))
1256 inode->i_mtime = sbi->s_record_time;
1257
1258 if (!udf_stamp_to_time(&iinfo->i_crtime,
1259 lets_to_cpu(efe->createTime)))
1260 iinfo->i_crtime = sbi->s_record_time;
1261
1262 if (!udf_stamp_to_time(&inode->i_ctime,
1263 lets_to_cpu(efe->attrTime)))
1264 inode->i_ctime = sbi->s_record_time;
1265
1263 iinfo->i_unique = le64_to_cpu(efe->uniqueID);
1264 iinfo->i_lenEAttr = le32_to_cpu(efe->lengthExtendedAttr);
1265 iinfo->i_lenAlloc = le32_to_cpu(efe->lengthAllocDescs);
1266 offset = sizeof(struct extendedFileEntry) +
1267 iinfo->i_lenEAttr;
1268 }
1269
1270 switch (fe->icbTag.fileType) {

--- 788 unchanged lines hidden ---
1266 iinfo->i_unique = le64_to_cpu(efe->uniqueID);
1267 iinfo->i_lenEAttr = le32_to_cpu(efe->lengthExtendedAttr);
1268 iinfo->i_lenAlloc = le32_to_cpu(efe->lengthAllocDescs);
1269 offset = sizeof(struct extendedFileEntry) +
1270 iinfo->i_lenEAttr;
1271 }
1272
1273 switch (fe->icbTag.fileType) {

--- 788 unchanged lines hidden ---