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
This commit is contained in:
@@ -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
|
|||||||
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
|
||||||
|
@@ -1,10 +1,9 @@
|
|||||||
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)
|
|||||||
}
|
}
|
||||||
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)
|
|||||||
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);
|
||||||
|
|
||||||
|
gfs2_log_lock(sdp);
|
||||||
sdp->sd_log_head = sdp->sd_log_flush_head;
|
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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
|
|
||||||
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)
|
|||||||
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,
|
|||||||
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,
|
|||||||
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);
|
|||||||
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,
|
||||||
|
Reference in New Issue
Block a user