diff options
| author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-13 11:30:33 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-13 11:30:33 -0400 |
| commit | a5344a9555fffd045218aced89afd6ca0f884e10 (patch) | |
| tree | 85fcb093a18fe6858dffa66b733a99a30f117926 | |
| parent | 411fdc1a711665cb4bd13df2a75213153d463375 (diff) | |
| parent | 370298e2e6f513bc4a9e9445eeed060d8c31f1ca (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] Update git tree name/location
[DLM] fix iovec length in recvmsg
[GFS2] Pass the correct value to kunmap_atomic
[GFS2] Fix bug where lock not held
[DLM] Kconfig: don't show an empty DLM menu
[GFS2] Fix uninitialised variable
[GFS2] Fix a size calculation error
| -rw-r--r-- | MAINTAINERS | 6 | ||||
| -rw-r--r-- | fs/dlm/Kconfig | 3 | ||||
| -rw-r--r-- | fs/dlm/lowcomms.c | 2 | ||||
| -rw-r--r-- | fs/gfs2/log.c | 5 | ||||
| -rw-r--r-- | fs/gfs2/lops.c | 4 | ||||
| -rw-r--r-- | fs/gfs2/ops_address.c | 13 | ||||
| -rw-r--r-- | fs/gfs2/rgrp.h | 2 |
7 files changed, 19 insertions, 16 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index 931e6e40c08b..1b5430a49fdd 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
| @@ -905,7 +905,8 @@ P: David Teigland | |||
| 905 | M: teigland@redhat.com | 905 | M: teigland@redhat.com |
| 906 | L: cluster-devel@redhat.com | 906 | L: cluster-devel@redhat.com |
| 907 | W: http://sources.redhat.com/cluster/ | 907 | W: http://sources.redhat.com/cluster/ |
| 908 | T: git kernel.org:/pub/scm/linux/kernel/git/steve/gfs-2.6.git | 908 | T: git kernel.org:/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes.git |
| 909 | T: git kernel.org:/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw.git | ||
| 909 | S: Supported | 910 | S: Supported |
| 910 | 911 | ||
| 911 | DAVICOM FAST ETHERNET (DMFE) NETWORK DRIVER | 912 | DAVICOM FAST ETHERNET (DMFE) NETWORK DRIVER |
| @@ -1188,7 +1189,8 @@ P: Steven Whitehouse | |||
| 1188 | M: swhiteho@redhat.com | 1189 | M: swhiteho@redhat.com |
| 1189 | L: cluster-devel@redhat.com | 1190 | L: cluster-devel@redhat.com |
| 1190 | W: http://sources.redhat.com/cluster/ | 1191 | W: http://sources.redhat.com/cluster/ |
| 1191 | T: git kernel.org:/pub/scm/linux/kernel/git/steve/gfs-2.6.git | 1192 | T: git kernel.org:/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes.git |
| 1193 | T: git kernel.org:/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw.git | ||
| 1192 | S: Supported | 1194 | S: Supported |
| 1193 | 1195 | ||
| 1194 | GIGASET ISDN DRIVERS | 1196 | GIGASET ISDN DRIVERS |
diff --git a/fs/dlm/Kconfig b/fs/dlm/Kconfig index 490f85b3fa59..81b2c6465eeb 100644 --- a/fs/dlm/Kconfig +++ b/fs/dlm/Kconfig | |||
| @@ -1,10 +1,9 @@ | |||
| 1 | menu "Distributed Lock Manager" | 1 | menu "Distributed Lock Manager" |
| 2 | depends on INET && EXPERIMENTAL | 2 | depends on INET && IP_SCTP && EXPERIMENTAL |
| 3 | 3 | ||
| 4 | config DLM | 4 | config DLM |
| 5 | tristate "Distributed Lock Manager (DLM)" | 5 | tristate "Distributed Lock Manager (DLM)" |
| 6 | depends on IPV6 || IPV6=n | 6 | depends on IPV6 || IPV6=n |
| 7 | depends on IP_SCTP | ||
| 8 | select CONFIGFS_FS | 7 | select CONFIGFS_FS |
| 9 | help | 8 | help |
| 10 | A general purpose distributed lock manager for kernel or userspace | 9 | A general purpose distributed lock manager for kernel or userspace |
diff --git a/fs/dlm/lowcomms.c b/fs/dlm/lowcomms.c index 7bcea7c5addb..867f93d0417e 100644 --- a/fs/dlm/lowcomms.c +++ b/fs/dlm/lowcomms.c | |||
| @@ -548,7 +548,7 @@ static int receive_from_sock(void) | |||
| 548 | } | 548 | } |
| 549 | len = iov[0].iov_len + iov[1].iov_len; | 549 | len = iov[0].iov_len + iov[1].iov_len; |
| 550 | 550 | ||
| 551 | r = ret = kernel_recvmsg(sctp_con.sock, &msg, iov, 1, len, | 551 | r = ret = kernel_recvmsg(sctp_con.sock, &msg, iov, msg.msg_iovlen, len, |
| 552 | MSG_NOSIGNAL | MSG_DONTWAIT); | 552 | MSG_NOSIGNAL | MSG_DONTWAIT); |
| 553 | if (ret <= 0) | 553 | if (ret <= 0) |
| 554 | goto out_close; | 554 | goto out_close; |
diff --git a/fs/gfs2/log.c b/fs/gfs2/log.c index 554fe5bd1b72..72eec6542d6a 100644 --- a/fs/gfs2/log.c +++ b/fs/gfs2/log.c | |||
| @@ -569,16 +569,15 @@ void gfs2_log_flush(struct gfs2_sbd *sdp, struct gfs2_glock *gl) | |||
| 569 | else if (sdp->sd_log_tail != current_tail(sdp) && !sdp->sd_log_idle) | 569 | else if (sdp->sd_log_tail != current_tail(sdp) && !sdp->sd_log_idle) |
| 570 | log_write_header(sdp, 0, PULL); | 570 | log_write_header(sdp, 0, PULL); |
| 571 | lops_after_commit(sdp, ai); | 571 | lops_after_commit(sdp, ai); |
| 572 | sdp->sd_log_head = sdp->sd_log_flush_head; | ||
| 573 | 572 | ||
| 573 | gfs2_log_lock(sdp); | ||
| 574 | sdp->sd_log_head = sdp->sd_log_flush_head; | ||
| 574 | sdp->sd_log_blks_free -= sdp->sd_log_num_hdrs; | 575 | sdp->sd_log_blks_free -= sdp->sd_log_num_hdrs; |
| 575 | |||
| 576 | sdp->sd_log_blks_reserved = 0; | 576 | sdp->sd_log_blks_reserved = 0; |
| 577 | sdp->sd_log_commited_buf = 0; | 577 | sdp->sd_log_commited_buf = 0; |
| 578 | sdp->sd_log_num_hdrs = 0; | 578 | sdp->sd_log_num_hdrs = 0; |
| 579 | sdp->sd_log_commited_revoke = 0; | 579 | sdp->sd_log_commited_revoke = 0; |
| 580 | 580 | ||
| 581 | gfs2_log_lock(sdp); | ||
| 582 | if (!list_empty(&ai->ai_ail1_list)) { | 581 | if (!list_empty(&ai->ai_ail1_list)) { |
| 583 | list_add(&ai->ai_list, &sdp->sd_ail1_list); | 582 | list_add(&ai->ai_list, &sdp->sd_ail1_list); |
| 584 | ai = NULL; | 583 | ai = NULL; |
diff --git a/fs/gfs2/lops.c b/fs/gfs2/lops.c index 881e337b6a70..ab6d1115f95d 100644 --- a/fs/gfs2/lops.c +++ b/fs/gfs2/lops.c | |||
| @@ -492,7 +492,7 @@ static int gfs2_check_magic(struct buffer_head *bh) | |||
| 492 | ptr = kaddr + bh_offset(bh); | 492 | ptr = kaddr + bh_offset(bh); |
| 493 | if (*ptr == cpu_to_be32(GFS2_MAGIC)) | 493 | if (*ptr == cpu_to_be32(GFS2_MAGIC)) |
| 494 | rv = 1; | 494 | rv = 1; |
| 495 | kunmap_atomic(page, KM_USER0); | 495 | kunmap_atomic(kaddr, KM_USER0); |
| 496 | 496 | ||
| 497 | return rv; | 497 | return rv; |
| 498 | } | 498 | } |
| @@ -626,7 +626,7 @@ static void databuf_lo_before_commit(struct gfs2_sbd *sdp) | |||
| 626 | memcpy(bh->b_data, | 626 | memcpy(bh->b_data, |
| 627 | kaddr + bh_offset(bd2->bd_bh), | 627 | kaddr + bh_offset(bd2->bd_bh), |
| 628 | sdp->sd_sb.sb_bsize); | 628 | sdp->sd_sb.sb_bsize); |
| 629 | kunmap_atomic(page, KM_USER0); | 629 | kunmap_atomic(kaddr, KM_USER0); |
| 630 | *(__be32 *)bh->b_data = 0; | 630 | *(__be32 *)bh->b_data = 0; |
| 631 | } else { | 631 | } else { |
| 632 | bh = gfs2_log_fake_buf(sdp, bd2->bd_bh); | 632 | bh = gfs2_log_fake_buf(sdp, bd2->bd_bh); |
diff --git a/fs/gfs2/ops_address.c b/fs/gfs2/ops_address.c index 4fb743f4e4a4..e0599fed99ce 100644 --- a/fs/gfs2/ops_address.c +++ b/fs/gfs2/ops_address.c | |||
| @@ -162,7 +162,7 @@ static int zero_readpage(struct page *page) | |||
| 162 | 162 | ||
| 163 | kaddr = kmap_atomic(page, KM_USER0); | 163 | kaddr = kmap_atomic(page, KM_USER0); |
| 164 | memset(kaddr, 0, PAGE_CACHE_SIZE); | 164 | memset(kaddr, 0, PAGE_CACHE_SIZE); |
| 165 | kunmap_atomic(page, KM_USER0); | 165 | kunmap_atomic(kaddr, KM_USER0); |
| 166 | 166 | ||
| 167 | SetPageUptodate(page); | 167 | SetPageUptodate(page); |
| 168 | 168 | ||
| @@ -195,7 +195,7 @@ static int stuffed_readpage(struct gfs2_inode *ip, struct page *page) | |||
| 195 | memcpy(kaddr, dibh->b_data + sizeof(struct gfs2_dinode), | 195 | memcpy(kaddr, dibh->b_data + sizeof(struct gfs2_dinode), |
| 196 | ip->i_di.di_size); | 196 | ip->i_di.di_size); |
| 197 | memset(kaddr + ip->i_di.di_size, 0, PAGE_CACHE_SIZE - ip->i_di.di_size); | 197 | memset(kaddr + ip->i_di.di_size, 0, PAGE_CACHE_SIZE - ip->i_di.di_size); |
| 198 | kunmap_atomic(page, KM_USER0); | 198 | kunmap_atomic(kaddr, KM_USER0); |
| 199 | 199 | ||
| 200 | brelse(dibh); | 200 | brelse(dibh); |
| 201 | 201 | ||
| @@ -370,19 +370,22 @@ static int gfs2_prepare_write(struct file *file, struct page *page, | |||
| 370 | loff_t pos = ((loff_t)page->index << PAGE_CACHE_SHIFT) + from; | 370 | loff_t pos = ((loff_t)page->index << PAGE_CACHE_SHIFT) + from; |
| 371 | loff_t end = ((loff_t)page->index << PAGE_CACHE_SHIFT) + to; | 371 | loff_t end = ((loff_t)page->index << PAGE_CACHE_SHIFT) + to; |
| 372 | struct gfs2_alloc *al; | 372 | struct gfs2_alloc *al; |
| 373 | unsigned int write_len = to - from; | ||
| 374 | |||
| 373 | 375 | ||
| 374 | gfs2_holder_init(ip->i_gl, LM_ST_EXCLUSIVE, GL_ATIME|GL_AOP, &ip->i_gh); | 376 | gfs2_holder_init(ip->i_gl, LM_ST_EXCLUSIVE, GL_ATIME|GL_AOP, &ip->i_gh); |
| 375 | error = gfs2_glock_nq_m_atime(1, &ip->i_gh); | 377 | error = gfs2_glock_nq_m_atime(1, &ip->i_gh); |
| 376 | if (error) | 378 | if (error) |
| 377 | goto out_uninit; | 379 | goto out_uninit; |
| 378 | 380 | ||
| 379 | gfs2_write_calc_reserv(ip, to - from, &data_blocks, &ind_blocks); | 381 | gfs2_write_calc_reserv(ip, write_len, &data_blocks, &ind_blocks); |
| 380 | 382 | ||
| 381 | error = gfs2_write_alloc_required(ip, pos, from - to, &alloc_required); | 383 | error = gfs2_write_alloc_required(ip, pos, write_len, &alloc_required); |
| 382 | if (error) | 384 | if (error) |
| 383 | goto out_unlock; | 385 | goto out_unlock; |
| 384 | 386 | ||
| 385 | 387 | ||
| 388 | ip->i_alloc.al_requested = 0; | ||
| 386 | if (alloc_required) { | 389 | if (alloc_required) { |
| 387 | al = gfs2_alloc_get(ip); | 390 | al = gfs2_alloc_get(ip); |
| 388 | 391 | ||
| @@ -482,7 +485,7 @@ static int gfs2_commit_write(struct file *file, struct page *page, | |||
| 482 | kaddr = kmap_atomic(page, KM_USER0); | 485 | kaddr = kmap_atomic(page, KM_USER0); |
| 483 | memcpy(dibh->b_data + sizeof(struct gfs2_dinode) + from, | 486 | memcpy(dibh->b_data + sizeof(struct gfs2_dinode) + from, |
| 484 | kaddr + from, to - from); | 487 | kaddr + from, to - from); |
| 485 | kunmap_atomic(page, KM_USER0); | 488 | kunmap_atomic(kaddr, KM_USER0); |
| 486 | 489 | ||
| 487 | SetPageUptodate(page); | 490 | SetPageUptodate(page); |
| 488 | 491 | ||
diff --git a/fs/gfs2/rgrp.h b/fs/gfs2/rgrp.h index 9eedfd12bfff..b01e0cfc99b5 100644 --- a/fs/gfs2/rgrp.h +++ b/fs/gfs2/rgrp.h | |||
| @@ -32,7 +32,7 @@ void gfs2_rgrp_repolish_clones(struct gfs2_rgrpd *rgd); | |||
| 32 | struct gfs2_alloc *gfs2_alloc_get(struct gfs2_inode *ip); | 32 | struct gfs2_alloc *gfs2_alloc_get(struct gfs2_inode *ip); |
| 33 | static inline void gfs2_alloc_put(struct gfs2_inode *ip) | 33 | static inline void gfs2_alloc_put(struct gfs2_inode *ip) |
| 34 | { | 34 | { |
| 35 | return; /* Se we can see where ip->i_alloc is used */ | 35 | return; /* So we can see where ip->i_alloc is used */ |
| 36 | } | 36 | } |
