Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-fixes

Pull gfs2 fixes from Steven Whitehouse:
"This time there are just four fixes. There are a couple of minor
updates to the quota code, a fix for KConfig to ensure that only valid
combinations including GFS2 can be built, and a fix for a typo
affecting end i/o processing when writing the journal.

Also, there is a temporary fix for a performance regression relating
to block reservations and directories. A longer fix will be applied
in due course, but this deals with the most immediate problem for now"

* git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-fixes:
GFS2: Fix typo in gfs2_log_end_write loop
GFS2: fix DLM depends to fix build errors
GFS2: Use single-block reservations for directories
GFS2: two minor quota fixups

+11 -6
+1 -1
fs/gfs2/Kconfig
··· 26 26 config GFS2_FS_LOCKING_DLM 27 27 bool "GFS2 DLM locking" 28 28 depends on (GFS2_FS!=n) && NET && INET && (IPV6 || IPV6=n) && \ 29 - HOTPLUG && DLM && CONFIGFS_FS && SYSFS 29 + HOTPLUG && CONFIGFS_FS && SYSFS && (DLM=y || DLM=GFS2_FS) 30 30 help 31 31 Multiple node locking module for GFS2 32 32
+1 -1
fs/gfs2/lops.c
··· 212 212 fs_err(sdp, "Error %d writing to log\n", error); 213 213 } 214 214 215 - bio_for_each_segment(bvec, bio, i) { 215 + bio_for_each_segment_all(bvec, bio, i) { 216 216 page = bvec->bv_page; 217 217 if (page_has_buffers(page)) 218 218 gfs2_end_log_write_bh(sdp, bvec, error);
+2 -2
fs/gfs2/quota.c
··· 121 121 { 122 122 struct kqid qid = qd->qd_id; 123 123 return (2 * (u64)from_kqid(&init_user_ns, qid)) + 124 - (qid.type == USRQUOTA) ? 0 : 1; 124 + ((qid.type == USRQUOTA) ? 0 : 1); 125 125 } 126 126 127 127 static u64 qd2offset(struct gfs2_quota_data *qd) ··· 721 721 goto unlock_out; 722 722 } 723 723 724 - gfs2_trans_add_meta(ip->i_gl, bh); 724 + gfs2_trans_add_data(ip->i_gl, bh); 725 725 726 726 kaddr = kmap_atomic(page); 727 727 if (offset + sizeof(struct gfs2_quota) > PAGE_CACHE_SIZE)
+7 -2
fs/gfs2/rgrp.c
··· 1401 1401 u32 extlen; 1402 1402 u32 free_blocks = rgd->rd_free_clone - rgd->rd_reserved; 1403 1403 int ret; 1404 + struct inode *inode = &ip->i_inode; 1404 1405 1405 - extlen = max_t(u32, atomic_read(&rs->rs_sizehint), requested); 1406 - extlen = clamp(extlen, RGRP_RSRV_MINBLKS, free_blocks); 1406 + if (S_ISDIR(inode->i_mode)) 1407 + extlen = 1; 1408 + else { 1409 + extlen = max_t(u32, atomic_read(&rs->rs_sizehint), requested); 1410 + extlen = clamp(extlen, RGRP_RSRV_MINBLKS, free_blocks); 1411 + } 1407 1412 if ((rgd->rd_free_clone < rgd->rd_reserved) || (free_blocks < extlen)) 1408 1413 return; 1409 1414