diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-03-13 17:38:53 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-03-13 17:38:53 -0500 |
commit | 8cea4eb642890a1de58980e7e1617d1765ef8f7c (patch) | |
tree | ea43bc34715d854c599743bf226437339bed1beb /fs/gfs2 | |
parent | 122ce878dc189860a380539bde19498bf93443a7 (diff) | |
parent | 720e7749279bde0d08684b1bb4e7a2eedeec6394 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes
* git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes:
GFS2: Skip check for mandatory locks when unlocking
GFS2: Allow the number of committed revokes to temporarily be negative
GFS2: do not select QUOTA
Diffstat (limited to 'fs/gfs2')
-rw-r--r-- | fs/gfs2/Kconfig | 1 | ||||
-rw-r--r-- | fs/gfs2/file.c | 2 | ||||
-rw-r--r-- | fs/gfs2/incore.h | 2 | ||||
-rw-r--r-- | fs/gfs2/log.c | 3 |
4 files changed, 3 insertions, 5 deletions
diff --git a/fs/gfs2/Kconfig b/fs/gfs2/Kconfig index 4dcddf83326f..a47b43107112 100644 --- a/fs/gfs2/Kconfig +++ b/fs/gfs2/Kconfig | |||
@@ -8,7 +8,6 @@ config GFS2_FS | |||
8 | select FS_POSIX_ACL | 8 | select FS_POSIX_ACL |
9 | select CRC32 | 9 | select CRC32 |
10 | select SLOW_WORK | 10 | select SLOW_WORK |
11 | select QUOTA | ||
12 | select QUOTACTL | 11 | select QUOTACTL |
13 | help | 12 | help |
14 | A cluster filesystem. | 13 | A cluster filesystem. |
diff --git a/fs/gfs2/file.c b/fs/gfs2/file.c index a6abbae8a278..e6dd2aec6f82 100644 --- a/fs/gfs2/file.c +++ b/fs/gfs2/file.c | |||
@@ -640,7 +640,7 @@ static int gfs2_lock(struct file *file, int cmd, struct file_lock *fl) | |||
640 | 640 | ||
641 | if (!(fl->fl_flags & FL_POSIX)) | 641 | if (!(fl->fl_flags & FL_POSIX)) |
642 | return -ENOLCK; | 642 | return -ENOLCK; |
643 | if (__mandatory_lock(&ip->i_inode)) | 643 | if (__mandatory_lock(&ip->i_inode) && fl->fl_type != F_UNLCK) |
644 | return -ENOLCK; | 644 | return -ENOLCK; |
645 | 645 | ||
646 | if (cmd == F_CANCELLK) { | 646 | if (cmd == F_CANCELLK) { |
diff --git a/fs/gfs2/incore.h b/fs/gfs2/incore.h index b8025e51cabf..3aac46f6853e 100644 --- a/fs/gfs2/incore.h +++ b/fs/gfs2/incore.h | |||
@@ -616,7 +616,7 @@ struct gfs2_sbd { | |||
616 | unsigned int sd_log_blks_reserved; | 616 | unsigned int sd_log_blks_reserved; |
617 | unsigned int sd_log_commited_buf; | 617 | unsigned int sd_log_commited_buf; |
618 | unsigned int sd_log_commited_databuf; | 618 | unsigned int sd_log_commited_databuf; |
619 | unsigned int sd_log_commited_revoke; | 619 | int sd_log_commited_revoke; |
620 | 620 | ||
621 | unsigned int sd_log_num_buf; | 621 | unsigned int sd_log_num_buf; |
622 | unsigned int sd_log_num_revoke; | 622 | unsigned int sd_log_num_revoke; |
diff --git a/fs/gfs2/log.c b/fs/gfs2/log.c index 4511b08fc451..e5bf4b59d46e 100644 --- a/fs/gfs2/log.c +++ b/fs/gfs2/log.c | |||
@@ -417,7 +417,7 @@ static unsigned int calc_reserved(struct gfs2_sbd *sdp) | |||
417 | databufhdrs_needed = (sdp->sd_log_commited_databuf + | 417 | databufhdrs_needed = (sdp->sd_log_commited_databuf + |
418 | (dbuf_limit - 1)) / dbuf_limit; | 418 | (dbuf_limit - 1)) / dbuf_limit; |
419 | 419 | ||
420 | if (sdp->sd_log_commited_revoke) | 420 | if (sdp->sd_log_commited_revoke > 0) |
421 | revokes = gfs2_struct2blk(sdp, sdp->sd_log_commited_revoke, | 421 | revokes = gfs2_struct2blk(sdp, sdp->sd_log_commited_revoke, |
422 | sizeof(u64)); | 422 | sizeof(u64)); |
423 | 423 | ||
@@ -790,7 +790,6 @@ static void log_refund(struct gfs2_sbd *sdp, struct gfs2_trans *tr) | |||
790 | gfs2_assert_withdraw(sdp, (((int)sdp->sd_log_commited_buf) >= 0) || | 790 | gfs2_assert_withdraw(sdp, (((int)sdp->sd_log_commited_buf) >= 0) || |
791 | (((int)sdp->sd_log_commited_databuf) >= 0)); | 791 | (((int)sdp->sd_log_commited_databuf) >= 0)); |
792 | sdp->sd_log_commited_revoke += tr->tr_num_revoke - tr->tr_num_revoke_rm; | 792 | sdp->sd_log_commited_revoke += tr->tr_num_revoke - tr->tr_num_revoke_rm; |
793 | gfs2_assert_withdraw(sdp, ((int)sdp->sd_log_commited_revoke) >= 0); | ||
794 | reserved = calc_reserved(sdp); | 793 | reserved = calc_reserved(sdp); |
795 | gfs2_assert_withdraw(sdp, sdp->sd_log_blks_reserved + tr->tr_reserved >= reserved); | 794 | gfs2_assert_withdraw(sdp, sdp->sd_log_blks_reserved + tr->tr_reserved >= reserved); |
796 | unused = sdp->sd_log_blks_reserved - reserved + tr->tr_reserved; | 795 | unused = sdp->sd_log_blks_reserved - reserved + tr->tr_reserved; |