Commit bfab08c0 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/shaggy/jfs-2.6

parents eb0e0076 438282d8
...@@ -129,8 +129,7 @@ void jfs_delete_inode(struct inode *inode) ...@@ -129,8 +129,7 @@ void jfs_delete_inode(struct inode *inode)
jfs_info("In jfs_delete_inode, inode = 0x%p", inode); jfs_info("In jfs_delete_inode, inode = 0x%p", inode);
if (!is_bad_inode(inode) && if (!is_bad_inode(inode) &&
(JFS_IP(inode)->fileset == cpu_to_le32(FILESYSTEM_I))) { (JFS_IP(inode)->fileset == FILESYSTEM_I)) {
truncate_inode_pages(&inode->i_data, 0); truncate_inode_pages(&inode->i_data, 0);
if (test_cflag(COMMIT_Freewmap, inode)) if (test_cflag(COMMIT_Freewmap, inode))
......
...@@ -3055,7 +3055,7 @@ static int cntlz(u32 value) ...@@ -3055,7 +3055,7 @@ static int cntlz(u32 value)
* RETURN VALUES: * RETURN VALUES:
* log2 number of blocks * log2 number of blocks
*/ */
int blkstol2(s64 nb) static int blkstol2(s64 nb)
{ {
int l2nb; int l2nb;
s64 mask; /* meant to be signed */ s64 mask; /* meant to be signed */
......
...@@ -725,6 +725,9 @@ struct tlock *txLock(tid_t tid, struct inode *ip, struct metapage * mp, ...@@ -725,6 +725,9 @@ struct tlock *txLock(tid_t tid, struct inode *ip, struct metapage * mp,
else else
tlck->flag = tlckINODELOCK; tlck->flag = tlckINODELOCK;
if (S_ISDIR(ip->i_mode))
tlck->flag |= tlckDIRECTORY;
tlck->type = 0; tlck->type = 0;
/* bind the tlock and the page */ /* bind the tlock and the page */
...@@ -1009,6 +1012,8 @@ struct tlock *txMaplock(tid_t tid, struct inode *ip, int type) ...@@ -1009,6 +1012,8 @@ struct tlock *txMaplock(tid_t tid, struct inode *ip, int type)
/* bind the tlock and the object */ /* bind the tlock and the object */
tlck->flag = tlckINODELOCK; tlck->flag = tlckINODELOCK;
if (S_ISDIR(ip->i_mode))
tlck->flag |= tlckDIRECTORY;
tlck->ip = ip; tlck->ip = ip;
tlck->mp = NULL; tlck->mp = NULL;
...@@ -1077,6 +1082,8 @@ struct linelock *txLinelock(struct linelock * tlock) ...@@ -1077,6 +1082,8 @@ struct linelock *txLinelock(struct linelock * tlock)
linelock->flag = tlckLINELOCK; linelock->flag = tlckLINELOCK;
linelock->maxcnt = TLOCKLONG; linelock->maxcnt = TLOCKLONG;
linelock->index = 0; linelock->index = 0;
if (tlck->flag & tlckDIRECTORY)
linelock->flag |= tlckDIRECTORY;
/* append linelock after tlock */ /* append linelock after tlock */
linelock->next = tlock->next; linelock->next = tlock->next;
...@@ -2070,7 +2077,7 @@ static void xtLog(struct jfs_log * log, struct tblock * tblk, struct lrd * lrd, ...@@ -2070,7 +2077,7 @@ static void xtLog(struct jfs_log * log, struct tblock * tblk, struct lrd * lrd,
* *
* function: log from maplock of freed data extents; * function: log from maplock of freed data extents;
*/ */
void mapLog(struct jfs_log * log, struct tblock * tblk, struct lrd * lrd, static void mapLog(struct jfs_log * log, struct tblock * tblk, struct lrd * lrd,
struct tlock * tlck) struct tlock * tlck)
{ {
struct pxd_lock *pxdlock; struct pxd_lock *pxdlock;
...@@ -2209,7 +2216,7 @@ void txEA(tid_t tid, struct inode *ip, dxd_t * oldea, dxd_t * newea) ...@@ -2209,7 +2216,7 @@ void txEA(tid_t tid, struct inode *ip, dxd_t * oldea, dxd_t * newea)
* function: synchronously write pages locked by transaction * function: synchronously write pages locked by transaction
* after txLog() but before txUpdateMap(); * after txLog() but before txUpdateMap();
*/ */
void txForce(struct tblock * tblk) static void txForce(struct tblock * tblk)
{ {
struct tlock *tlck; struct tlock *tlck;
lid_t lid, next; lid_t lid, next;
...@@ -2358,7 +2365,7 @@ static void txUpdateMap(struct tblock * tblk) ...@@ -2358,7 +2365,7 @@ static void txUpdateMap(struct tblock * tblk)
*/ */
else { /* (maplock->flag & mlckFREE) */ else { /* (maplock->flag & mlckFREE) */
if (S_ISDIR(tlck->ip->i_mode)) if (tlck->flag & tlckDIRECTORY)
txFreeMap(ipimap, maplock, txFreeMap(ipimap, maplock,
tblk, COMMIT_PWMAP); tblk, COMMIT_PWMAP);
else else
......
...@@ -122,6 +122,7 @@ extern struct tlock *TxLock; /* transaction lock table */ ...@@ -122,6 +122,7 @@ extern struct tlock *TxLock; /* transaction lock table */
#define tlckLOG 0x0800 #define tlckLOG 0x0800
/* updateMap state */ /* updateMap state */
#define tlckUPDATEMAP 0x0080 #define tlckUPDATEMAP 0x0080
#define tlckDIRECTORY 0x0040
/* freeLock state */ /* freeLock state */
#define tlckFREELOCK 0x0008 #define tlckFREELOCK 0x0008
#define tlckWRITEPAGE 0x0004 #define tlckWRITEPAGE 0x0004
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment