patch-2.3.29 linux/fs/udf/inode.c
Next file: linux/fs/udf/lowlevel.c
Previous file: linux/fs/udf/file.c
Back to the patch index
Back to the overall index
- Lines: 60
- Date:
Sat Nov 20 16:16:57 1999
- Orig file:
v2.3.28/linux/fs/udf/inode.c
- Orig date:
Mon Nov 1 13:56:27 1999
diff -u --recursive --new-file v2.3.28/linux/fs/udf/inode.c linux/fs/udf/inode.c
@@ -201,8 +201,8 @@
if (isdir)
{
struct udf_fileident_bh sfibh, dfibh;
- int f_pos = UDF_I_EXT0OFFS(inode) >> 2;
- int size = (UDF_I_EXT0OFFS(inode) + inode->i_size) >> 2;
+ loff_t f_pos = UDF_I_EXT0OFFS(inode) >> 2;
+ loff_t size = (UDF_I_EXT0OFFS(inode) + inode->i_size) >> 2;
struct FileIdentDesc cfi, *sfi, *dfi;
sfibh.soffset = sfibh.eoffset = (f_pos & ((inode->i_sb->s_blocksize - 1) >> 2)) << 2;
@@ -383,7 +383,7 @@
pextoffset = cextoffset;
cextoffset = nextoffset;
-
+
if ((etype = udf_next_aext(inode, &cbloc, &nextoffset, &eloc, &elen, &cbh, 1)) == -1)
break;
@@ -701,14 +701,31 @@
(((laarr[i].extLength & UDF_EXTENT_LENGTH_MASK) +
inode->i_sb->s_blocksize - 1) >> inode->i_sb->s_blocksize_bits)))
{
- laarr[i].extLength = laarr[i+1].extLength +
- (((laarr[i].extLength & UDF_EXTENT_LENGTH_MASK) +
- inode->i_sb->s_blocksize - 1) & ~(inode->i_sb->s_blocksize-1));
- if (*endnum > (i+2))
- memmove(&laarr[i+1], &laarr[i+2],
- sizeof(long_ad) * (*endnum - (i+2)));
- i --;
- (*endnum) --;
+ if (((laarr[i].extLength & UDF_EXTENT_LENGTH_MASK) +
+ (laarr[i+1].extLength & UDF_EXTENT_LENGTH_MASK) +
+ inode->i_sb->s_blocksize - 1) & ~UDF_EXTENT_LENGTH_MASK)
+ {
+ laarr[i+1].extLength = (laarr[i+1].extLength -
+ (laarr[i].extLength & UDF_EXTENT_LENGTH_MASK) +
+ UDF_EXTENT_LENGTH_MASK) & ~(inode->i_sb->s_blocksize-1);
+ laarr[i].extLength = (UDF_EXTENT_LENGTH_MASK + 1) -
+ inode->i_sb->s_blocksize;
+ laarr[i+1].extLocation.logicalBlockNum =
+ laarr[i].extLocation.logicalBlockNum +
+ ((laarr[i].extLength & UDF_EXTENT_LENGTH_MASK) >>
+ inode->i_sb->s_blocksize_bits);
+ }
+ else
+ {
+ laarr[i].extLength = laarr[i+1].extLength +
+ (((laarr[i].extLength & UDF_EXTENT_LENGTH_MASK) +
+ inode->i_sb->s_blocksize - 1) & ~(inode->i_sb->s_blocksize-1));
+ if (*endnum > (i+2))
+ memmove(&laarr[i+1], &laarr[i+2],
+ sizeof(long_ad) * (*endnum - (i+2)));
+ i --;
+ (*endnum) --;
+ }
}
}
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)