Commit a5344a95 authored by Linus Torvalds's avatar Linus Torvalds

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
parents 411fdc1a 370298e2
...@@ -905,7 +905,8 @@ P: David Teigland ...@@ -905,7 +905,8 @@ P: David Teigland
M: teigland@redhat.com M: teigland@redhat.com
L: cluster-devel@redhat.com L: cluster-devel@redhat.com
W: http://sources.redhat.com/cluster/ W: http://sources.redhat.com/cluster/
T: git kernel.org:/pub/scm/linux/kernel/git/steve/gfs-2.6.git T: git kernel.org:/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes.git
T: git kernel.org:/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw.git
S: Supported S: Supported
DAVICOM FAST ETHERNET (DMFE) NETWORK DRIVER DAVICOM FAST ETHERNET (DMFE) NETWORK DRIVER
...@@ -1188,7 +1189,8 @@ P: Steven Whitehouse ...@@ -1188,7 +1189,8 @@ P: Steven Whitehouse
M: swhiteho@redhat.com M: swhiteho@redhat.com
L: cluster-devel@redhat.com L: cluster-devel@redhat.com
W: http://sources.redhat.com/cluster/ W: http://sources.redhat.com/cluster/
T: git kernel.org:/pub/scm/linux/kernel/git/steve/gfs-2.6.git T: git kernel.org:/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes.git
T: git kernel.org:/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw.git
S: Supported S: Supported
GIGASET ISDN DRIVERS GIGASET ISDN DRIVERS
......
menu "Distributed Lock Manager" menu "Distributed Lock Manager"
depends on INET && EXPERIMENTAL depends on INET && IP_SCTP && EXPERIMENTAL
config DLM config DLM
tristate "Distributed Lock Manager (DLM)" tristate "Distributed Lock Manager (DLM)"
depends on IPV6 || IPV6=n depends on IPV6 || IPV6=n
depends on IP_SCTP
select CONFIGFS_FS select CONFIGFS_FS
help help
A general purpose distributed lock manager for kernel or userspace A general purpose distributed lock manager for kernel or userspace
......
...@@ -548,7 +548,7 @@ static int receive_from_sock(void) ...@@ -548,7 +548,7 @@ static int receive_from_sock(void)
} }
len = iov[0].iov_len + iov[1].iov_len; len = iov[0].iov_len + iov[1].iov_len;
r = ret = kernel_recvmsg(sctp_con.sock, &msg, iov, 1, len, r = ret = kernel_recvmsg(sctp_con.sock, &msg, iov, msg.msg_iovlen, len,
MSG_NOSIGNAL | MSG_DONTWAIT); MSG_NOSIGNAL | MSG_DONTWAIT);
if (ret <= 0) if (ret <= 0)
goto out_close; goto out_close;
......
...@@ -569,16 +569,15 @@ void gfs2_log_flush(struct gfs2_sbd *sdp, struct gfs2_glock *gl) ...@@ -569,16 +569,15 @@ void gfs2_log_flush(struct gfs2_sbd *sdp, struct gfs2_glock *gl)
else if (sdp->sd_log_tail != current_tail(sdp) && !sdp->sd_log_idle) else if (sdp->sd_log_tail != current_tail(sdp) && !sdp->sd_log_idle)
log_write_header(sdp, 0, PULL); log_write_header(sdp, 0, PULL);
lops_after_commit(sdp, ai); lops_after_commit(sdp, ai);
sdp->sd_log_head = sdp->sd_log_flush_head;
gfs2_log_lock(sdp);
sdp->sd_log_head = sdp->sd_log_flush_head;
sdp->sd_log_blks_free -= sdp->sd_log_num_hdrs; sdp->sd_log_blks_free -= sdp->sd_log_num_hdrs;
sdp->sd_log_blks_reserved = 0; sdp->sd_log_blks_reserved = 0;
sdp->sd_log_commited_buf = 0; sdp->sd_log_commited_buf = 0;
sdp->sd_log_num_hdrs = 0; sdp->sd_log_num_hdrs = 0;
sdp->sd_log_commited_revoke = 0; sdp->sd_log_commited_revoke = 0;
gfs2_log_lock(sdp);
if (!list_empty(&ai->ai_ail1_list)) { if (!list_empty(&ai->ai_ail1_list)) {
list_add(&ai->ai_list, &sdp->sd_ail1_list); list_add(&ai->ai_list, &sdp->sd_ail1_list);
ai = NULL; ai = NULL;
......
...@@ -492,7 +492,7 @@ static int gfs2_check_magic(struct buffer_head *bh) ...@@ -492,7 +492,7 @@ static int gfs2_check_magic(struct buffer_head *bh)
ptr = kaddr + bh_offset(bh); ptr = kaddr + bh_offset(bh);
if (*ptr == cpu_to_be32(GFS2_MAGIC)) if (*ptr == cpu_to_be32(GFS2_MAGIC))
rv = 1; rv = 1;
kunmap_atomic(page, KM_USER0); kunmap_atomic(kaddr, KM_USER0);
return rv; return rv;
} }
...@@ -626,7 +626,7 @@ static void databuf_lo_before_commit(struct gfs2_sbd *sdp) ...@@ -626,7 +626,7 @@ static void databuf_lo_before_commit(struct gfs2_sbd *sdp)
memcpy(bh->b_data, memcpy(bh->b_data,
kaddr + bh_offset(bd2->bd_bh), kaddr + bh_offset(bd2->bd_bh),
sdp->sd_sb.sb_bsize); sdp->sd_sb.sb_bsize);
kunmap_atomic(page, KM_USER0); kunmap_atomic(kaddr, KM_USER0);
*(__be32 *)bh->b_data = 0; *(__be32 *)bh->b_data = 0;
} else { } else {
bh = gfs2_log_fake_buf(sdp, bd2->bd_bh); bh = gfs2_log_fake_buf(sdp, bd2->bd_bh);
......
...@@ -162,7 +162,7 @@ static int zero_readpage(struct page *page) ...@@ -162,7 +162,7 @@ static int zero_readpage(struct page *page)
kaddr = kmap_atomic(page, KM_USER0); kaddr = kmap_atomic(page, KM_USER0);
memset(kaddr, 0, PAGE_CACHE_SIZE); memset(kaddr, 0, PAGE_CACHE_SIZE);
kunmap_atomic(page, KM_USER0); kunmap_atomic(kaddr, KM_USER0);
SetPageUptodate(page); SetPageUptodate(page);
...@@ -195,7 +195,7 @@ static int stuffed_readpage(struct gfs2_inode *ip, struct page *page) ...@@ -195,7 +195,7 @@ static int stuffed_readpage(struct gfs2_inode *ip, struct page *page)
memcpy(kaddr, dibh->b_data + sizeof(struct gfs2_dinode), memcpy(kaddr, dibh->b_data + sizeof(struct gfs2_dinode),
ip->i_di.di_size); ip->i_di.di_size);
memset(kaddr + ip->i_di.di_size, 0, PAGE_CACHE_SIZE - ip->i_di.di_size); memset(kaddr + ip->i_di.di_size, 0, PAGE_CACHE_SIZE - ip->i_di.di_size);
kunmap_atomic(page, KM_USER0); kunmap_atomic(kaddr, KM_USER0);
brelse(dibh); brelse(dibh);
...@@ -370,19 +370,22 @@ static int gfs2_prepare_write(struct file *file, struct page *page, ...@@ -370,19 +370,22 @@ static int gfs2_prepare_write(struct file *file, struct page *page,
loff_t pos = ((loff_t)page->index << PAGE_CACHE_SHIFT) + from; loff_t pos = ((loff_t)page->index << PAGE_CACHE_SHIFT) + from;
loff_t end = ((loff_t)page->index << PAGE_CACHE_SHIFT) + to; loff_t end = ((loff_t)page->index << PAGE_CACHE_SHIFT) + to;
struct gfs2_alloc *al; struct gfs2_alloc *al;
unsigned int write_len = to - from;
gfs2_holder_init(ip->i_gl, LM_ST_EXCLUSIVE, GL_ATIME|GL_AOP, &ip->i_gh); gfs2_holder_init(ip->i_gl, LM_ST_EXCLUSIVE, GL_ATIME|GL_AOP, &ip->i_gh);
error = gfs2_glock_nq_m_atime(1, &ip->i_gh); error = gfs2_glock_nq_m_atime(1, &ip->i_gh);
if (error) if (error)
goto out_uninit; goto out_uninit;
gfs2_write_calc_reserv(ip, to - from, &data_blocks, &ind_blocks); gfs2_write_calc_reserv(ip, write_len, &data_blocks, &ind_blocks);
error = gfs2_write_alloc_required(ip, pos, from - to, &alloc_required); error = gfs2_write_alloc_required(ip, pos, write_len, &alloc_required);
if (error) if (error)
goto out_unlock; goto out_unlock;
ip->i_alloc.al_requested = 0;
if (alloc_required) { if (alloc_required) {
al = gfs2_alloc_get(ip); al = gfs2_alloc_get(ip);
...@@ -482,7 +485,7 @@ static int gfs2_commit_write(struct file *file, struct page *page, ...@@ -482,7 +485,7 @@ static int gfs2_commit_write(struct file *file, struct page *page,
kaddr = kmap_atomic(page, KM_USER0); kaddr = kmap_atomic(page, KM_USER0);
memcpy(dibh->b_data + sizeof(struct gfs2_dinode) + from, memcpy(dibh->b_data + sizeof(struct gfs2_dinode) + from,
kaddr + from, to - from); kaddr + from, to - from);
kunmap_atomic(page, KM_USER0); kunmap_atomic(kaddr, KM_USER0);
SetPageUptodate(page); SetPageUptodate(page);
......
...@@ -32,7 +32,7 @@ void gfs2_rgrp_repolish_clones(struct gfs2_rgrpd *rgd); ...@@ -32,7 +32,7 @@ void gfs2_rgrp_repolish_clones(struct gfs2_rgrpd *rgd);
struct gfs2_alloc *gfs2_alloc_get(struct gfs2_inode *ip); struct gfs2_alloc *gfs2_alloc_get(struct gfs2_inode *ip);
static inline void gfs2_alloc_put(struct gfs2_inode *ip) static inline void gfs2_alloc_put(struct gfs2_inode *ip)
{ {
return; /* Se we can see where ip->i_alloc is used */ return; /* So we can see where ip->i_alloc is used */
} }
int gfs2_inplace_reserve_i(struct gfs2_inode *ip, int gfs2_inplace_reserve_i(struct gfs2_inode *ip,
......
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