PERFORCE change 165574 for review
Aditya Sarawgi
truncs at FreeBSD.org
Fri Jul 3 19:21:32 UTC 2009
http://perforce.freebsd.org/chv.cgi?CH=165574
Change 165574 by truncs at aditya on 2009/07/03 19:20:53
Introducing ext2_hashalloc and ext2_alloccg to find a new block. Currently preallocation is not implemented and preallocation.
Affected files ...
.. //depot/projects/soc2009/soc_ext2fs/src/sys/gnu/fs/ext2fs/ext2_alloc.c#25 edit
Differences ...
==== //depot/projects/soc2009/soc_ext2fs/src/sys/gnu/fs/ext2fs/ext2_alloc.c#25 (text+ko) ====
@@ -107,7 +107,7 @@
{
struct m_ext2fs *fs;
int32_t bno;
-
+ int cg;
*bnp = 0;
fs = ip->i_e2fs;
#ifdef DIAGNOSTIC
@@ -126,7 +126,21 @@
goto nospace;
if (bpref >= fs->e2fs->e2fs_bcount)
bpref = 0;
- /* call the Linux code */
+ if (bpref == 0)
+ cg = ino_to_cg(fs, ip->i_number);
+ else
+ cg = dtog(fs, bpref);
+ bno = (daddr_t)ext2_hashalloc(ip, cg, bpref, fs->e2fs_bsize,
+ ext2_alloccg);
+ if (bno > 0) {
+ ip->i_blocks += btodb(fs->e2fs_bsize);
+ ip->i_flag |= IN_CHANGE | IN_UPDATE;
+ *bnp = bno;
+ return (0);
+ }
+
+
+#ifdef notused
#ifdef EXT2_PREALLOCATE
/* To have a preallocation hit, we must
* - have at least one block preallocated
@@ -171,6 +185,7 @@
*bnp = bno;
return (0);
}
+#endif
nospace:
ext2_fserr(fs, cred->cr_uid, "file system full");
uprintf("\n%s: write failed, file system is full\n", fs->e2fs_fsmnt);
@@ -727,7 +742,6 @@
bno = ext2_mapsearch(fs, bbp, bpref);
if (bno < 0){
- unlock_super(DEVVP(ip));
return (0);
}
gotit:
More information about the p4-projects
mailing list