]> git.karo-electronics.de Git - linux-beck.git/commitdiff
Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 13 Mar 2010 22:38:53 +0000 (14:38 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 13 Mar 2010 22:38:53 +0000 (14:38 -0800)
* 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

fs/gfs2/Kconfig
fs/gfs2/file.c
fs/gfs2/incore.h
fs/gfs2/log.c

index 4dcddf83326f45f7dd874587ef915b7844d60b0b..a47b4310711201889a2e0ff84b4f004fdf3e1850 100644 (file)
@@ -8,7 +8,6 @@ config GFS2_FS
        select FS_POSIX_ACL
        select CRC32
        select SLOW_WORK
-       select QUOTA
        select QUOTACTL
        help
          A cluster filesystem.
index a6abbae8a278cefb0ae39fe4553341a5ce85ebef..e6dd2aec6f822fe1ffa6cc8d442bd1dd03ca496f 100644 (file)
@@ -640,7 +640,7 @@ static int gfs2_lock(struct file *file, int cmd, struct file_lock *fl)
 
        if (!(fl->fl_flags & FL_POSIX))
                return -ENOLCK;
-       if (__mandatory_lock(&ip->i_inode))
+       if (__mandatory_lock(&ip->i_inode) && fl->fl_type != F_UNLCK)
                return -ENOLCK;
 
        if (cmd == F_CANCELLK) {
index b8025e51cabfb167de7e3e1413329759da8a85a0..3aac46f6853e620f818a86ec3022ac846bc90515 100644 (file)
@@ -616,7 +616,7 @@ struct gfs2_sbd {
        unsigned int sd_log_blks_reserved;
        unsigned int sd_log_commited_buf;
        unsigned int sd_log_commited_databuf;
-       unsigned int sd_log_commited_revoke;
+       int sd_log_commited_revoke;
 
        unsigned int sd_log_num_buf;
        unsigned int sd_log_num_revoke;
index 4511b08fc451586444c78379575203e20d7d72cc..e5bf4b59d46efbeaa33a473adfe5305b46bd92df 100644 (file)
@@ -417,7 +417,7 @@ static unsigned int calc_reserved(struct gfs2_sbd *sdp)
        databufhdrs_needed = (sdp->sd_log_commited_databuf +
                              (dbuf_limit - 1)) / dbuf_limit;
 
-       if (sdp->sd_log_commited_revoke)
+       if (sdp->sd_log_commited_revoke > 0)
                revokes = gfs2_struct2blk(sdp, sdp->sd_log_commited_revoke,
                                          sizeof(u64));
 
@@ -790,7 +790,6 @@ static void log_refund(struct gfs2_sbd *sdp, struct gfs2_trans *tr)
        gfs2_assert_withdraw(sdp, (((int)sdp->sd_log_commited_buf) >= 0) ||
                             (((int)sdp->sd_log_commited_databuf) >= 0));
        sdp->sd_log_commited_revoke += tr->tr_num_revoke - tr->tr_num_revoke_rm;
-       gfs2_assert_withdraw(sdp, ((int)sdp->sd_log_commited_revoke) >= 0);
        reserved = calc_reserved(sdp);
        gfs2_assert_withdraw(sdp, sdp->sd_log_blks_reserved + tr->tr_reserved >= reserved);
        unused = sdp->sd_log_blks_reserved - reserved + tr->tr_reserved;