UBIFS: share the next_log_lnum helper
We'll need to use the 'next_log_lnum()' helper function from log.c in the fixup code, so let's move it to misc.h. IOW, this is a preparation to the following free space fixup changes. Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
This commit is contained in:
parent
91c66083fc
commit
e11602ea3e
|
@ -99,20 +99,6 @@ struct ubifs_wbuf *ubifs_get_wbuf(struct ubifs_info *c, int lnum)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* next_log_lnum - switch to the next log LEB.
|
|
||||||
* @c: UBIFS file-system description object
|
|
||||||
* @lnum: current log LEB
|
|
||||||
*/
|
|
||||||
static inline int next_log_lnum(const struct ubifs_info *c, int lnum)
|
|
||||||
{
|
|
||||||
lnum += 1;
|
|
||||||
if (lnum > c->log_last)
|
|
||||||
lnum = UBIFS_LOG_LNUM;
|
|
||||||
|
|
||||||
return lnum;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* empty_log_bytes - calculate amount of empty space in the log.
|
* empty_log_bytes - calculate amount of empty space in the log.
|
||||||
* @c: UBIFS file-system description object
|
* @c: UBIFS file-system description object
|
||||||
|
@ -257,7 +243,7 @@ int ubifs_add_bud_to_log(struct ubifs_info *c, int jhead, int lnum, int offs)
|
||||||
ref->jhead = cpu_to_le32(jhead);
|
ref->jhead = cpu_to_le32(jhead);
|
||||||
|
|
||||||
if (c->lhead_offs > c->leb_size - c->ref_node_alsz) {
|
if (c->lhead_offs > c->leb_size - c->ref_node_alsz) {
|
||||||
c->lhead_lnum = next_log_lnum(c, c->lhead_lnum);
|
c->lhead_lnum = ubifs_next_log_lnum(c, c->lhead_lnum);
|
||||||
c->lhead_offs = 0;
|
c->lhead_offs = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -425,7 +411,7 @@ int ubifs_log_start_commit(struct ubifs_info *c, int *ltail_lnum)
|
||||||
|
|
||||||
/* Switch to the next log LEB */
|
/* Switch to the next log LEB */
|
||||||
if (c->lhead_offs) {
|
if (c->lhead_offs) {
|
||||||
c->lhead_lnum = next_log_lnum(c, c->lhead_lnum);
|
c->lhead_lnum = ubifs_next_log_lnum(c, c->lhead_lnum);
|
||||||
c->lhead_offs = 0;
|
c->lhead_offs = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -446,7 +432,7 @@ int ubifs_log_start_commit(struct ubifs_info *c, int *ltail_lnum)
|
||||||
|
|
||||||
c->lhead_offs += len;
|
c->lhead_offs += len;
|
||||||
if (c->lhead_offs == c->leb_size) {
|
if (c->lhead_offs == c->leb_size) {
|
||||||
c->lhead_lnum = next_log_lnum(c, c->lhead_lnum);
|
c->lhead_lnum = ubifs_next_log_lnum(c, c->lhead_lnum);
|
||||||
c->lhead_offs = 0;
|
c->lhead_offs = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -533,7 +519,7 @@ int ubifs_log_post_commit(struct ubifs_info *c, int old_ltail_lnum)
|
||||||
}
|
}
|
||||||
mutex_lock(&c->log_mutex);
|
mutex_lock(&c->log_mutex);
|
||||||
for (lnum = old_ltail_lnum; lnum != c->ltail_lnum;
|
for (lnum = old_ltail_lnum; lnum != c->ltail_lnum;
|
||||||
lnum = next_log_lnum(c, lnum)) {
|
lnum = ubifs_next_log_lnum(c, lnum)) {
|
||||||
dbg_log("unmap log LEB %d", lnum);
|
dbg_log("unmap log LEB %d", lnum);
|
||||||
err = ubifs_leb_unmap(c, lnum);
|
err = ubifs_leb_unmap(c, lnum);
|
||||||
if (err)
|
if (err)
|
||||||
|
@ -642,7 +628,7 @@ static int add_node(struct ubifs_info *c, void *buf, int *lnum, int *offs,
|
||||||
err = ubifs_leb_change(c, *lnum, buf, sz, UBI_SHORTTERM);
|
err = ubifs_leb_change(c, *lnum, buf, sz, UBI_SHORTTERM);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
*lnum = next_log_lnum(c, *lnum);
|
*lnum = ubifs_next_log_lnum(c, *lnum);
|
||||||
*offs = 0;
|
*offs = 0;
|
||||||
}
|
}
|
||||||
memcpy(buf + *offs, node, len);
|
memcpy(buf + *offs, node, len);
|
||||||
|
@ -712,7 +698,7 @@ int ubifs_consolidate_log(struct ubifs_info *c)
|
||||||
ubifs_scan_destroy(sleb);
|
ubifs_scan_destroy(sleb);
|
||||||
if (lnum == c->lhead_lnum)
|
if (lnum == c->lhead_lnum)
|
||||||
break;
|
break;
|
||||||
lnum = next_log_lnum(c, lnum);
|
lnum = ubifs_next_log_lnum(c, lnum);
|
||||||
}
|
}
|
||||||
if (offs) {
|
if (offs) {
|
||||||
int sz = ALIGN(offs, c->min_io_size);
|
int sz = ALIGN(offs, c->min_io_size);
|
||||||
|
@ -732,7 +718,7 @@ int ubifs_consolidate_log(struct ubifs_info *c)
|
||||||
/* Unmap remaining LEBs */
|
/* Unmap remaining LEBs */
|
||||||
lnum = write_lnum;
|
lnum = write_lnum;
|
||||||
do {
|
do {
|
||||||
lnum = next_log_lnum(c, lnum);
|
lnum = ubifs_next_log_lnum(c, lnum);
|
||||||
err = ubifs_leb_unmap(c, lnum);
|
err = ubifs_leb_unmap(c, lnum);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
|
@ -340,4 +340,21 @@ static inline void ubifs_release_lprops(struct ubifs_info *c)
|
||||||
mutex_unlock(&c->lp_mutex);
|
mutex_unlock(&c->lp_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ubifs_next_log_lnum - switch to the next log LEB.
|
||||||
|
* @c: UBIFS file-system description object
|
||||||
|
* @lnum: current log LEB
|
||||||
|
*
|
||||||
|
* This helper function returns the log LEB number which goes next after LEB
|
||||||
|
* 'lnum'.
|
||||||
|
*/
|
||||||
|
static inline int ubifs_next_log_lnum(const struct ubifs_info *c, int lnum)
|
||||||
|
{
|
||||||
|
lnum += 1;
|
||||||
|
if (lnum > c->log_last)
|
||||||
|
lnum = UBIFS_LOG_LNUM;
|
||||||
|
|
||||||
|
return lnum;
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* __UBIFS_MISC_H__ */
|
#endif /* __UBIFS_MISC_H__ */
|
||||||
|
|
Loading…
Reference in New Issue