PERFORCE change 182558 for review
Zheng Liu
lz at FreeBSD.org
Wed Aug 18 10:48:50 UTC 2010
http://p4web.freebsd.org/@@182558?ac=10
Change 182558 by lz at gnehzuil-freebsd on 2010/08/18 10:48:17
clean code to generate a patch for submitting it.
Affected files ...
.. //depot/projects/soc2010/extfs/src/sys/fs/ext2fs/ext2_alloc.c#26 edit
.. //depot/projects/soc2010/extfs/src/sys/fs/ext2fs/ext2_balloc.c#6 edit
.. //depot/projects/soc2010/extfs/src/sys/fs/ext2fs/ext2_rsv_win.h#12 edit
.. //depot/projects/soc2010/extfs/src/sys/fs/ext2fs/ext2_vfsops.c#7 edit
.. //depot/projects/soc2010/extfs/src/sys/fs/ext2fs/ext2fs.h#4 edit
.. //depot/projects/soc2010/extfs/src/sys/fs/ext2fs/inode.h#5 edit
Differences ...
==== //depot/projects/soc2010/extfs/src/sys/fs/ext2fs/ext2_alloc.c#26 (text+ko) ====
@@ -52,7 +52,6 @@
#include <fs/ext2fs/ext2_extern.h>
#include <fs/ext2fs/ext2_rsv_win.h>
-/* Just for clear */
#define phy_blk(cg, fs) (((cg) * (fs->e2fs->e2fs_fpg)) + fs->e2fs->e2fs_first_dblock)
static daddr_t ext2_alloccg(struct inode *, int, daddr_t, int);
@@ -122,7 +121,7 @@
if (bpref < 0)
bpref = 0;
- /* Check whther it use reservation window */
+ /* Check whether it use reservation window */
if (rp != NULL) {
/*
* If window's start is not in this cylinder group,
@@ -247,7 +246,7 @@
static void
ext2_remove_rsv_win(struct m_ext2fs *fs, struct ext2_rsv_win *rp)
{
- RB_REMOVE(ext2_rsv_win_tree, &fs->e2fs_rsv_tree, rp);
+ RB_REMOVE(ext2_rsv_win_tree, fs->e2fs_rsv_tree, rp);
rp->rsv_start = EXT2_RSV_NOT_ALLOCATED;
rp->rsv_end = EXT2_RSV_NOT_ALLOCATED;
rp->rsv_alloc_hit = 0;
@@ -314,7 +313,7 @@
rp->rsv_end = start + size - 1;
rp->rsv_alloc_hit = 0;
- RB_INSERT(ext2_rsv_win_tree, &fs->e2fs_rsv_tree, rp);
+ RB_INSERT(ext2_rsv_win_tree, fs->e2fs_rsv_tree, rp);
return (0);
}
@@ -336,7 +335,7 @@
return (-1);
prev = rsv;
- rsv = RB_NEXT(ext2_rsv_win_tree, &fs->e2fs_rsv_tree, rsv);
+ rsv = RB_NEXT(ext2_rsv_win_tree, fs->e2fs_rsv_tree, rsv);
if (rsv == NULL)
break;
@@ -353,7 +352,7 @@
rp->rsv_alloc_hit = 0;
if (prev != rp)
- RB_INSERT(ext2_rsv_win_tree, &fs->e2fs_rsv_tree, rp);
+ RB_INSERT(ext2_rsv_win_tree, fs->e2fs_rsv_tree, rp);
return (0);
}
@@ -419,7 +418,7 @@
EXT2_TREE_LOCK(fs);
- search = ext2_search_rsv(&fs->e2fs_rsv_tree, start);
+ search = ext2_search_rsv(fs->e2fs_rsv_tree, start);
repeat:
ret = ext2_find_rsv(search, rp, fs, start, cg);
==== //depot/projects/soc2010/extfs/src/sys/fs/ext2fs/ext2_balloc.c#6 (text+ko) ====
@@ -79,6 +79,9 @@
fs = ip->i_e2fs;
ump = ip->i_ump;
+ if (ip->i_rsv == NULL)
+ ext2_init_rsv(ip);
+
/*
* check if this is a sequential block allocation.
* If so, increment next_alloc fields to allow ext2_blkpref
@@ -137,11 +140,6 @@
else
nsize = fs->e2fs_bsize;
EXT2_LOCK(ump);
-/*
- error = ext2_alloc(ip, lbn,
- ext2_blkpref(ip, lbn, (int)lbn, &ip->i_db[0], 0),
- nsize, cred, &newb);
-*/
error = ext2_alloc_rsv(ip, lbn,
ext2_blkpref(ip, lbn, (int)lbn, &ip->i_db[0], 0),
nsize, cred, &newb);
@@ -176,11 +174,6 @@
EXT2_LOCK(ump);
pref = ext2_blkpref(ip, lbn, indirs[0].in_off +
EXT2_NDIR_BLOCKS, &ip->i_db[0], 0);
-/*
- if ((error = ext2_alloc(ip, lbn, pref,
- (int)fs->e2fs_bsize, cred, &newb)))
- return (error);
-*/
if ((error = ext2_alloc_rsv(ip, lbn, pref,
(int)fs->e2fs_bsize, cred, &newb)))
return (error);
@@ -222,9 +215,6 @@
if (pref == 0)
pref = ext2_blkpref(ip, lbn, indirs[i].in_off, bap,
bp->b_lblkno);
-/*
- error = ext2_alloc(ip, lbn, pref, (int)fs->e2fs_bsize, cred, &newb);
-*/
error = ext2_alloc_rsv(ip, lbn, pref, (int)fs->e2fs_bsize, cred, &newb);
if (error) {
brelse(bp);
@@ -264,13 +254,6 @@
EXT2_LOCK(ump);
pref = ext2_blkpref(ip, lbn, indirs[i].in_off, &bap[0],
bp->b_lblkno);
-/*
- if ((error = ext2_alloc(ip,
- lbn, pref, (int)fs->e2fs_bsize, cred, &newb)) != 0) {
- brelse(bp);
- return (error);
- }
-*/
if ((error = ext2_alloc_rsv(ip, lbn, pref,
(int)fs->e2fs_bsize, cred, &newb)) != 0) {
brelse(bp);
==== //depot/projects/soc2010/extfs/src/sys/fs/ext2fs/ext2_rsv_win.h#12 (text+ko) ====
@@ -31,8 +31,8 @@
#include <sys/tree.h>
#define EXT2_RSV_DEFAULT_RESERVE_BLKS 8
-#define EXT2_RSV_MAX_RESERVE_BLKS 1024
-#define EXT2_RSV_NOT_ALLOCATED 0
+#define EXT2_RSV_MAX_RESERVE_BLKS 1024
+#define EXT2_RSV_NOT_ALLOCATED 0
#define EXT2_RSV_LOCK(ip) mtx_lock(&ip->i_rsv_lock)
#define EXT2_RSV_UNLOCK(ip) mtx_unlock(&ip->i_rsv_lock)
@@ -60,19 +60,19 @@
const struct ext2_rsv_win *b)
{
if (a->rsv_start < b->rsv_start)
- return -1;
+ return (-1);
if (a->rsv_start == b->rsv_start)
- return 0;
+ return (0);
- return 1;
+ return (1);
}
RB_PROTOTYPE(ext2_rsv_win_tree, ext2_rsv_win, rsv_link, ext2_rsv_win_cmp);
+/* predefine */
struct inode;
/* ext2_alloc.c */
void ext2_init_rsv(struct inode *ip);
void ext2_discard_rsv(struct inode *ip);
-int ext2_alloc_rsv(struct inode *, int32_t, int32_t,
- int, struct ucred *, int32_t *);
+int ext2_alloc_rsv(struct inode *, int32_t, int32_t, int, struct ucred *, int32_t *);
#endif /* !_FS_EXT2FS_EXT2_RSV_WIN_H_ */
==== //depot/projects/soc2010/extfs/src/sys/fs/ext2fs/ext2_vfsops.c#7 (text+ko) ====
@@ -1,4 +1,4 @@
-/*-
+/*
* modified for EXT2FS support in Lites 1.1
*
* Aug 1995, Godmar Back (gback at cs.utah.edu)
@@ -61,6 +61,7 @@
#include <fs/ext2fs/fs.h>
#include <fs/ext2fs/ext2_extern.h>
#include <fs/ext2fs/ext2fs.h>
+#include <fs/ext2fs/ext2_rsv_win.h>
static int ext2_flushfiles(struct mount *mp, int flags, struct thread *td);
static int ext2_mountfs(struct vnode *, struct mount *);
@@ -585,7 +586,9 @@
bzero(&ump->um_e2fs->e2fs_rsv_lock, sizeof(struct mtx));
mtx_init(&ump->um_e2fs->e2fs_rsv_lock,
"rsv tree lock", NULL, MTX_DEF);
- RB_INIT(&ump->um_e2fs->e2fs_rsv_tree);
+ ump->um_e2fs->e2fs_rsv_tree = malloc(sizeof(struct ext2_rsv_win_tree),
+ M_EXT2MNT, M_WAITOK | M_ZERO);
+ RB_INIT(ump->um_e2fs->e2fs_rsv_tree);
brelse(bp);
bp = NULL;
@@ -686,6 +689,7 @@
g_topology_unlock();
PICKUP_GIANT();
vrele(ump->um_devvp);
+ free(fs->e2fs_rsv_tree, M_EXT2MNT);
mtx_destroy(&fs->e2fs_rsv_lock);
free(fs->e2fs_gd, M_EXT2MNT);
free(fs->e2fs_contigdirs, M_EXT2MNT);
@@ -928,11 +932,7 @@
bzero(&ip->i_rsv_lock, sizeof(struct mtx));
mtx_init(&ip->i_rsv_lock, "inode rsv lock", NULL, MTX_DEF);
- EXT2_RSV_LOCK(ip);
ip->i_rsv = NULL;
- if (ip->i_rsv == NULL)
- ext2_init_rsv(ip);
- EXT2_RSV_UNLOCK(ip);
/*
* Now we want to make sure that block pointers for unused
==== //depot/projects/soc2010/extfs/src/sys/fs/ext2fs/ext2fs.h#4 (text+ko) ====
@@ -39,7 +39,6 @@
#include <sys/types.h>
#include <sys/lock.h>
-#include <fs/ext2fs/ext2_rsv_win.h>
/*
* Special inode numbers
@@ -177,8 +176,8 @@
off_t e2fs_maxfilesize;
struct ext2_gd *e2fs_gd; /* Group Descriptors */
- struct mtx e2fs_rsv_lock; /* Protect reservation window RB tree */
- struct ext2_rsv_win_tree e2fs_rsv_tree; /* Reservation window index */
+ struct mtx e2fs_rsv_lock; /* Protect reservation window RB tree */
+ struct ext2_rsv_win_tree *e2fs_rsv_tree; /* Reservation window index */
};
/*
==== //depot/projects/soc2010/extfs/src/sys/fs/ext2fs/inode.h#5 (text+ko) ====
@@ -40,7 +40,6 @@
#include <sys/lock.h>
#include <sys/queue.h>
-#include <fs/ext2fs/ext2_rsv_win.h>
#define ROOTINO ((ino_t)2)
@@ -102,6 +101,7 @@
u_int32_t i_uid; /* File owner. */
u_int32_t i_gid; /* File group. */
+ /* Fields for reservation window */
struct mtx i_rsv_lock; /* Protects i_rsv */
struct ext2_rsv_win *i_rsv; /* Reservation window */
};
More information about the p4-projects
mailing list