* [Ocfs2-devel] [PATCH 01/10] ocfs2: Add missing initialization
@ 2008-11-25 14:31 Jan Kara
2008-11-25 14:31 ` [Ocfs2-devel] [PATCH 02/10] ocfs2: Fix ocfs2_read_quota_block() error handling Jan Kara
2008-11-26 1:41 ` [Ocfs2-devel] [PATCH 01/10] ocfs2: Add missing initialization Tao Ma
0 siblings, 2 replies; 11+ messages in thread
From: Jan Kara @ 2008-11-25 14:31 UTC (permalink / raw)
To: ocfs2-devel
Add missing variable initialization to ocfs2_dquot_drop_slow().
Signed-off-by: Jan Kara <jack@suse.cz>
---
fs/ocfs2/quota_global.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/fs/ocfs2/quota_global.c b/fs/ocfs2/quota_global.c
index d2a5bfa..7f561e4 100644
--- a/fs/ocfs2/quota_global.c
+++ b/fs/ocfs2/quota_global.c
@@ -873,7 +873,7 @@ out:
static int ocfs2_dquot_drop_slow(struct inode *inode)
{
- int status;
+ int status = 0;
int cnt;
int got_lock[MAXQUOTAS] = {0, 0};
handle_t *handle;
--
1.6.0.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Ocfs2-devel] [PATCH 02/10] ocfs2: Fix ocfs2_read_quota_block() error handling.
2008-11-25 14:31 [Ocfs2-devel] [PATCH 01/10] ocfs2: Add missing initialization Jan Kara
@ 2008-11-25 14:31 ` Jan Kara
2008-11-25 14:31 ` [Ocfs2-devel] [PATCH 03/10] ocfs2: Fix oops when extending quota files Jan Kara
2008-11-26 1:41 ` [Ocfs2-devel] [PATCH 01/10] ocfs2: Add missing initialization Tao Ma
1 sibling, 1 reply; 11+ messages in thread
From: Jan Kara @ 2008-11-25 14:31 UTC (permalink / raw)
To: ocfs2-devel
From: Joel Becker <Joel.Becker@oracle.com>
ocfs2_bread() has become ocfs2_read_virt_blocks(), with a prototype to
match ocfs2_read_blocks(). The quota code, converting from
ocfs2_bread(), wraps the call to ocfs2_read_virt_blocks() in
ocfs2_read_quota_block(). Unfortunately, the prototype of
ocfs2_read_quota_block() matches the old prototype of ocfs2_bread().
The problem is that ocfs2_bread() returned the buffer head, and callers
assumed that a NULL pointer was indicative of error. It wasn't. This
is why ocfs2_bread() took an int*err argument as well.
The new prototype of ocfs2_read_virt_blocks() avoids this error handling
confusion. Let's change ocfs2_read_quota_block() to match.
Signed-off-by: Joel Becker <joel.becker@oracle.com>
---
fs/ocfs2/dlmglue.c | 6 ++--
fs/ocfs2/quota.h | 4 +-
fs/ocfs2/quota_global.c | 34 ++++++++++++++----------
fs/ocfs2/quota_local.c | 64 +++++++++++++++++++++++++---------------------
4 files changed, 60 insertions(+), 48 deletions(-)
diff --git a/fs/ocfs2/dlmglue.c b/fs/ocfs2/dlmglue.c
index 058aa86..b1c7591 100644
--- a/fs/ocfs2/dlmglue.c
+++ b/fs/ocfs2/dlmglue.c
@@ -3519,7 +3519,7 @@ static int ocfs2_refresh_qinfo(struct ocfs2_mem_dqinfo *oinfo)
oinfo->dqi_gi.dqi_type);
struct ocfs2_lock_res *lockres = &oinfo->dqi_gqlock;
struct ocfs2_qinfo_lvb *lvb = ocfs2_dlm_lvb(&lockres->l_lksb);
- struct buffer_head *bh;
+ struct buffer_head *bh = NULL;
struct ocfs2_global_disk_dqinfo *gdinfo;
int status = 0;
@@ -3532,8 +3532,8 @@ static int ocfs2_refresh_qinfo(struct ocfs2_mem_dqinfo *oinfo)
oinfo->dqi_gi.dqi_free_entry =
be32_to_cpu(lvb->lvb_free_entry);
} else {
- bh = ocfs2_read_quota_block(oinfo->dqi_gqinode, 0, &status);
- if (!bh) {
+ status = ocfs2_read_quota_block(oinfo->dqi_gqinode, 0, &bh);
+ if (status) {
mlog_errno(status);
goto bail;
}
diff --git a/fs/ocfs2/quota.h b/fs/ocfs2/quota.h
index 84c50a1..abf6941 100644
--- a/fs/ocfs2/quota.h
+++ b/fs/ocfs2/quota.h
@@ -108,8 +108,8 @@ static inline int ocfs2_global_release_dquot(struct dquot *dquot)
int ocfs2_lock_global_qf(struct ocfs2_mem_dqinfo *oinfo, int ex);
void ocfs2_unlock_global_qf(struct ocfs2_mem_dqinfo *oinfo, int ex);
-struct buffer_head *ocfs2_read_quota_block(struct inode *inode,
- int block, int *err);
+int ocfs2_read_quota_block(struct inode *inode, u64 v_block,
+ struct buffer_head **bh);
extern struct dquot_operations ocfs2_quota_operations;
extern struct quota_format_type ocfs2_quota_format;
diff --git a/fs/ocfs2/quota_global.c b/fs/ocfs2/quota_global.c
index 7f561e4..1401edf 100644
--- a/fs/ocfs2/quota_global.c
+++ b/fs/ocfs2/quota_global.c
@@ -85,16 +85,21 @@ struct qtree_fmt_operations ocfs2_global_ops = {
.is_id = ocfs2_global_is_id,
};
-struct buffer_head *ocfs2_read_quota_block(struct inode *inode,
- int block, int *err)
+int ocfs2_read_quota_block(struct inode *inode, u64 v_block,
+ struct buffer_head **bh)
{
- struct buffer_head *tmp = NULL;
+ int rc = 0;
+ struct buffer_head *tmp = *bh;
- *err = ocfs2_read_virt_blocks(inode, block, 1, &tmp, 0, NULL);
- if (*err)
- mlog_errno(*err);
+ rc = ocfs2_read_virt_blocks(inode, v_block, 1, &tmp, 0, NULL);
+ if (rc)
+ mlog_errno(rc);
+
+ /* If ocfs2_read_virt_blocks() got us a new bh, pass it up. */
+ if (!rc && !*bh)
+ *bh = tmp;
- return tmp;
+ return rc;
}
static struct buffer_head *ocfs2_get_quota_block(struct inode *inode,
@@ -141,8 +146,9 @@ ssize_t ocfs2_quota_read(struct super_block *sb, int type, char *data,
toread = len;
while (toread > 0) {
tocopy = min((size_t)(sb->s_blocksize - offset), toread);
- bh = ocfs2_read_quota_block(gqinode, blk, &err);
- if (!bh) {
+ bh = NULL;
+ err = ocfs2_read_quota_block(gqinode, blk, &bh);
+ if (err) {
mlog_errno(err);
return err;
}
@@ -167,7 +173,7 @@ ssize_t ocfs2_quota_write(struct super_block *sb, int type,
int offset = off & (sb->s_blocksize - 1);
sector_t blk = off >> sb->s_blocksize_bits;
int err = 0, new = 0;
- struct buffer_head *bh;
+ struct buffer_head *bh = NULL;
handle_t *handle = journal_current_handle();
if (!handle) {
@@ -198,13 +204,13 @@ ssize_t ocfs2_quota_write(struct super_block *sb, int type,
/* Not rewriting whole block? */
if ((offset || len < sb->s_blocksize - OCFS2_QBLK_RESERVED_SPACE) &&
!new) {
- bh = ocfs2_read_quota_block(gqinode, blk, &err);
- if (!bh) {
+ err = ocfs2_read_quota_block(gqinode, blk, &bh);
+ if (err) {
mlog_errno(err);
return err;
}
err = ocfs2_journal_access(handle, gqinode, bh,
- OCFS2_JOURNAL_ACCESS_WRITE);
+ OCFS2_JOURNAL_ACCESS_WRITE);
} else {
bh = ocfs2_get_quota_block(gqinode, blk, &err);
if (!bh) {
@@ -212,7 +218,7 @@ ssize_t ocfs2_quota_write(struct super_block *sb, int type,
return err;
}
err = ocfs2_journal_access(handle, gqinode, bh,
- OCFS2_JOURNAL_ACCESS_CREATE);
+ OCFS2_JOURNAL_ACCESS_CREATE);
}
if (err < 0) {
brelse(bh);
diff --git a/fs/ocfs2/quota_local.c b/fs/ocfs2/quota_local.c
index 54e8788..c008dd9 100644
--- a/fs/ocfs2/quota_local.c
+++ b/fs/ocfs2/quota_local.c
@@ -139,15 +139,15 @@ static int ocfs2_local_check_quota_file(struct super_block *sb, int type)
unsigned int gversions[MAXQUOTAS] = OCFS2_GLOBAL_QVERSIONS;
unsigned int ino[MAXQUOTAS] = { USER_QUOTA_SYSTEM_INODE,
GROUP_QUOTA_SYSTEM_INODE };
- struct buffer_head *bh;
+ struct buffer_head *bh = NULL;
struct inode *linode = sb_dqopt(sb)->files[type];
struct inode *ginode = NULL;
struct ocfs2_disk_dqheader *dqhead;
int status, ret = 0;
/* First check whether we understand local quota file */
- bh = ocfs2_read_quota_block(linode, 0, &status);
- if (!bh) {
+ status = ocfs2_read_quota_block(linode, 0, &bh);
+ if (status) {
mlog_errno(status);
mlog(ML_ERROR, "failed to read quota file header (type=%d)\n",
type);
@@ -178,8 +178,8 @@ static int ocfs2_local_check_quota_file(struct super_block *sb, int type)
goto out_err;
}
/* Since the header is read only, we don't care about locking */
- bh = ocfs2_read_quota_block(ginode, 0, &status);
- if (!bh) {
+ status = ocfs2_read_quota_block(ginode, 0, &bh);
+ if (status) {
mlog_errno(status);
mlog(ML_ERROR, "failed to read global quota file header "
"(type=%d)\n", type);
@@ -235,10 +235,11 @@ static int ocfs2_load_local_quota_bitmaps(struct inode *inode,
return -ENOMEM;
}
newchunk->qc_num = i;
- newchunk->qc_headerbh = ocfs2_read_quota_block(inode,
+ newchunk->qc_headerbh = NULL;
+ status = ocfs2_read_quota_block(inode,
ol_quota_chunk_block(inode->i_sb, i),
- &status);
- if (!newchunk->qc_headerbh) {
+ &newchunk->qc_headerbh);
+ if (status) {
mlog_errno(status);
kmem_cache_free(ocfs2_qf_chunk_cachep, newchunk);
ocfs2_release_local_quota_bitmaps(head);
@@ -320,10 +321,11 @@ static int ocfs2_recovery_load_quota(struct inode *lqinode,
int status = 0;
for (i = 0; i < chunks; i++) {
- hbh = ocfs2_read_quota_block(lqinode,
- ol_quota_chunk_block(sb, i),
- &status);
- if (!hbh) {
+ hbh = NULL;
+ status = ocfs2_read_quota_block(lqinode,
+ ol_quota_chunk_block(sb, i),
+ &hbh);
+ if (status) {
mlog_errno(status);
break;
}
@@ -392,8 +394,9 @@ struct ocfs2_quota_recovery *ocfs2_begin_quota_recovery(
goto out_put;
}
/* Now read local header */
- bh = ocfs2_read_quota_block(lqinode, 0, &status);
- if (!bh) {
+ bh = NULL;
+ status = ocfs2_read_quota_block(lqinode, 0, &bh);
+ if (status) {
mlog_errno(status);
mlog(ML_ERROR, "failed to read quota file info header "
"(slot=%d type=%d)\n", slot_num, type);
@@ -447,19 +450,21 @@ static int ocfs2_recover_local_quota_file(struct inode *lqinode,
list_for_each_entry_safe(rchunk, next, &(rec->r_list[type]), rc_list) {
chunk = rchunk->rc_chunk;
- hbh = ocfs2_read_quota_block(lqinode,
- ol_quota_chunk_block(sb, chunk),
- &status);
- if (!hbh) {
+ hbh = NULL;
+ status = ocfs2_read_quota_block(lqinode,
+ ol_quota_chunk_block(sb, chunk),
+ &hbh);
+ if (status) {
mlog_errno(status);
break;
}
dchunk = (struct ocfs2_local_disk_chunk *)hbh->b_data;
for_each_bit(bit, rchunk->rc_bitmap, ol_chunk_entries(sb)) {
- qbh = ocfs2_read_quota_block(lqinode,
+ qbh = NULL;
+ status = ocfs2_read_quota_block(lqinode,
ol_dqblk_block(sb, chunk, bit),
- &status);
- if (!qbh) {
+ &qbh);
+ if (status) {
mlog_errno(status);
break;
}
@@ -581,8 +586,9 @@ int ocfs2_finish_quota_recovery(struct ocfs2_super *osb,
goto out_put;
}
/* Now read local header */
- bh = ocfs2_read_quota_block(lqinode, 0, &status);
- if (!bh) {
+ bh = NULL;
+ status = ocfs2_read_quota_block(lqinode, 0, &bh);
+ if (status) {
mlog_errno(status);
mlog(ML_ERROR, "failed to read quota file info header "
"(slot=%d type=%d)\n", slot_num, type);
@@ -676,8 +682,8 @@ static int ocfs2_local_read_info(struct super_block *sb, int type)
locked = 1;
/* Now read local header */
- bh = ocfs2_read_quota_block(lqinode, 0, &status);
- if (!bh) {
+ status = ocfs2_read_quota_block(lqinode, 0, &bh);
+ if (status) {
mlog_errno(status);
mlog(ML_ERROR, "failed to read quota file info header "
"(type=%d)\n", type);
@@ -850,13 +856,13 @@ static int ocfs2_local_write_dquot(struct dquot *dquot)
{
struct super_block *sb = dquot->dq_sb;
struct ocfs2_dquot *od = OCFS2_DQUOT(dquot);
- struct buffer_head *bh;
+ struct buffer_head *bh = NULL;
int status;
- bh = ocfs2_read_quota_block(sb_dqopt(sb)->files[dquot->dq_type],
+ status = ocfs2_read_quota_block(sb_dqopt(sb)->files[dquot->dq_type],
ol_dqblk_file_block(sb, od->dq_local_off),
- &status);
- if (!bh) {
+ &bh);
+ if (status) {
mlog_errno(status);
goto out;
}
--
1.6.0.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Ocfs2-devel] [PATCH 03/10] ocfs2: Fix oops when extending quota files
2008-11-25 14:31 ` [Ocfs2-devel] [PATCH 02/10] ocfs2: Fix ocfs2_read_quota_block() error handling Jan Kara
@ 2008-11-25 14:31 ` Jan Kara
2008-11-25 14:31 ` [Ocfs2-devel] [PATCH 04/10] ocfs2: Make ocfs2_get_quota_block() consistent with ocfs2_read_quota_block() Jan Kara
0 siblings, 1 reply; 11+ messages in thread
From: Jan Kara @ 2008-11-25 14:31 UTC (permalink / raw)
To: ocfs2-devel
We have to mark buffer as uptodate before calling ocfs2_journal_access() and
ocfs2_set_buffer_uptodate() does not do this for us.
Signed-off-by: Jan Kara <jack@suse.cz>
---
fs/ocfs2/quota_global.c | 28 ++++++++++++----------------
1 files changed, 12 insertions(+), 16 deletions(-)
diff --git a/fs/ocfs2/quota_global.c b/fs/ocfs2/quota_global.c
index 1401edf..339c98a 100644
--- a/fs/ocfs2/quota_global.c
+++ b/fs/ocfs2/quota_global.c
@@ -172,7 +172,7 @@ ssize_t ocfs2_quota_write(struct super_block *sb, int type,
struct inode *gqinode = oinfo->dqi_gqinode;
int offset = off & (sb->s_blocksize - 1);
sector_t blk = off >> sb->s_blocksize_bits;
- int err = 0, new = 0;
+ int err = 0, new = 0, ja_type;
struct buffer_head *bh = NULL;
handle_t *handle = journal_current_handle();
@@ -205,32 +205,28 @@ ssize_t ocfs2_quota_write(struct super_block *sb, int type,
if ((offset || len < sb->s_blocksize - OCFS2_QBLK_RESERVED_SPACE) &&
!new) {
err = ocfs2_read_quota_block(gqinode, blk, &bh);
- if (err) {
- mlog_errno(err);
- return err;
- }
- err = ocfs2_journal_access(handle, gqinode, bh,
- OCFS2_JOURNAL_ACCESS_WRITE);
+ ja_type = OCFS2_JOURNAL_ACCESS_WRITE;
} else {
bh = ocfs2_get_quota_block(gqinode, blk, &err);
- if (!bh) {
- mlog_errno(err);
- return err;
- }
- err = ocfs2_journal_access(handle, gqinode, bh,
- OCFS2_JOURNAL_ACCESS_CREATE);
+ ja_type = OCFS2_JOURNAL_ACCESS_CREATE;
}
- if (err < 0) {
- brelse(bh);
- goto out;
+ if (err) {
+ mlog_errno(err);
+ return err;
}
lock_buffer(bh);
if (new)
memset(bh->b_data, 0, sb->s_blocksize);
memcpy(bh->b_data + offset, data, len);
flush_dcache_page(bh->b_page);
+ set_buffer_uptodate(bh);
unlock_buffer(bh);
ocfs2_set_buffer_uptodate(gqinode, bh);
+ err = ocfs2_journal_access(handle, gqinode, bh, ja_type);
+ if (err < 0) {
+ brelse(bh);
+ goto out;
+ }
err = ocfs2_journal_dirty(handle, bh);
brelse(bh);
if (err < 0)
--
1.6.0.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Ocfs2-devel] [PATCH 04/10] ocfs2: Make ocfs2_get_quota_block() consistent with ocfs2_read_quota_block()
2008-11-25 14:31 ` [Ocfs2-devel] [PATCH 03/10] ocfs2: Fix oops when extending quota files Jan Kara
@ 2008-11-25 14:31 ` Jan Kara
2008-11-25 14:31 ` [Ocfs2-devel] [PATCH 05/10] ocfs2: Fix build warnings (64-bit types vs long long) Jan Kara
0 siblings, 1 reply; 11+ messages in thread
From: Jan Kara @ 2008-11-25 14:31 UTC (permalink / raw)
To: ocfs2-devel
Make function return error status and not buffer pointer so that it's
consistent with ocfs2_read_quota_block().
Signed-off-by: Jan Kara <jack@suse.cz>
---
fs/ocfs2/quota_global.c | 27 +++++++++++++--------------
1 files changed, 13 insertions(+), 14 deletions(-)
diff --git a/fs/ocfs2/quota_global.c b/fs/ocfs2/quota_global.c
index 339c98a..27a8123 100644
--- a/fs/ocfs2/quota_global.c
+++ b/fs/ocfs2/quota_global.c
@@ -102,26 +102,25 @@ int ocfs2_read_quota_block(struct inode *inode, u64 v_block,
return rc;
}
-static struct buffer_head *ocfs2_get_quota_block(struct inode *inode,
- int block, int *err)
+static int ocfs2_get_quota_block(struct inode *inode, int block,
+ struct buffer_head **bh)
{
u64 pblock, pcount;
- struct buffer_head *bh;
+ int err;
down_read(&OCFS2_I(inode)->ip_alloc_sem);
- *err = ocfs2_extent_map_get_blocks(inode, block, &pblock, &pcount,
- NULL);
+ err = ocfs2_extent_map_get_blocks(inode, block, &pblock, &pcount, NULL);
up_read(&OCFS2_I(inode)->ip_alloc_sem);
- if (*err) {
- mlog_errno(*err);
- return NULL;
+ if (err) {
+ mlog_errno(err);
+ return err;
}
- bh = sb_getblk(inode->i_sb, pblock);
- if (!bh) {
- *err = -EIO;
- mlog_errno(*err);
+ *bh = sb_getblk(inode->i_sb, pblock);
+ if (!*bh) {
+ err = -EIO;
+ mlog_errno(err);
}
- return bh;
+ return err;;
}
/* Read data from global quotafile - avoid pagecache and such because we cannot
@@ -207,7 +206,7 @@ ssize_t ocfs2_quota_write(struct super_block *sb, int type,
err = ocfs2_read_quota_block(gqinode, blk, &bh);
ja_type = OCFS2_JOURNAL_ACCESS_WRITE;
} else {
- bh = ocfs2_get_quota_block(gqinode, blk, &err);
+ err = ocfs2_get_quota_block(gqinode, blk, &bh);
ja_type = OCFS2_JOURNAL_ACCESS_CREATE;
}
if (err) {
--
1.6.0.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Ocfs2-devel] [PATCH 05/10] ocfs2: Fix build warnings (64-bit types vs long long)
2008-11-25 14:31 ` [Ocfs2-devel] [PATCH 04/10] ocfs2: Make ocfs2_get_quota_block() consistent with ocfs2_read_quota_block() Jan Kara
@ 2008-11-25 14:31 ` Jan Kara
2008-11-25 14:31 ` [Ocfs2-devel] [PATCH 06/10] quota: Unexport dqblk_v1.h and dqblk_v2.h Jan Kara
0 siblings, 1 reply; 11+ messages in thread
From: Jan Kara @ 2008-11-25 14:31 UTC (permalink / raw)
To: ocfs2-devel
fs/ocfs2/quota_local.c: In function 'olq_set_dquot':
fs/ocfs2/quota_local.c:844: warning: format '%lld' expects type 'long long int', but argument 7 has type '__le64'
fs/ocfs2/quota_local.c:844: warning: format '%lld' expects type 'long long int', but argument 8 has type '__le64'
fs/ocfs2/quota_local.c:844: warning: format '%lld' expects type 'long long int', but argument 7 has type '__le64'
fs/ocfs2/quota_local.c:844: warning: format '%lld' expects type 'long long int', but argument 8 has type '__le64'
fs/ocfs2/quota_local.c:844: warning: format '%lld' expects type 'long long int', but argument 7 has type '__le64'
fs/ocfs2/quota_local.c:844: warning: format '%lld' expects type 'long long int', but argument 8 has type '__le64'
fs/ocfs2/quota_global.c: In function '__ocfs2_sync_dquot':
fs/ocfs2/quota_global.c:457: warning: format '%lld' expects type 'long long int', but argument 8 has type 's64'
fs/ocfs2/quota_global.c:457: warning: format '%lld' expects type 'long long int', but argument 10 has type 's64'
fs/ocfs2/quota_global.c:457: warning: format '%lld' expects type 'long long int', but argument 8 has type 's64'
fs/ocfs2/quota_global.c:457: warning: format '%lld' expects type 'long long int', but argument 10 has type 's64'
fs/ocfs2/quota_global.c:457: warning: format '%lld' expects type 'long long int', but argument 8 has type 's64'
fs/ocfs2/quota_global.c:457: warning: format '%lld' expects type 'long long int', but argument 10 has type 's64'
Signed-off-by: Jan Kara <jack@suse.cz>
---
fs/ocfs2/quota_global.c | 6 +++---
fs/ocfs2/quota_local.c | 3 ++-
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/fs/ocfs2/quota_global.c b/fs/ocfs2/quota_global.c
index 27a8123..b0eae79 100644
--- a/fs/ocfs2/quota_global.c
+++ b/fs/ocfs2/quota_global.c
@@ -455,9 +455,9 @@ int __ocfs2_sync_dquot(struct dquot *dquot, int freeing)
olditime = dquot->dq_dqb.dqb_itime;
oldbtime = dquot->dq_dqb.dqb_btime;
ocfs2_global_disk2memdqb(dquot, &dqblk);
- mlog(0, "Syncing global dquot %d space %lld+%lld, inodes %lld+%lld\n",
- dquot->dq_id, dquot->dq_dqb.dqb_curspace, spacechange,
- dquot->dq_dqb.dqb_curinodes, inodechange);
+ mlog(0, "Syncing global dquot %u space %lld+%lld, inodes %lld+%lld\n",
+ dquot->dq_id, dquot->dq_dqb.dqb_curspace, (long long)spacechange,
+ dquot->dq_dqb.dqb_curinodes, (long long)inodechange);
if (!test_bit(DQ_LASTSET_B + QIF_SPACE_B, &dquot->dq_flags))
dquot->dq_dqb.dqb_curspace += spacechange;
if (!test_bit(DQ_LASTSET_B + QIF_INODES_B, &dquot->dq_flags))
diff --git a/fs/ocfs2/quota_local.c b/fs/ocfs2/quota_local.c
index c008dd9..9b22643 100644
--- a/fs/ocfs2/quota_local.c
+++ b/fs/ocfs2/quota_local.c
@@ -848,7 +848,8 @@ static void olq_set_dquot(struct buffer_head *bh, void *private)
od->dq_originodes);
spin_unlock(&dq_data_lock);
mlog(0, "Writing local dquot %u space %lld inodes %lld\n",
- od->dq_dquot.dq_id, dqblk->dqb_spacemod, dqblk->dqb_inodemod);
+ od->dq_dquot.dq_id, (long long)le64_to_cpu(dqblk->dqb_spacemod),
+ (long long)le64_to_cpu(dqblk->dqb_inodemod));
}
/* Write dquot to local quota file */
--
1.6.0.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Ocfs2-devel] [PATCH 06/10] quota: Unexport dqblk_v1.h and dqblk_v2.h
2008-11-25 14:31 ` [Ocfs2-devel] [PATCH 05/10] ocfs2: Fix build warnings (64-bit types vs long long) Jan Kara
@ 2008-11-25 14:31 ` Jan Kara
2008-11-25 14:31 ` [Ocfs2-devel] [PATCH 07/10] quota: Export dquot_alloc() and dquot_destroy() functions Jan Kara
0 siblings, 1 reply; 11+ messages in thread
From: Jan Kara @ 2008-11-25 14:31 UTC (permalink / raw)
To: ocfs2-devel
Unexport header files dqblk_v[12].h since except for quota format ID they
don't contain information userspace should be interested in. Move ID
definitions to quota.h.
Signed-off-by: Jan Kara <jack@suse.cz>
---
include/linux/Kbuild | 2 --
include/linux/dqblk_v1.h | 3 ---
include/linux/dqblk_v2.h | 3 ---
include/linux/quota.h | 4 ++++
4 files changed, 4 insertions(+), 8 deletions(-)
diff --git a/include/linux/Kbuild b/include/linux/Kbuild
index 0fd2da3..4c32642 100644
--- a/include/linux/Kbuild
+++ b/include/linux/Kbuild
@@ -56,8 +56,6 @@ header-y += dlm_device.h
header-y += dlm_netlink.h
header-y += dm-ioctl.h
header-y += dn.h
-header-y += dqblk_v1.h
-header-y += dqblk_v2.h
header-y += dqblk_xfs.h
header-y += efs_fs_sb.h
header-y += elf-fdpic.h
diff --git a/include/linux/dqblk_v1.h b/include/linux/dqblk_v1.h
index 9cea901..3713a72 100644
--- a/include/linux/dqblk_v1.h
+++ b/include/linux/dqblk_v1.h
@@ -5,9 +5,6 @@
#ifndef _LINUX_DQBLK_V1_H
#define _LINUX_DQBLK_V1_H
-/* Id of quota format */
-#define QFMT_VFS_OLD 1
-
/* Root squash turned on */
#define V1_DQF_RSQUASH 1
diff --git a/include/linux/dqblk_v2.h b/include/linux/dqblk_v2.h
index ff8af1b..18000a5 100644
--- a/include/linux/dqblk_v2.h
+++ b/include/linux/dqblk_v2.h
@@ -7,9 +7,6 @@
#include <linux/dqblk_qtree.h>
-/* Id number of quota format */
-#define QFMT_VFS_V0 2
-
/* Numbers of blocks needed for updates */
#define V2_INIT_ALLOC QTREE_INIT_ALLOC
#define V2_INIT_REWRITE QTREE_INIT_REWRITE
diff --git a/include/linux/quota.h b/include/linux/quota.h
index ec82beb..d72d5d8 100644
--- a/include/linux/quota.h
+++ b/include/linux/quota.h
@@ -70,6 +70,10 @@
#define Q_GETQUOTA 0x800007 /* get user quota structure */
#define Q_SETQUOTA 0x800008 /* set user quota structure */
+/* Quota format type IDs */
+#define QFMT_VFS_OLD 1
+#define QFMT_VFS_V0 2
+
/* Size of block in which space limits are passed through the quota
* interface */
#define QIF_DQBLKSIZE_BITS 10
--
1.6.0.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Ocfs2-devel] [PATCH 07/10] quota: Export dquot_alloc() and dquot_destroy() functions
2008-11-25 14:31 ` [Ocfs2-devel] [PATCH 06/10] quota: Unexport dqblk_v1.h and dqblk_v2.h Jan Kara
@ 2008-11-25 14:31 ` Jan Kara
2008-11-25 14:31 ` [Ocfs2-devel] [PATCH 08/10] reiserfs: Add default allocation routines for quota structures Jan Kara
0 siblings, 1 reply; 11+ messages in thread
From: Jan Kara @ 2008-11-25 14:31 UTC (permalink / raw)
To: ocfs2-devel
These are default functions for creating and destroying quota structures
and they should be used from filesystems.
Signed-off-by: Jan Kara <jack@suse.cz>
---
fs/dquot.c | 6 ++++--
include/linux/quotaops.h | 2 ++
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/fs/dquot.c b/fs/dquot.c
index 6f7df91..c724586 100644
--- a/fs/dquot.c
+++ b/fs/dquot.c
@@ -413,10 +413,11 @@ out_dqlock:
return ret;
}
-static void dquot_destroy(struct dquot *dquot)
+void dquot_destroy(struct dquot *dquot)
{
kmem_cache_free(dquot_cachep, dquot);
}
+EXPORT_SYMBOL(dquot_destroy);
static inline void do_destroy_dquot(struct dquot *dquot)
{
@@ -668,10 +669,11 @@ we_slept:
spin_unlock(&dq_list_lock);
}
-static struct dquot *dquot_alloc(struct super_block *sb, int type)
+struct dquot *dquot_alloc(struct super_block *sb, int type)
{
return kmem_cache_zalloc(dquot_cachep, GFP_NOFS);
}
+EXPORT_SYMBOL(dquot_alloc);
static struct dquot *get_empty_dquot(struct super_block *sb, int type)
{
diff --git a/include/linux/quotaops.h b/include/linux/quotaops.h
index f491394..21b781a 100644
--- a/include/linux/quotaops.h
+++ b/include/linux/quotaops.h
@@ -31,6 +31,8 @@ int dquot_is_cached(struct super_block *sb, unsigned int id, int type);
int dquot_scan_active(struct super_block *sb,
int (*fn)(struct dquot *dquot, unsigned long priv),
unsigned long priv);
+struct dquot *dquot_alloc(struct super_block *sb, int type);
+void dquot_destroy(struct dquot *dquot);
int dquot_alloc_space(struct inode *inode, qsize_t number, int prealloc);
int dquot_alloc_inode(const struct inode *inode, qsize_t number);
--
1.6.0.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Ocfs2-devel] [PATCH 08/10] reiserfs: Add default allocation routines for quota structures
2008-11-25 14:31 ` [Ocfs2-devel] [PATCH 07/10] quota: Export dquot_alloc() and dquot_destroy() functions Jan Kara
@ 2008-11-25 14:31 ` Jan Kara
2008-11-25 14:31 ` [Ocfs2-devel] [PATCH 09/10] ext3: " Jan Kara
0 siblings, 1 reply; 11+ messages in thread
From: Jan Kara @ 2008-11-25 14:31 UTC (permalink / raw)
To: ocfs2-devel
Signed-off-by: Jan Kara <jack@suse.cz>
---
fs/reiserfs/super.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/fs/reiserfs/super.c b/fs/reiserfs/super.c
index a9b393a..c55651f 100644
--- a/fs/reiserfs/super.c
+++ b/fs/reiserfs/super.c
@@ -649,6 +649,8 @@ static struct dquot_operations reiserfs_quota_operations = {
.release_dquot = reiserfs_release_dquot,
.mark_dirty = reiserfs_mark_dquot_dirty,
.write_info = reiserfs_write_info,
+ .alloc_dquot = dquot_alloc,
+ .destroy_dquot = dquot_destroy,
};
static struct quotactl_ops reiserfs_qctl_operations = {
--
1.6.0.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Ocfs2-devel] [PATCH 09/10] ext3: Add default allocation routines for quota structures
2008-11-25 14:31 ` [Ocfs2-devel] [PATCH 08/10] reiserfs: Add default allocation routines for quota structures Jan Kara
@ 2008-11-25 14:31 ` Jan Kara
2008-11-25 14:31 ` [Ocfs2-devel] [PATCH 10/10] ext4: " Jan Kara
0 siblings, 1 reply; 11+ messages in thread
From: Jan Kara @ 2008-11-25 14:31 UTC (permalink / raw)
To: ocfs2-devel
Signed-off-by: Jan Kara <jack@suse.cz>
---
fs/ext3/super.c | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/fs/ext3/super.c b/fs/ext3/super.c
index fee8705..abed9f9 100644
--- a/fs/ext3/super.c
+++ b/fs/ext3/super.c
@@ -713,7 +713,9 @@ static struct dquot_operations ext3_quota_operations = {
.acquire_dquot = ext3_acquire_dquot,
.release_dquot = ext3_release_dquot,
.mark_dirty = ext3_mark_dquot_dirty,
- .write_info = ext3_write_info
+ .write_info = ext3_write_info,
+ .alloc_dquot = dquot_alloc,
+ .destroy_dquot = dquot_destroy,
};
static struct quotactl_ops ext3_qctl_operations = {
--
1.6.0.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Ocfs2-devel] [PATCH 10/10] ext4: Add default allocation routines for quota structures
2008-11-25 14:31 ` [Ocfs2-devel] [PATCH 09/10] ext3: " Jan Kara
@ 2008-11-25 14:31 ` Jan Kara
0 siblings, 0 replies; 11+ messages in thread
From: Jan Kara @ 2008-11-25 14:31 UTC (permalink / raw)
To: ocfs2-devel
Signed-off-by: Jan Kara <jack@suse.cz>
---
fs/ext4/super.c | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 9e5a717..e6a5d74 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -803,7 +803,9 @@ static struct dquot_operations ext4_quota_operations = {
.acquire_dquot = ext4_acquire_dquot,
.release_dquot = ext4_release_dquot,
.mark_dirty = ext4_mark_dquot_dirty,
- .write_info = ext4_write_info
+ .write_info = ext4_write_info,
+ .alloc_dquot = dquot_alloc,
+ .destroy_dquot = dquot_destroy,
};
static struct quotactl_ops ext4_qctl_operations = {
--
1.6.0.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Ocfs2-devel] [PATCH 01/10] ocfs2: Add missing initialization
2008-11-25 14:31 [Ocfs2-devel] [PATCH 01/10] ocfs2: Add missing initialization Jan Kara
2008-11-25 14:31 ` [Ocfs2-devel] [PATCH 02/10] ocfs2: Fix ocfs2_read_quota_block() error handling Jan Kara
@ 2008-11-26 1:41 ` Tao Ma
1 sibling, 0 replies; 11+ messages in thread
From: Tao Ma @ 2008-11-26 1:41 UTC (permalink / raw)
To: ocfs2-devel
Hi Jan,
I have already found this and generate a patch for it.
http://oss.oracle.com/pipermail/ocfs2-devel/2008-November/003413.html
but since Mark hasn't push it to his merge_window, I think either of the
patch is OK.
Regards,
Tao
Jan Kara wrote:
> Add missing variable initialization to ocfs2_dquot_drop_slow().
>
> Signed-off-by: Jan Kara <jack@suse.cz>
> ---
> fs/ocfs2/quota_global.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/fs/ocfs2/quota_global.c b/fs/ocfs2/quota_global.c
> index d2a5bfa..7f561e4 100644
> --- a/fs/ocfs2/quota_global.c
> +++ b/fs/ocfs2/quota_global.c
> @@ -873,7 +873,7 @@ out:
>
> static int ocfs2_dquot_drop_slow(struct inode *inode)
> {
> - int status;
> + int status = 0;
> int cnt;
> int got_lock[MAXQUOTAS] = {0, 0};
> handle_t *handle;
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2008-11-26 1:41 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-11-25 14:31 [Ocfs2-devel] [PATCH 01/10] ocfs2: Add missing initialization Jan Kara
2008-11-25 14:31 ` [Ocfs2-devel] [PATCH 02/10] ocfs2: Fix ocfs2_read_quota_block() error handling Jan Kara
2008-11-25 14:31 ` [Ocfs2-devel] [PATCH 03/10] ocfs2: Fix oops when extending quota files Jan Kara
2008-11-25 14:31 ` [Ocfs2-devel] [PATCH 04/10] ocfs2: Make ocfs2_get_quota_block() consistent with ocfs2_read_quota_block() Jan Kara
2008-11-25 14:31 ` [Ocfs2-devel] [PATCH 05/10] ocfs2: Fix build warnings (64-bit types vs long long) Jan Kara
2008-11-25 14:31 ` [Ocfs2-devel] [PATCH 06/10] quota: Unexport dqblk_v1.h and dqblk_v2.h Jan Kara
2008-11-25 14:31 ` [Ocfs2-devel] [PATCH 07/10] quota: Export dquot_alloc() and dquot_destroy() functions Jan Kara
2008-11-25 14:31 ` [Ocfs2-devel] [PATCH 08/10] reiserfs: Add default allocation routines for quota structures Jan Kara
2008-11-25 14:31 ` [Ocfs2-devel] [PATCH 09/10] ext3: " Jan Kara
2008-11-25 14:31 ` [Ocfs2-devel] [PATCH 10/10] ext4: " Jan Kara
2008-11-26 1:41 ` [Ocfs2-devel] [PATCH 01/10] ocfs2: Add missing initialization Tao Ma
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.